Skip to main content

數位影像色彩空間簡介

數位影像色彩空間簡介

數位影像色彩空間簡介

傳統分析方式是將彩色影像轉為灰階影像,而灰階影像通常是亮度資訊或是彩色信號的平均資訊,這樣的原因很可能是早期電腦硬體計算能力不足,或是研究為求問題單純化所致,而分析基礎在於數學,數位影像處理技術發展已經很久了,可以追朔到1920年代初(1921年,第一個應用是在出版報業,巴特蘭電纜傳輸一幅圖片到大西洋對岸的時間從一個星期減少到3小時,引用來源:繆紹綱編譯之數位影像處理,如圖1.1-1)。

image.png
圖 1.1‑1

至今每年有數以千計的論文發表,解決許多問題。電腦視覺基本上就是模擬人類的智慧,人眼具有成像的能力,將光信號轉換成腦神經可以處理的資訊,再藉由人腦去分析判斷。照相機或攝影機就可以代替人類的眼睛,並將光學信號轉換成電氣信號,交由電腦演算處理。所以我們必須了解電腦『看』到甚麼,才能設計演算法來取出我們所需要的資料。感測器(Sensor)可將光源分為紅(Red)、綠(Green)、藍(Blue),而每一個通道可擁有0~255範圍資料表示,換句話說就是有256個等級可描述強度。這三個顏色就稱為三原色,而RGB就順理成章變成一種影像資料的格式,這種資料的格式也可稱為24bit影像。所以電腦看到一個人臉的時候,顯示的資料如下,如圖1.1-2:

image.png
圖 1.1‑2

RGB

image.png

英國科學家牛頓(1643~1727年)透過太陽光射入三菱鏡的實驗,發現三項事實。首先,白色的太陽光可以分解為七色光,分別是紅、橙、黃、綠、青、藍、紫。其次,七色光在射入三菱鏡可得白光。最後,單色光是無法再分割出其他顏色的光。光是電磁波的一種,人眼可見的光,稱做可見光。不可見光有真空紫外線、紫外線、紅外線、近紅外線、遠紅外線。人眼之所以可以見到色彩,其原因是反射率。物體之所以有色彩,是因為該物體只會反射該顏色的光。
國際照明委員會(CIE)於1931年採用R(red)、G(green)、B(blue)制定標準配色函數,在配色方程式中,假設[R]、[G]、[B]是單位向量,就可成為三維空間的向量運算。但由於三維表示並不方便,因為某個顏色[F]用[R]、[G]、[B]的混合量R、G、B為分量做成的RGB色彩空間的向量來表示,並不方便。因此經常用向量[F]和單位平面R+G+B=1的交點(r, g, b)來表示。

image.png

由此可知r+g+b=1,因此使用(r, g, b)的其中兩項就可以表示某色[F]。
藉由以上得知rg色度圖就可以表示某色[F],但有些顏色值在數學上是可行,實際上卻是不存在,例如當r=1.0, g=1.0,這就叫做虛色。而實際存在的顏色叫做實色。在RGB轉XYZ實需要虛色的觀念。當人工計算色度時,在RGB的配色函數會帶有負值,負值會有困擾。因此,CIE在1931年制定RGB色度系統。同年,為了使配色函數皆是正值,又制定了XYZ色度系統,或稱CIE 1931標準色度系統。與RGB可互相轉換,公式如下。

RGB轉XYZ

image.png

XYZ轉RGB

image.png

CMYK

image.png

RGB可稱為混色系統,因為這三種光線的混合幾乎可以表達所有的顏色。顏料的特性相反,顏料吸收光線,而不增強光線。所以使用顏料作畫或印刷時,RGB將不再適用,只要將三原色進行補色就可以很好的解決問題。紅色、綠色、藍色的補色剛好是青、洋紅、黃色。因為黃色顏料會吸收藍色光,青色顏料會吸收紅色光,因此最後只剩下綠色光的反射。這就是黃色顏料加青色顏料會變成綠色的道理。CMY(Cyan, Magenta, Yellow) 顏色空間常應用於印刷,印刷透過三原色油墨不同網點面機率來產生各種顏色。通常等量的CMY顏色可以組合成黑色,但是不夠純,因此增加黑色顏料。變成CMYK色。

