天天看點

顔色空間總結

顔色空間總結

RGB、HSV、YUV

什麼是顔色

Wiki是這樣說的:顔色或色彩是通過眼、腦和我們的生活經驗所産生的一種對光的視覺效應。嗯,簡單點說,顔色就是人對光的一種感覺,由大腦産生的一種感覺。感覺是一個很主觀的東西,你怎麼确定你看到的紅色和我看到的是一樣的呢?這個視訊解釋的很不錯。我們需要先假設正常人對于同一種光産生的感覺基本是一緻的,讨論才能繼續下去。

人的視網膜上布滿了感光細胞,當有光線傳入人眼時,這些細胞就會将刺激轉化為視神經的電信号,最終在大腦得到解釋。視網膜上有兩類感光細胞:視錐細胞和視杆細胞。

視錐細胞大都集中在視網膜的中央,每個視網膜大概有700萬個左右。每個視錐細胞包含有一種感光色素,分别對紅、綠、藍三種光敏感。這類細胞能在較明亮的環境中提供辨識顔色和形成精細視覺的功能。
視杆細胞分散分布在視網膜上,每個視網膜大概有1億個以上。這類細胞對光線更為敏感(敏感程度是視錐細胞的100多倍),一個光子就足以激發它的活動。視杆細胞不能感受顔色、分辨精細的空間,但在較弱的光線下可以提供對環境的分辨能力(比如夜裡看到物體的黑白輪廓)。

當一束光線進入人眼後,視細胞會産生4個不同強度的信号:三種視錐細胞的信号(紅綠藍)和視感細胞的信号。這其中,隻有視錐細胞産生的信号能轉化為顔色的感覺。三種視錐細胞(S、M和L類型)對波長長度不同的光線會有不同的反應,每種細胞對某一段波長的光會更加敏感,如下圖。這些信号的組合就是人眼能分辨的顔色總和。

顔色空間總結
顔色空間總結

這裡有一個重要的理論:我們可以用3種精心選擇的單色光來刺激視錐細胞,模拟出人眼所能感覺的幾乎所有的顔色(例如紅綠光的混合光,和單色黃光,刺激視錐細胞産生的視神經信号是等效的),這就是三色加法模型。是以說”三原色”的原理是由生理因素造成的。

顔色的數字化

根據上面的理論,隻需要標明三原色,并且對三原色進行量化,那就可以将人的顔色知覺量化為數字信号了。三色加法模型中,如果某一種顔色(C),和另外一種三色混合色,給人的感覺相同時,這三種顔色的份量就稱為該顔色(C)的三色刺激值。對于如何標明三原色、如何量化、如何确定刺激值等問題,國際上有一套标準——CIE标準色度學系統。

CIE(國際照明委員會)是位于歐洲的一個國際學術研究機構,1931年,CIE在會議上根據之前的實驗成果提出了一個标準——CIE1931-RGB标準色度系統。

CIE1931-RGB系統選擇了700nm(R) 546.1nm(G) 435.8nm(B) 三種波長的單色光作為三原色。之是以選這三種顔色是因為比較容易精确地産生出來(汞弧光譜濾波産生,色度穩定準确)。

顔色空間總結

從上圖可以看到,三個顔色的刺激值R、G、B如何構成某一種顔色:例如580nm左右(紅綠線交叉點)的黃色光,可以用1:1(經過亮度換算..)的紅綠兩種原色混合來模拟.

如果要根據三個刺激值R、G、B來表現可視顔色,繪制的可視圖形需要是三維的。為了能在二維平面上表現顔色空間,這裡需要做一些轉換。顔色的概念可以分為兩部分:亮度(光的振幅,即明暗程度)、色度(光的波長組合,即具體某種顔色)。我們将光的亮度(Y)變量分離出來,之後用比例來表示三色刺激值:

r=RR+G+Bg=GR+G+Bb=BR+G+B

