【opencv】颜色空间总结
顏色空間總結(jié)RGB、HSV、YUV,LAB
什么是顏色
Wiki是這樣說的:顏色或色彩是通過眼、腦和我們的生活經(jīng)驗(yàn)所產(chǎn)生的一種對光的視覺效應(yīng)。嗯,簡單點(diǎn)說,顏色就是人對光的一種感覺,由大腦產(chǎn)生的一種感覺。感覺是一個很主觀的東西,你怎么確定你看到的紅色和我看到的是一樣的呢?這個視頻解釋的很不錯。我們需要先假設(shè)正常人對于同一種光產(chǎn)生的感覺基本是一致的,討論才能繼續(xù)下去。
人的視網(wǎng)膜上布滿了感光細(xì)胞,當(dāng)有光線傳入人眼時,這些細(xì)胞就會將刺激轉(zhuǎn)化為視神經(jīng)的電信號,最終在大腦得到解釋。視網(wǎng)膜上有兩類感光細(xì)胞:視錐細(xì)胞和視桿細(xì)胞。
視錐細(xì)胞大都集中在視網(wǎng)膜的中央,每個視網(wǎng)膜大概有700萬個左右。每個視錐細(xì)胞包含有一種感光色素,分別對紅、綠、藍(lán)三種光敏感。這類細(xì)胞能在較明亮的環(huán)境中提供辨別顏色和形成精細(xì)視覺的功能。
視桿細(xì)胞分散分布在視網(wǎng)膜上,每個視網(wǎng)膜大概有1億個以上。這類細(xì)胞對光線更為敏感(敏感程度是視錐細(xì)胞的100多倍),一個光子就足以激發(fā)它的活動。視桿細(xì)胞不能感受顏色、分辨精細(xì)的空間,但在較弱的光線下可以提供對環(huán)境的分辨能力(比如夜里看到物體的黑白輪廓)。
當(dāng)一束光線進(jìn)入人眼后,視細(xì)胞會產(chǎn)生4個不同強(qiáng)度的信號:三種視錐細(xì)胞的信號(紅綠藍(lán))和視感細(xì)胞的信號。這其中,只有視錐細(xì)胞產(chǎn)生的信號能轉(zhuǎn)化為顏色的感覺。三種視錐細(xì)胞(S、M和L類型)對波長長度不同的光線會有不同的反應(yīng),每種細(xì)胞對某一段波長的光會更加敏感,如下圖。這些信號的組合就是人眼能分辨的顏色總和。?
?
這里有一個重要的理論:我們可以用3種精心選擇的單色光來刺激視錐細(xì)胞,模擬出人眼所能感知的幾乎所有的顏色(例如紅綠光的混合光,和單色黃光,刺激視錐細(xì)胞產(chǎn)生的視神經(jīng)信號是等效的),這就是三色加法模型。所以說”三原色”的原理是由生理因素造成的。
顏色的數(shù)字化
根據(jù)上面的理論,只需要選定三原色,并且對三原色進(jìn)行量化,那就可以將人的顏色知覺量化為數(shù)字信號了。三色加法模型中,如果某一種顏色(C),和另外一種三色混合色,給人的感覺相同時,這三種顏色的份量就稱為該顏色(C)的三色刺激值。對于如何選定三原色、如何量化、如何確定刺激值等問題,國際上有一套標(biāo)準(zhǔn)——CIE標(biāo)準(zhǔn)色度學(xué)系統(tǒng)。
CIE(國際照明委員會)是位于歐洲的一個國際學(xué)術(shù)研究機(jī)構(gòu),1931年,CIE在會議上根據(jù)之前的實(shí)驗(yàn)成果提出了一個標(biāo)準(zhǔn)——CIE1931-RGB標(biāo)準(zhǔn)色度系統(tǒng)。
CIE1931-RGB系統(tǒng)選擇了700nm(R) 546.1nm(G) 435.8nm(B) 三種波長的單色光作為三原色。之所以選這三種顏色是因?yàn)楸容^容易精確地產(chǎn)生出來(汞弧光譜濾波產(chǎn)生,色度穩(wěn)定準(zhǔn)確)。
?
從上圖可以看到,三個顏色的刺激值R、G、B如何構(gòu)成某一種顏色:例如580nm左右(紅綠線交叉點(diǎn))的黃色光,可以用1:1(經(jīng)過亮度換算..)的紅綠兩種原色混合來模擬.?
如果要根據(jù)三個刺激值R、G、B來表現(xiàn)可視顏色,繪制的可視圖形需要是三維的。為了能在二維平面上表現(xiàn)顏色空間,這里需要做一些轉(zhuǎn)換。顏色的概念可以分為兩部分:亮度(光的振幅,即明暗程度)、色度(光的波長組合,即具體某種顏色)。我們將光的亮度(Y)變量分離出來,之后用比例來表示三色刺激值:?
這樣就能得出r+g+b=1。由此可見,色度坐標(biāo)r、g、b中只有兩個變量是獨(dú)立的。這樣我們就把刺激值R、G、B轉(zhuǎn)換成r、g、Y(亮度)三個值,把r、g兩個值繪制到二維空間得到的圖就是色域圖。? ?
上圖中,馬蹄形曲線就表示單色的光譜(即光譜軌跡)。例如540nm的單色光,可以看到由r=0、g=1、b=(1-r-g)=0三個原色的分量組成。再例如380-540nm波段的單色光,由于顏色匹配實(shí)驗(yàn)結(jié)果中紅色存在負(fù)值的原因,該段色域落在了r軸的負(fù)區(qū)間內(nèi)。自然界中,人眼可分辨的顏色,都落在光譜曲線包圍的范圍內(nèi)。
CIE1931-RGB標(biāo)準(zhǔn)是根據(jù)實(shí)驗(yàn)結(jié)果制定的,出現(xiàn)的負(fù)值在計算和轉(zhuǎn)換時非常不便。CIE假定人對色彩的感知是線性的,因此對上面的r-g色域圖進(jìn)行了線性變換,將可見光色域變換到正數(shù)區(qū)域內(nèi)。CIE在CIE1931-RGB色域中選擇了一個三角形,該三角形覆蓋了所有可見色域,之后將該三角形進(jìn)行如下的線性變換,將可見色域變換到(0,0)(0,1)(1,0)的正數(shù)區(qū)域內(nèi)。即假想出三原色X、Y、Z,它們不存在于自然界中,但更方便計算。?
???XYZ???=1b21???b11b21b31b12b22b32b13b23b33??????RGB???=10.17697???0.490.176970.000.310.812400.010.200.010630.99??????RGB???[XYZ]=1b21[b11b12b13b21b22b23b31b32b33][RGB]=10.17697[0.490.310.200.176970.812400.010630.000.010.99][RGB]得到的結(jié)果就是下圖:? ?
注意這里的顏色只是示意,事實(shí)上沒有設(shè)備能完全還上面所有的自然色域
這個圖有些有意思的性質(zhì):
該色度圖所示意的顏色包含了一般人可見的所有顏色,即人類視覺的色域。色域的馬蹄形弧線邊界對應(yīng)自然界中的單色光。色域下方直線的邊界只能由多種單色光混合成。?
在該圖中任意選定兩點(diǎn),兩點(diǎn)間直線上的顏色可由這兩點(diǎn)的顏色混合成。給定三個點(diǎn),三點(diǎn)構(gòu)成的三角形內(nèi)顏色可由這三個點(diǎn)顏色混合成。?
給定三個真實(shí)光源,混合得出的色域只能是三角形(例如液晶顯示器的評測結(jié)果),絕對不可能完全覆蓋人類視覺色域。?
這就是CIE1931-XYZ標(biāo)準(zhǔn)色度學(xué)系統(tǒng)。該系統(tǒng)是國際上色度計算、顏色測量和顏色表征的統(tǒng)一標(biāo)準(zhǔn),是幾乎所有測色儀器的設(shè)計與制造依據(jù)。
常見顏色模型
顏色模型就是描述用一組數(shù)值來描述顏色的數(shù)學(xué)模型。例如coding時最常見的RGB模型,就是用RGB三個數(shù)值來描述顏色。通常顏色模型分為兩類:設(shè)備相關(guān)和設(shè)備無關(guān)。
設(shè)備無關(guān)的顏色模型:這類顏色模型是基于人眼對色彩感知的度量建立的數(shù)學(xué)模型,例如上面提到的CIE-RGB、CIE-XYZ顏色模型,再比如由此衍生的CIE-xyY、CIE-L*u*v、CIE-L*a*b等顏色模型。這些顏色模型主要用于計算和測量。
設(shè)備相關(guān)的顏色模型:以最長見的RGB模型為例,一組確定的RGB數(shù)值,在一個液晶屏上顯示,最終會作用到三色LED的電壓上。這樣一組值在不同設(shè)備上解釋時,得到的顏色可能并不相同。再比如CMYK模型需要依賴打印設(shè)備解釋。常見的設(shè)備相關(guān)模型有:RGB、CMYK、YUV、HSL、HSB(HSV)、YCbCr等。這類顏色模型主要用于設(shè)備顯示、數(shù)據(jù)傳輸?shù)取?/p>
下面就對這些顏色模型一一作出解釋。
CIE-RGB
正如上面寫的,這個模型是由真實(shí)的人眼顏色匹配實(shí)驗(yàn)得出的模型,RGB分別表示那三個固定波長的光的份量。?
CIE-XYZ
上面也有,就是根據(jù)CIE-RGB進(jìn)行變換得到的顏色模型,XYZ分別表示三個假想色的光的份量。通常簡寫為XYZ顏色模型。?
CIE-Yxy
該模型由CIE-XYZ衍生得來。其中x=XX+Y+Z,y=YX+Y+Zx=XX+Y+Z,y=YX+Y+Z, Yxy中的Y表示光的亮度。這個模型投影到x-y平面上即上面的CIE1931-XYZ色度圖。其中x、y分量的取值范圍是[0,1]。有時該模型也被稱作CIE-xyY。?
?
還有許多,不再詳盡說明。
RGB
最常見的顏色模型,設(shè)備相關(guān)。三個數(shù)值代表R、G、B分量,取值均為[0,255]。?
?
通常設(shè)備(例如筆記本的液晶顯示屏)能表現(xiàn)的色域大概是下面這樣。?
CMYK、CMY
這個顏色模型常用于印刷出版。CMYK表示青(Cyan)品紅(Magenta)黃(Yellow)黑(BlacK)四種顏料。由于顏料的特性,該模型也是與設(shè)備相關(guān)的。相對于RGB的加色混色模型,CMY是減色混色模型,顏色混在一起,亮度會降低。之所以加入黑色是因?yàn)榇蛴r由品紅、黃、青構(gòu)成的黑色不夠純粹。?
HSL、HSV
HSL和HSV的顏色模型比較相近,它們用來描述顏色相對于RGB等模型顯得更加自然。電腦繪畫時,這兩個模型非常受到歡迎。
HSL和HSV中,H都表示色相(Hue)。通常該值取值范圍是[0°,360°],對應(yīng)紅橙黃綠青藍(lán)紫-紅這樣順序的顏色,構(gòu)成一個首尾相接的色相環(huán)。色相的物理意義就是光的波長,不同波長的光呈現(xiàn)了不同的色相。
HSL和HSV中,S都表示飽和度(Saturation)(有時也稱為色度、彩度)即色彩的純凈程度。例如龍袍的金黃色飽和度就比屎黃色高。對應(yīng)到到物理意義上:即一束光可能由很多種不同波長的單色光構(gòu)成,波長越多越分散,則色彩的純凈程度越低,而單色的光構(gòu)成的色彩純凈度就很高。
兩個顏色模型不同的就是最后一個份量。?
HSL中的L表示亮度(Lightness/Luminance/Intensity)。根據(jù)縮寫不同HSL有時也稱作HLS或HSI(就是說HSL、HLS、HSI是一回事)。?
HSV中的V表示明度(Value/Brightness)。根據(jù)縮寫不同,HSV有時也被稱作HSB(就是說HSV和HSB是一回事)。
至于亮度和明度的區(qū)別,可以看下面的圖。一種純色的明度是白色的明度,而純色的亮度等于中灰色的亮度。?
?
下面的圖能更好的對比HSL和HSV的區(qū)別:在圓柱體外圍是純色(紅黃綠藍(lán)紫…)HSL中,這圈純色位于亮度(L)等于1/2的部位,而在HSV中是在明度(Value)等于1的部位。?
?
將上面的圓柱體裁掉無用的部分,得到的是如下的錐形,就能更明顯的看出HSL和HSV的區(qū)別了。?
YUV、YCbCr(YCC)、YPbPr、YDbDr、YIQ
這些顏色模型大都是用在電視系統(tǒng)、數(shù)位攝影等地方。其中的Y分量都表示的是明亮度(Luminance、Luma)。
YUV顏色模型中,U、V表示的是色度(Chrominance/Chroma)。YUV是歐洲電視系統(tǒng)所采用的顏色模型(屬于PAL制式),顏色被分為一個亮度信號和兩個色差信號進(jìn)行傳輸。
YCbCr(簡稱YCC)中,Cb和Cr藍(lán)色(blue)和紅色(red)的色度。YCbCr是YUV的壓縮和偏移的版本。
YPbPr類似YCbCr,與之不同的是,YPbPr選用的CIE色度坐標(biāo)略有不同。一般SDTV傳輸?shù)纳钚盘柋环Q作Cb、Cr,而HDTV傳輸?shù)纳钚盘柋环Q作Pb、Pr。
YDbDr也類似YCbCr,同樣也是色度坐標(biāo)不同。YDbDr是SECAM制式電視系統(tǒng)所用的顏色模型。
YIQ也和上面的類似。。是用在了NTSC制式的的電視系統(tǒng)里。?
全球電視系統(tǒng)制式分布,PAL用YUV、SECAM用YDbDr、NTSC用YIQ
下面再說一些人聽懂的話:?
YCbCr顏色空間,也就是YUV,YUV主要用于優(yōu)化彩色視頻信號的傳輸,使其向后相容老式黑白電視。與RGB視頻信號傳輸相比,它最大的優(yōu)點(diǎn)在于只需占用極少的頻寬(RGB要求三個獨(dú)立的視頻信號同時傳輸)。其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V” 表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。“亮度”是透過RGB輸入信號來建立的,方法是將RGB信號的特定部分疊加到一起。“色度”則定義了顏色的兩個方面─色調(diào)與飽和度,分別用Cr和CB來表示。其中,Cr反映了GB輸入信號紅色部分與RGB信號亮度值之間的差異。而CB反映的是RGB輸入信號藍(lán)色部分與RGB信號亮度值之同的差異。?
采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機(jī)與黑白電視機(jī)的兼容問題,使黑白電視機(jī)也能接收彩色電視信號。?
?
Y代表的灰度級較高,而CrCb則相對灰度值要少些。?
?
從上圖可以看出區(qū)別,Y對應(yīng)的就是灰度或者說是亮度,而Cb、Cr則相對灰度級較少,人眼分辨差異較大。
補(bǔ)充:
YCrCb即YUV,主要用于優(yōu)化彩色視頻信號的傳輸,使其向后相容老式黑白電視。與RGB視頻信號傳輸相比,它最大的優(yōu)點(diǎn)在于只需占用極少的頻寬(RGB要求三個獨(dú)立的視頻信號同時傳輸)。其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V” 表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。“亮度”是透過RGB輸入信號來建立的,方法是將RGB信號的特定部分疊加到一起。“色度”則定義了顏色的兩個方面─色調(diào)與飽和度,分別用Cr和CB來表示。其中,Cr反映了RGB輸入信號紅色部分與RGB信號亮度值之間的差異。而CB反映的是RGB輸入信號藍(lán)色部分與RGB信號亮度值之間的差異。 采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機(jī)與黑白電視機(jī)的兼容問題,使黑白電視機(jī)也能接收彩色電視信號。
YUV與RGB相互轉(zhuǎn)換的公式如下(RGB取值范圍均為0-255)︰
Y = 0.299R + 0.587G + 0.114B
? ?U = -0.147R - 0.289G + 0.436B
? ?V = 0.615R - 0.515G - 0.100B
? ?R = Y + 1.14V
? ?G = Y - 0.39U - 0.58V
? ?B = Y + 2.03U
在DirectShow中,常見的RGB格式有RGB1、RGB4、RGB8、RGB565、RGB555、RGB24、RGB32、ARGB32等;常見的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。
在人臉檢測中也常常用到Y(jié)CrCb空間,因?yàn)橐话愕膱D像都是基于RGB空間的,在RGB空間里人臉的膚色受亮度影響相當(dāng)大,所以膚色點(diǎn)很難從非膚色點(diǎn)中分離出來,也就是說在此空間經(jīng)過處理后,膚色點(diǎn)是離散的點(diǎn),中間嵌有很多非膚色,這為膚色區(qū)域標(biāo)定(人臉標(biāo)定、眼睛等)帶來了難題。如果把RGB轉(zhuǎn)為YCrCb空間的話,可以忽略Y(亮度)的影響,因?yàn)樵摽臻g受亮度影響很小,膚色會產(chǎn)生很好的類聚。
這樣就把三維的空間將為二維的CrCb,膚色點(diǎn)會形成一定得形狀,如:人臉的話會看到一個人臉的區(qū)域,手臂的話會看到一條手臂的形態(tài),對處理模式識別很有好處,根據(jù)經(jīng)驗(yàn)?zāi)滁c(diǎn)的CrCb值滿足:133≤Cr≤173,77≤Cb≤127 那么該點(diǎn)被認(rèn)為是膚色點(diǎn),其他的就為非膚色點(diǎn)。
Lab顏色
同RGB顏色空間相比,Lab是一種不常用的色彩空間。它是在1931年國際照明委員會(CIE)制定的顏色度量國際標(biāo)準(zhǔn)的基礎(chǔ)上建立起來的。1976年,經(jīng)修改后被正式命名為CIELab。它是一種設(shè)備無關(guān)的顏色系統(tǒng),也是一種基于生理特征的顏色系統(tǒng)。這也就意味著,它是用數(shù)字化的方法來描述人的視覺感應(yīng)。Lab顏色空間中的L分量用于表示像素的亮度,取值范圍是[0,100],表示從純黑到純白;a表示從紅色到綠色的范圍,取值范圍是[127,-128];b表示從黃色到藍(lán)色的范圍,取值范圍是[127,-128]。下圖所示為Lab顏色空間的圖示;
? ? 需要提醒的是,Lab顏色空間比計算機(jī)顯示器、打印機(jī)甚至比人類視覺的色域都要大,表示為?Lab?的位圖比?RGB?或?CMYK?位圖獲得同樣的精度要求更多的每像素數(shù)據(jù)。雖然我們在生活中使用RGB顏色空間更多一些,但也并非Lab顏色空間真的一無所有。例如,在?Adobe?Photoshop圖像處理軟件中,TIFF格式文件中,PDF文檔中,都可以見到Lab顏色空間的身影。而在計算機(jī)視覺中,尤其是顏色識別相關(guān)的算法設(shè)計中,rgb,hsv,lab顏色空間混用更是常用的方法。
為了使用顏色空間,首先應(yīng)該了解各種顏色空間的特性。顏色空間的分類有多種方法。
1.按使用類別分類
彩色色度學(xué)模型:CIE-RGB、CIE-XYZ、均勻色差彩色模型(CIE 1976Luv和CIE Lab)
工業(yè)彩色模型:RGB彩色顯示模型、CMYK彩色印制模型、彩色傳輸模型YUV(PAL)、YIQ(NTSC)、YCrCb(數(shù)字高清晰度電視)
視覺彩色模型:HVC(孟賽爾)、HSB(Photoshop)、HLS(Windows畫圖和Apple Color Picker)、HSI(圖像分割)、HSY(電視)、Ohta(圖像分割)等。
2.按顏色感知分類
混合顏色模型:按3種基色的比例混合而成的顏色。RGB、CMYK、XYZ等
非線形亮度/色度顏色模型:用一個分量表示非色彩的感知,用兩個分量表示色彩的感知,這兩個分量都是色差屬性。L*a*b、L*u*v、YUV、YIQ等。
強(qiáng)度/飽和度/色調(diào)模型:用強(qiáng)度描述亮度或灰度等光強(qiáng)的感知,用飽和度和色調(diào)描述色彩的感知,這兩個分量接近人眼對顏色的感覺。如HIS、HSL、HSV、LCH等
總結(jié)
以上是生活随笔為你收集整理的【opencv】颜色空间总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring基于AspectJ实现AOP
- 下一篇: [招贤纳士 ]Gcoge.Com(Bin