從CMYK轉換到RGB
tCMYK = {C,M,Y,K}
轉換成三分色
tCMY = {C',M',Y'} = {C(1 - K) + K,M(1 - K) + K,Y(1 - K) + K}
然後再轉換成RGB
tRGB = {R,G,B} = {1 - C',1 - M',1 - Y'}
同理結果如下:
tRGB = {1 - (C(1 - K) + K),1 - (M(1 - K) + K),1 - (Y(1 - K) + K)} = {1 - C(1 - K) - K,1 - M(1 - K) - K,1 - Y(1 - K) - K}
RGB轉換到CMYK
tRGB = {R,G,B}
先轉換成三分色
tCMY = {C',M',Y'} = {1 - R,1 - G,1 - B}
if min{C',M',Y'} = 1
tCMYK = {0,0,0,1}
再轉換成四分色
K = min{C',M',Y'}

image.png

HSV

image.png

RGB和CMYK都是機器可見的顏色,HSV(Hue, Saturation, Value)色相、飽和度、純度更為準確的反應人類視覺系統對色彩的理解方式。HSV也稱為HSB(Hue, Saturation, Brightness)。對於圓柱座標系統的一個圓錐形子集,V表示色彩明亮的程度,H表示色彩的資訊,飽和度S為一比例值。

HSL

image.png

引用https://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4 維基百科的圖片
HSL(Hue, Saturation, Lightness)色彩空間,也同樣是從人類的視覺系統開發出來的,它與HSV很相似。HIS用色調(Hue)、飽和度(Saturation)和強度(Intensity)來描述色彩。色調是描述純色的屬性。飽和度的作用在於給出一種純色被白光稀釋的程度描述。強度是顏色的亮度(Luminance)或者光亮度(Lightness)。取值範圍從0(黑)到100%最亮。HSV與HSL唯一不同的地方是B和L兩個分量存在的區別,HSL飽和度最高的光亮度L定義為0.5,HSV顏色飽和度最高的明度值為B是1.0。亮度L,增加L可以使顏色變亮,L=0時,為黑色,L=1時,為白色。灰階沿著L軸分布,純色色彩均位於L=0.5、S=1的平面上。

Lab

image.png

引用https://zh.wikipedia.org/wiki/Lab%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4 維基百科
Lab色彩空間是由CIE制定的另外一種色彩模型,它是應用最廣泛的色彩模型之一,CIE於1976年開發這套色彩模型,Lab色彩模型用3組數值表示色彩,亮度數值L,其值0到100。紅色和綠色兩種原色之間的變化域a,a取正數時代表紅色,取負數時則代表綠色。其數值範圍為-120到+120。B表示黃色到藍色兩種原色之間的變化區域,b取正數時表示黃色,取負數時表示藍色。其數值從-120到+120。

YUV

image.png

引用https://zh.wikipedia.org/wiki/YUV維基百科
YUV色彩系統是為了要讓CRT彩色電視信號能夠繼續使用黑白電視傳播系統來傳送信號,而研發出來節省頻寬的方法。Y代表著亮度向量,U和V代表著色差向量,RGB轉換為YUV的公式如下:
Y=0.299R+0.587G+0.114B
U=0.493(B-Y)=0.439(-0.29R-0.587G+0.886B)
V=0.877(0.701R-0.587G-0.114B)

YUV與RGB關係如下:
image.png

RGB與YUV關係如下:
image.png

雖說是有理論公式,但實際上處理的都是浮點數,效率上非常的糟糕,因此為了將其正規化,可以將RGB和YUV都在0到255之間轉換。所以可以採用下列的程式:
R = Y + (1.4075 (V - 128))
G = Y - (0.3455
(U - 128) - (0.7169 (V - 128))
B = Y + (1.7790
(U - 128)
Y = R .299 + G .587 + B .114
U = R
-.169 + G -.332 + B .500 + 128
V = R .500 + G -.419 + B * -.0813 + 128

YIQ

Y代表亮度,I、Q代表色差向量。而如同YUV一樣都是彩色電視的色彩系統,YIQ與RGB之間的關係如下:

image.png

RGB與YIQ之間的關係如下:

image.png

YCbCr

YCbCr色彩系統被JPEG所使用,因此要研究JPEG數位影像處理就必須了解甚麼是YCbCr色彩系統。這是由YUV色彩系統所開發出來的另外一種色彩系統,其中Y指的是亮度,而Cb和Cr是將U與Y做些調整而成。

YCbCr與RGB的關係如下:

image.png

RGB與YCbCr關係如下:

image.png

Popular posts from this blog

Python 日期與時間的處理

Visual Basic 6.0 (VB6) 程式語言案例學習 (10. 條碼列印程式)

寫作:波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

Python 日期與時間的處理

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (10. 條碼列印程式)

Image

寫作:波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

Image

數位影像處理:最佳化處理策略之快速消除扭曲演算法

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (04. 人事考勤管理系統)

Image

用10種程式語言做影像二值化(Image binarization)

Visual Basic 6.0 (VB6) 程式語言案例學習 (07. 收據列印程式)

Image

Visual Basic .Net (VB.Net) 程式語言案例學習 (03. 場地預約系統)

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (11. 生產線拍照程式)

Image

Visual Basic .Net (VB.Net) 程式語言案例學習 (06. 題庫測驗系統)

Image