這樣就能得出r+g+b=1。由此可見,色度坐标r、g、b中隻有兩個變量是獨立的。這樣我們就把刺激值R、G、B轉換成r、g、Y(亮度)三個值,把r、g兩個值繪制到二維空間得到的圖就是色域圖。

顔色空間總結

上圖中,馬蹄形曲線就表示單色的光譜(即光譜軌迹)。例如540nm的單色光,可以看到由r=0、g=1、b=(1-r-g)=0三個原色的分量組成。再例如380-540nm波段的單色光,由于顔色比對實驗結果中紅色存在負值的原因,該段色域落在了r軸的負區間内。自然界中,人眼可分辨的顔色,都落在光譜曲線包圍的範圍内。

CIE1931-RGB标準是根據實驗結果制定的,出現的負值在計算和轉換時非常不便。CIE假定人對色彩的感覺是線性的,是以對上面的r-g色域圖進行了線性變換,将可見光色域變換到正數區域内。CIE在CIE1931-RGB色域中選擇了一個三角形,該三角形覆寫了所有可見色域,之後将該三角形進行如下的線性變換,将可見色域變換到(0,0)(0,1)(1,0)的正數區域内。即假想出三原色X、Y、Z,它們不存在于自然界中,但更友善計算。

⎡⎣⎢XYZ⎤⎦⎥=1b21⎡⎣⎢b11b21b31b12b22b32b13b23b33⎤⎦⎥⎡⎣⎢RGB⎤⎦⎥=10.17697⎡⎣⎢0.490.176970.000.310.812400.010.200.010630.99⎤⎦⎥⎡⎣⎢RGB⎤⎦⎥

得到的結果就是下圖:

顔色空間總結

注意這裡的顔色隻是示意,事實上沒有裝置能完全還上面所有的自然色域

這個圖有些有意思的性質:

該色度圖所示意的顔色包含了一般人可見的所有顔色,即人類視覺的色域。色域的馬蹄形弧線邊界對應自然界中的單色光。色域下方直線的邊界隻能由多種單色光混合成。

在該圖中任意標明兩點,兩點間直線上的顔色可由這兩點的顔色混合成。給定三個點,三點構成的三角形内顔色可由這三個點顔色混合成。

給定三個真實光源,混合得出的色域隻能是三角形(例如液晶顯示器的評測結果),絕對不可能完全覆寫人類視覺色域。

這就是CIE1931-XYZ标準色度學系統。該系統是國際上色度計算、顔色測量和顔色表征的統一标準,是幾乎所有測色儀器的設計與制造依據。

常見顔色模型

顔色模型就是描述用一組數值來描述顔色的數學模型。例如coding時最常見的RGB模型,就是用RGB三個數值來描述顔色。通常顔色模型分為兩類:裝置相關和裝置無關。

裝置無關的顔色模型:這類顔色模型是基于人眼對色彩感覺的度量建立的數學模型,例如上面提到的CIE-RGB、CIE-XYZ顔色模型,再比如由此衍生的CIE-xyY、CIE-L*u*v、CIE-L*a*b等顔色模型。這些顔色模型主要用于計算和測量。

裝置相關的顔色模型:以最長見的RGB模型為例,一組确定的RGB數值,在一個液晶屏上顯示,最終會作用到三色LED的電壓上。這樣一組值在不同裝置上解釋時,得到的顔色可能并不相同。再比如CMYK模型需要依賴列印裝置解釋。常見的裝置相關模型有:RGB、CMYK、YUV、HSL、HSB(HSV)、YCbCr等。這類顔色模型主要用于裝置顯示、資料傳輸等。

下面就對這些顔色模型一一作出解釋。

CIE-RGB

正如上面寫的,這個模型是由真實的人眼顔色比對實驗得出的模型,RGB分别表示那三個固定波長的光的份量。

顔色空間總結

CIE-XYZ

上面也有,就是根據CIE-RGB進行變換得到的顔色模型,XYZ分别表示三個假想色的光的份量。通常簡寫為XYZ顔色模型。

顔色空間總結

