RGB/HSV/YUV顏色空間模型總結


本文借鑒於新浪博客http://blog.sina.com.cn/s/blog_679741950100ivz0.html

RGB顏色空間
計算機色彩顯示器顯示色彩的原理與彩色電視機一樣,都是采用R、G、B相加混色的原理,通過發射出三種不同強度的電子束,使屏幕內側覆蓋的紅、綠、藍磷光材料發光而產生色彩的。這種色彩的表示方法稱為RGB色彩空間表示。在多媒體計算機技術中,用的最多的是RGB色彩空間表示。
根據三基色原理,用基色光單位來表示光的量,則在RGB色彩空間,任意色光F都可以用R、G、B三色不同分量的相加混合而成:
F=r [ R ] + g [ G ] + b [ B ]

RGB色彩空間還可以用一個三維的立方體來描述。
我們可知自然界中任何一種色光都可由R、G、B三基色按不同的比例相加混合而成,當三基色分量都為0(最弱)時混合為黑色光;當三基色分量都為k(最強)時混合為白色光。任一色彩F是這個立方體坐標中的一點,調整三色系數r、g、b中的任一系數都會改變F的坐標值,也即改變了F的色值。RGB色彩空間采用物理三基色表示,因而物理意義很清楚,適合彩色顯象管工作。然而這一體制並不適應人的視覺特點。因而,產生了其它不同的色彩空間表示法。

HSV顏色空間
HSV(hue,saturation,value)顏色空間的模型對應於圓柱坐標系中的一個圓錐形子集,圓錐的頂面對應於V=1。它包含RGB模型中的R=1,G=1,B=1三個面,所代表的顏色較亮。色彩H由繞V軸的旋轉角給定。紅色對應於角度0°,綠色對應於角度120°,藍色對應於角度240°。在HSV顏色模型中,每一種顏色和它的補色相差180°。飽和度S取值從0到1,所以圓錐頂面的半徑為1。HSV顏色模型所代表的顏色域是CIE色度圖的一個子集,這個模型中飽和度為百分之百的顏色,其純度一般小於百分之百。在圓錐的頂點(即原點)處,V=0,H和S無定義,代表黑色。圓錐的頂面中心處S=0,V=1,H無定義,代表白色。從該點到原點代表亮度漸暗的灰色,即具有不同灰度的灰色。對於這些點,S=0,H的值無定義。可以說,HSV模型中的V軸對應於RGB顏色空間中的主對角線。在圓錐頂面的圓周上的顏色,V=1,S=1,這種顏色是純色。HSV模型對應於畫家配色的方法。畫家用改變色濃和色深的方法從某種純色獲得不同色調的顏色,在一種純色中加入白色以改變色濃,加入黑色以改變色深,同時加入不同比例的白色,黑色即可獲得各種不同的色調。
HSV顏色空間可以用一個圓錐空間模型來描述。
這里寫圖片描述

RGB和HSV顏色空間
matlab中有相應的函數 rgb2hsv
用法:
cmap = rgb2hsv(M)
hsv_image = rgb2hsv(rgb_image)

以及HSV轉RGB的函數是 hsv2rgb
用法:
M = hsv2rgb(H)
rgb_image = hsv2rgb(hsv_image)

從 RGB 到HSV 的轉換
設 (r, g, b) 分別是一個顏色的紅、綠和藍坐標,它們的值是在 0 到 1 之間的實數。設 max 等價於 r, g 和 b 中的最大者。設 min 等於這些值中的最小者。要找到在 HSV 空間中的 (h, s, v) 值,這里的 h ∈ [0, 360)是角度的色相角,而 s, v ∈ [0,1] 是飽和度和亮度,計算為:
max=max(R,G,B)
min=min(R,G,B)
if R = max, H = (G-B)/(max-min)
if G = max, H = 2 + (B-R)/(max-min)
if B = max, H = 4 + (R-G)/(max-min)

H = H * 60
if H < 0, H = H + 360

V=max(R,G,B)
S=(max-min)/max
h 的值通常規范化到位於 0 到 360°之間。而 h = 0 用於 max = min 的(就是灰色)時候而不是留下 h 未定義。

YUV顏色空間
YUV(亦稱YCrCb)是被歐洲電視系統所采用的一種顏色編碼方法(屬於PAL)。在現代彩色電視系統中,通常采用三管彩色攝影機或彩色CCD攝影機進行取像,然后把取得的彩色圖像信號經分色、分別放大校正后得到RGB,再經過矩陣變換電路得到亮度信號Y和兩個色差信號R-Y(即U)、B-Y(即V),最后發送端將亮度和色差三個信號分別進行編碼,用同一信道發送出去。這種色彩的表示方法就是所謂的YUV色彩空間表示。采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有 Y信號分量而沒有U、V信號分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機與黑白電視機的相容問題,使黑白電視機也能接收彩色電視信號。
優點作用
  YUV主要用於優化彩色視頻信號的傳輸,使其向后相容老式黑白電視。與RGB視頻信號傳輸相比,它最大的優點在於只需占用極少的頻寬(RGB要求三個獨立的視頻信號同時傳輸)。其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V” 表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用於指定像素的顏色。“亮度”是透過RGB輸入信號來建立的,方法是將RGB信號的特定部分疊加到一起。“色度”則定義了顏色的兩個方面─色調與飽和度,分別用Cr和CB來表示。其中,Cr反映了GB輸入信號紅色部分與RGB信號亮度值之間的差異。而CB反映的是RGB輸入信號藍色部分與RGB信號亮度值之同的差異。
  采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機與黑白電視機的兼容問題,使黑白電視機也能接收彩色電視信號。
  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


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com