RGB、YUV和HSV顏色空間模型(轉載)
一、概述
顏色通常用三個獨立的屬性來描述,三個獨立變數綜合作用,自然就構成一個空間座標,這就是顏色空間。但被描述的顏色物件本身是客觀的,不同顏色空間只是從不同的角度去衡量同一個物件。顏色空間按照基本機構可以分為兩大類:基色顏色空間和色、亮分離顏色空間。前者典型的是RGB,後者包括YUV和HSV等等。 二、RGB顏色空間
1、計算機色彩顯示器和彩色電視機顯示色彩的原理一樣,都是採用R、G、B相加混色的原理,通過發射出三種不同強度的電子束,使螢幕內側覆蓋的紅、綠、藍磷光材料發光而產生色彩。這種色彩的表示方法稱為RGB色彩空間表示。
2、在RGB顏色空間中,任意色光F都可以用R、G、B三色不同分量的相加混合而成:F=r[R]+r[G]+r[B]。RGB色彩空間還可以用一個三維的立方體來描述。當三基色分量都為0(最弱)時混合為黑色光;當三基色都為k(最大,值由儲存空間決定)時混合為白色光。在這裡插入圖片描述
3、RGB色彩空間根據每個分量在計算機中佔用的儲存位元組數分為如下幾種型別:
(1)RGB555
RGB555是一種16位的RGB格式,各分量都用5位表示,剩下的一位不用。
高位元組 -> 低位元組
XRRRRRGGGGGBBBBB
(2)RGB565
RGB565也是一種16位的RGB格式,但是R佔用5位,G佔用6位,B佔用5位。
(3)RGB24
RGB24是一種24位的RGB格式,各分量佔用8位,取值範圍為0-255。
(4)RGB32
RGB24是一種32位的RGB格式,各分量佔用8位,剩下的8位作Alpha通道或者不用。
4、RGB色彩空間採用物理三基色表示,因而物理意義很清楚,適合彩色顯象管工作。然而這一體制並不適應人的視覺特點。因而,產生了其它不同的色彩空間表示法。 三、YUV顏色空間
1、YUV(亦稱YCrCb)是被歐洲電視系統所採用的一種顏色編碼方法。在現代彩色電視系統中,通常採用三管彩色攝像機或彩色CCD攝影機進行取像,然後把取得的彩色影象訊號經分色、分別放大校正後得到RGB,再經過矩陣變換電路得到亮度訊號Y和兩個色差訊號R-Y(即U)、B-Y(即V),最後傳送端將亮度和兩個色差總共三個訊號分別進行編碼,用同一通道傳送出去。這種色彩的表示方法就是所謂的YUV色彩空間表示。採用YUV色彩空間的重要性是它的亮度訊號Y和色度訊號U、V是分離的。如果只有Y訊號分量而沒有U、V訊號分量,那麼這樣表示的影象就是黑白灰度影象。彩色電視採用YUV空間正是為了用亮度訊號Y解決彩色電視機與黑白電視機的相容問題,使黑白電視機也能接收彩色電視訊號。
2、YUV主要用於優化彩色視訊訊號的傳輸,使其向後相容老式黑白電視。與RGB視訊訊號傳輸相比,它最大的優點在於只需佔用極少的頻寬(RGB要求三個獨立的視訊訊號同時傳輸)。其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V” 表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用於指定畫素的顏色。“亮度”是透過RGB輸入訊號來建立的,方法是將RGB訊號的特定部分疊加到一起。“色度”則定義了顏色的兩個方面─色調與飽和度,分別用Cr和Cb來表示。其中,Cr反映了RGB輸入訊號紅色部分與RGB訊號亮度值之間的差異。而Cb反映的是RGB輸入訊號藍色部分與RGB訊號亮度值之同的差異。
3、YUV和RGB互相轉換的公式如下(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
四、HSV顏色空間
1、HSV是一種將RGB色彩空間中的點在倒圓錐體中的表示方法。HSV即色相(Hue)、飽和度(Saturation)、明度(Value),又稱HSB(B即Brightness)。色相是色彩的基本屬性,就是平常說的顏色的名稱,如紅色、黃色等。飽和度(S)是指色彩的純度,越高色彩越純,低則逐漸變灰,取0-100%的數值。明度(V),取0-max(計算機中HSV取值範圍和儲存的長度有關)。HSV顏色空間可以用一個圓錐空間模型來描述。圓錐的頂點處,V=0,H和S無定義,代表黑色。圓錐的頂面中心處V=max,S=0,H無定義,代表白色。 2、RGB顏色空間中,三種顏色分量的取值與所生成的顏色之間的聯絡並不直觀。而HSV顏色空間,更類似於人類感覺顏色的方式,封裝了關於顏色的資訊:“這是什麼顏色?深淺如何?明暗如何?”
3、RGB和HSV轉換
(1)從RGB到HSV
設max等於r、g和b中的最大者,min為最小者。對應的HSV空間中的(h,s,v)值為: h在0到360°之間,s在0到100%之間,v在0到max之間。
(2)從HSV到RGB