CIE-Yxy

該模型由CIE-XYZ衍生得來。其中x=XX+Y+Z,y=YX+Y+Z, Yxy中的Y表示光的亮度。這個模型投影到x-y平面上即上面的CIE1931-XYZ色度圖。其中x、y分量的取值範圍是[0,1]。有時該模型也被稱作CIE-xyY。

顔色空間總結

還有許多,不再詳盡說明。

RGB

最常見的顔色模型,裝置相關。三個數值代表R、G、B分量,取值均為[0,255]。

顔色空間總結

通常裝置(例如筆記本的液晶顯示屏)能表現的色域大概是下面這樣。

顔色空間總結

CMYK、CMY

這個顔色模型常用于印刷出版。CMYK表示青(Cyan)品紅(Magenta)黃(Yellow)黑(BlacK)四種顔料。由于顔料的特性,該模型也是與裝置相關的。相對于RGB的加色混色模型,CMY是減色混色模型,顔色混在一起,亮度會降低。之是以加入黑色是因為列印時由品紅、黃、青構成的黑色不夠純粹。

顔色空間總結

通常其能表現的色域很小,如下圖。

顔色空間總結

HSL、HSV

HSL和HSV的顔色模型比較相近,它們用來描述顔色相對于RGB等模型顯得更加自然。電腦繪畫時,這兩個模型非常受到歡迎。

HSL和HSV中,H都表示色相(Hue)。通常該值取值範圍是[0°,360°],對應紅橙黃綠青藍紫-紅這樣順序的顔色,構成一個首尾相接的色相環。色相的實體意義就是光的波長,不同波長的光呈現了不同的色相。

HSL和HSV中,S都表示飽和度(Saturation)(有時也稱為色度、彩度)即色彩的純淨程度。例如龍袍的金黃色飽和度就比屎黃色高。對應到到實體意義上:即一束光可能由很多種不同波長的單色光構成,波長越多越分散,則色彩的純淨程度越低,而單色的光構成的色彩純淨度就很高。

兩個顔色模型不同的就是最後一個份量。

HSL中的L表示亮度(Lightness/Luminance/Intensity)。根據縮寫不同HSL有時也稱作HLS或HSI(就是說HSL、HLS、HSI是一回事)。

HSV中的V表示明度(Value/Brightness)。根據縮寫不同,HSV有時也被稱作HSB(就是說HSV和HSB是一回事)。

至于亮度和明度的差別,可以看下面的圖。一種純色的明度是白色的明度,而純色的亮度等于中灰色的亮度。

顔色空間總結

下面的圖能更好的對比HSL和HSV的差別:在圓柱體外圍是純色(紅黃綠藍紫…)HSL中,這圈純色位于亮度(L)等于1/2的部位,而在HSV中是在明度(Value)等于1的部位。

顔色空間總結

将上面的圓柱體裁掉無用的部分,得到的是如下的錐形,就能更明顯的看出HSL和HSV的差別了。

顔色空間總結

YUV、YCbCr(YCC)、YPbPr、YDbDr、YIQ

這些顔色模型大都是用在電視系統、數位攝影等地方。其中的Y分量都表示的是明亮度(Luminance、Luma)。

YUV顔色模型中,U、V表示的是色度(Chrominance/Chroma)。YUV是歐洲電視系統所采用的顔色模型(屬于PAL制式),顔色被分為一個亮度信号和兩個色差信号進行傳輸。

YCbCr(簡稱YCC)中,Cb和Cr藍色(blue)和紅色(red)的色度。YCbCr是YUV的壓縮和偏移的版本。

YPbPr類似YCbCr,與之不同的是,YPbPr選用的CIE色度坐标略有不同。一般SDTV傳輸的色差信号被稱作Cb、Cr,而HDTV傳輸的色差信号被稱作Pb、Pr。

YDbDr也類似YCbCr,同樣也是色度坐标不同。YDbDr是SECAM制式電視系統所用的顔色模型。

繼續閱讀