RGB和YUV之比较【转】
轉(zhuǎn)自:http://blog.csdn.net/qfnu08zzr/article/details/6763159
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
RGB 原理
RGB 是從顏色發(fā)光的原理來(lái)設(shè)計(jì)定的,通俗點(diǎn)說(shuō)它的顏色混合方式就好像有紅、綠、藍(lán)三盞燈,當(dāng)它們的光相互疊合的時(shí)候,色彩相混,而亮度卻等于兩者亮度之總和(兩盞燈的亮度嘛!),越混合亮度越高,即加法混合。
有色光可被無(wú)色光沖淡并變亮。如藍(lán)色光與白光相遇,結(jié)果是產(chǎn)生更加明亮的淺藍(lán)色光。知道它的混合原理后,在軟件中設(shè)定顏色就容易理解了?!?/p>
紅、綠、藍(lán)三盞燈的疊加情況,中心三色最亮的疊加區(qū)為白色,加法混合的特點(diǎn):越疊加越明亮。
紅、綠、藍(lán)三個(gè)顏色通道每種色各分為 255 階亮度,在 0 時(shí) “ 燈 ” 最弱 —— 是關(guān)掉的,而在 255 時(shí) “ 燈 ” 最亮。當(dāng)三色數(shù)值相同時(shí)為無(wú)色彩的灰度色,而三色都為 255 時(shí)為最亮的白色,都為 0 時(shí)為黑色?!?/p>
RGB 顏色稱為加成色,因?yàn)槟ㄟ^(guò)將 R 、 G 和 B 添加在一起(即所有光線反射回眼睛)可產(chǎn)生白色。 加成色用于照明光、電視和計(jì)算機(jī)顯示器。 例如,顯示器通過(guò)紅色、綠色和藍(lán)色熒光粉發(fā)射光線產(chǎn)生顏色。絕大多數(shù)可視光譜都可表示為紅、綠、藍(lán) (RGB) 三色光在不同比例和強(qiáng)度上的混合。 這些顏色若發(fā)生重疊,則產(chǎn)生青、洋紅和黃。
對(duì)一種顏色進(jìn)行編碼的方法統(tǒng)稱為 “ 顏色空間 ” 或 “ 色域 ” 。用最簡(jiǎn)單的話說(shuō),世界上任何一種顏色的 “ 顏色空間 ” 都可定義成一個(gè)固定的數(shù)字或變量。 RGB (紅、綠、藍(lán))只是眾多顏色空間的一種。采用這種編碼方法,每種顏色都可用三個(gè)變量來(lái)表示 - 紅色綠色以及藍(lán)色的強(qiáng)度。記錄及顯示彩色圖像時(shí), R GB 是最常見(jiàn)的一種方案。但是,它缺乏與早期黑白顯示系統(tǒng)的良好兼容性。因此,件多電子電器廠商普遍采用的做法是,將 RGB 轉(zhuǎn)換成 YUV 顏色空同,以維持兼容,再根據(jù)需要換回 RGB 格式,以便在電腦顯示器上顯示彩色圖形。
RGB24 是指 R , G , B 三個(gè)分量各占 8 位
RGB32 是指 R , G , B , A 四個(gè)分量各占 8 位
在 Windows 桌面屬性外觀中編輯顏色時(shí),有 YUV 和 RGB 兩種編輯 方法。
YUV 主要用于優(yōu)化彩色視頻信號(hào)的傳輸,使其向后相容老式黑白電視。與 RGB 視頻信號(hào)傳輸相比,它最大的優(yōu)點(diǎn)在于只需占用極少的頻寬( RGB 要求三個(gè)獨(dú)立的視頻信號(hào)同時(shí)傳輸)。其中 “Y” 表示明亮度( Luminance 或 Luma ),也就是灰階值;而 “U” 和 “V” 表示的則是色度( Chrominance 或 Chroma ),作用是描述影像色彩及飽和度,用于指定像素的顏色。 “ 亮度 ” 是透過(guò) RGB 輸入信號(hào)來(lái)建立的,方法是將 RGB 信號(hào)的特定部分疊加到一起。 “ 色度 ” 則定義了顏色的兩個(gè)方面 ─ 色調(diào)與飽和度,分別用 Cr 和 CB 來(lái)表示。其中, Cr 反映了 GB 輸入信號(hào)紅色部分與 RGB 信號(hào)亮度值之間的差異。而 CB 反映的是 RGB 輸入信號(hào)藍(lán)色部分與 RGB 信號(hào)亮度值之同的差異。
采用 YUV 色彩空間的重要性是它的亮度信號(hào) Y 和色度信號(hào) U 、 V 是分離的。如果只有 Y 信號(hào)分量而沒(méi)有 U 、 V 分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用 YUV 空間正是為了用亮度信號(hào) Y 解決彩色電視機(jī)與黑白電視機(jī)的兼容問(wèn)題,使黑白電視機(jī)也能接收彩色電視信號(hào)。
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 中,常見(jiàn)的 RGB 格式有 RGB1 、 RGB4 、 RGB8 、 RGB565 、 RGB555 、 RGB24 、 RGB32 、 ARGB32 等;常見(jiàn)的 YUV 格式有 YUY2 、 YUYV 、 YVYU 、 UYVY 、 AYUV 、 Y41P 、 Y411 、 Y211 、 IF09 、 IYUV 、 YV12 、 YVU9 、 YUV411 、 YUV420 等。
主要的采樣格式有 YCbCr 4:2:0 、 YCbCr 4:2:2 、 YCbCr 4:1:1 和 YCbCr 4:4:4 。其中 YCbCr 4:1:1 比較常用,其含義為:每個(gè)點(diǎn)保存一個(gè) 8bit 的亮度值 ( 也就是 Y 值 ) ,每 2x2 個(gè)點(diǎn)保存一個(gè) Cr 和 Cb 值 , 圖像在肉眼中的感覺(jué)不會(huì)起太大的變化。所以, 原來(lái)用 RGB(R , G , B 都是 8bit unsigned) 模型, 1 個(gè)點(diǎn)需要 8x3=24 bits (如下圖第一個(gè)圖),(全采樣后, YUV 仍各占 8bit )。按 4:1:1 采樣后,而現(xiàn)在平均僅需要 8+(8/4)+(8/4)=12bits ( 4 個(gè)點(diǎn), 8*4 ( Y ) +8(U)+8(V)=48bits ) , 平均每個(gè)點(diǎn)占 12bits( 如下圖第二個(gè)圖 ) 。這樣就把圖像的數(shù)據(jù)壓縮了一半。
上邊僅給出了理論上的示例,在實(shí)際數(shù)據(jù)存儲(chǔ)中是有可能是不同的,下面給出幾種具體的存儲(chǔ)形式:
( 1 ) YUV 4:4:4
YUV 三個(gè)信道的抽樣率相同,因此在生成的圖像里,每個(gè)象素的三個(gè)分量信息完整(每個(gè)分量通常 8 比特),經(jīng)過(guò) 8 比特量化之后,未經(jīng)壓縮的每個(gè)像素占用 3 個(gè)字節(jié)。
下面的四個(gè)像素為 : [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的碼流為 : Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
( 2 ) YUV 4:2:2
每個(gè)色差信道的抽樣率是亮度信道的一半,所以水平方向的色度抽樣率只是 4:4:4 的一半。對(duì)非壓縮的 8 比特量化的圖像來(lái)說(shuō),每個(gè)由兩個(gè)水平方向相鄰的像素組成的宏像素需要占用 4 字節(jié)內(nèi)存。
下面的四個(gè)像素為: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的碼流為: Y0 U0 Y1 V1 Y2 U2 Y3 V3
映射出像素點(diǎn)為: [Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]
?。?3 ) YUV 4:1:1
4:1:1 的色度抽樣,是在水平方向上對(duì)色度進(jìn)行 4:1 抽樣。對(duì)于低端用戶和消費(fèi)類產(chǎn)品這仍然是可以接受的。對(duì)非壓縮的 8 比特量化的視頻來(lái)說(shuō),每個(gè)由 4 個(gè)水平方向相鄰的像素組成的宏像素需要占用 6 字節(jié)內(nèi)存。
下面的四個(gè)像素為 : [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的碼流為 : Y0 U0 Y1 Y2 V2 Y3
映射出像素點(diǎn)為: [Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]
( 4 ) YUV4:2:0
4:2:0 并不意味著只有 Y , Cb 而沒(méi)有 Cr 分量。它指得是對(duì)每行掃描線來(lái)說(shuō),只有一種色度分量以 2:1 的抽樣率存儲(chǔ)。相鄰的掃描行存儲(chǔ)不同的色度分量,也就是說(shuō),如果一行是 4:2:0 的話,下一行就是 4:0:2 ,再下一行是 4:2:0... 以此類推。對(duì)每個(gè)色度分量來(lái)說(shuō),水平方向和豎直方向的抽樣率都是 2:1 ,所以可以說(shuō)色度的抽樣率是 4:1 。對(duì)非壓縮的 8 比特量化的視頻來(lái)說(shuō),每個(gè)由 2x2 個(gè) 2 行 2 列相鄰的像素組成的宏像素需要占用 6 字節(jié)內(nèi)存。
下面八個(gè)像素為: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
[Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8]
存放的碼流為: Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8
映射出的像素點(diǎn)為: [Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]
[Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]
總結(jié)
以上是生活随笔為你收集整理的RGB和YUV之比较【转】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 公用计算机管理,如何管理公用计算机和私人
- 下一篇: STL源码剖析 第七章 仿函数(函数对象