RGB和YUV之比較【轉】


轉自:http://blog.csdn.net/qfnu08zzr/article/details/6763159

RGB 原理

   RGB 是從顏色發光的原理來設計定的,通俗點說它的顏色混合方式就好像有紅、綠、藍三盞燈,當它們的光相互疊合的時候,色彩相混,而亮度卻等於兩者亮度之總和(兩盞燈的亮度嘛!),越混合亮度越高,即加法混合。

  有色光可被無色光沖淡並變亮。如藍色光與白光相遇,結果是產生更加明亮的淺藍色光。知道它的混合原理后,在軟件中設定顏色就容易理解了。 

  紅、綠、藍三盞燈的疊加情況,中心三色最亮的疊加區為白色,加法混合的特點:越疊加越明亮。

  紅、綠、藍三個顏色通道每種色各分為 255 階亮度,在 0 時 “ 燈 ” 最弱 —— 是關掉的,而在 255 時 “ 燈 ” 最亮。當三色數值相同時為無色彩的灰度色,而三色都為 255 時為最亮的白色,都為 0 時為黑色。 

   RGB 顏色稱為加成色,因為您通過將 R 、 G 和 B 添加在一起(即所有光線反射回眼睛)可產生白色。 加成色用於照明光、電視和計算機顯示器。 例如,顯示器通過紅色、綠色和藍色熒光粉發射光線產生顏色。絕大多數可視光譜都可表示為紅、綠、藍 (RGB) 三色光在不同比例和強度上的混合。 這些顏色若發生重疊,則產生青、洋紅和黃。

       對一種顏色進行編碼的方法統稱為 “ 顏色空間 ” 或 “ 色域 ” 。用最簡單的話說,世界上任何一種顏色的 “ 顏色空間 ” 都可定義成一個固定的數字或變量。 RGB (紅、綠、藍)只是眾多顏色空間的一種。采用這種編碼方法,每種顏色都可用三個變量來表示 - 紅色綠色以及藍色的強度。記錄及顯示彩色圖像時, R GB 是最常見的一種方案。但是,它缺乏與早期黑白顯示系統的良好兼容性。因此,件多電子電器廠商普遍采用的做法是,將 RGB 轉換成 YUV 顏色空同,以維持兼容,再根據需要換回 RGB 格式,以便在電腦顯示器上顯示彩色圖形。 

RGB24 是指 R , G , B 三個分量各占 8 位

RGB32 是指 R , G , B , A 四個分量各占 8 位

在 Windows 桌面屬性外觀中編輯顏色時,有 YUV 和 RGB 兩種編輯 方法。

  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

  在 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 等。

主要的采樣格式有 YCbCr 4:2:0 、 YCbCr 4:2:2 、 YCbCr 4:1:1 和 YCbCr 4:4:4 。其中 YCbCr 4:1:1 比較常用,其含義為:每個點保存一個 8bit 的亮度值 ( 也就是 Y 值 ) ,每 2x2 個點保存一個 Cr 和 Cb 值 , 圖像在肉眼中的感覺不會起太大的變化。所以, 原來用 RGB(R , G , B 都是 8bit unsigned) 模型, 1 個點需要 8x3=24 bits (如下圖第一個圖),(全采樣后, YUV 仍各占 8bit )。按 4:1:1 采樣后,而現在平均僅需要 8+(8/4)+(8/4)=12bits ( 4 個點, 8*4 ( Y ) +8(U)+8(V)=48bits ) , 平均每個點占 12bits( 如下圖第二個圖 ) 。這樣就把圖像的數據壓縮了一半。

  上邊僅給出了理論上的示例,在實際數據存儲中是有可能是不同的,下面給出幾種具體的存儲形式:

  ( 1 ) YUV 4:4:4

   YUV 三個信道的抽樣率相同,因此在生成的圖像里,每個象素的三個分量信息完整(每個分量通常 8 比特),經過 8 比特量化之后,未經壓縮的每個像素占用 3 個字節。

  下面的四個像素為 : [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

  每個色差信道的抽樣率是亮度信道的一半,所以水平方向的色度抽樣率只是 4:4:4 的一半。對非壓縮的 8 比特量化的圖像來說,每個由兩個水平方向相鄰的像素組成的宏像素需要占用 4 字節內存。

  下面的四個像素為: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  存放的碼流為: Y0 U0 Y1 V1 Y2 U2 Y3 V3

  映射出像素點為: [Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]

  ( 3 ) YUV 4:1:1

   4:1:1 的色度抽樣,是在水平方向上對色度進行 4:1 抽樣。對於低端用戶和消費類產品這仍然是可以接受的。對非壓縮的 8 比特量化的視頻來說,每個由 4 個水平方向相鄰的像素組成的宏像素需要占用 6 字節內存。

  下面的四個像素為 : [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  存放的碼流為 : Y0 U0 Y1 Y2 V2 Y3

  映射出像素點為: [Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]

  ( 4 ) YUV4:2:0

   4:2:0 並不意味着只有 Y , Cb 而沒有 Cr 分量。它指得是對每行掃描線來說,只有一種色度分量以 2:1 的抽樣率存儲。相鄰的掃描行存儲不同的色度分量,也就是說,如果一行是 4:2:0 的話,下一行就是 4:0:2 ,再下一行是 4:2:0... 以此類推。對每個色度分量來說,水平方向和豎直方向的抽樣率都是 2:1 ,所以可以說色度的抽樣率是 4:1 。對非壓縮的 8 比特量化的視頻來說,每個由 2x2 個 2 行 2 列相鄰的像素組成的宏像素需要占用 6 字節內存。

  下面八個像素為: [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

  映射出的像素點為: [Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]

   [Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM