優點作用
YUV主要用於最佳化彩色視頻信號的傳輸,使其向後相容老式黑白電視。與RGB視頻信號傳輸相比,它最大的優點在於只需占用極少的頻寬(RGB要求三個獨立的視頻信號同時傳輸)。其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V” 表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用於指定像素的顏色。“亮度”是透過RGB輸入信號來建立的,方法是將RGB信號的特定部分疊加到一起。“色度”則定義了顏色的兩個方面─色調與飽和度,分別用Cr和Cb來表示。其中,Cr反映了RGB輸入信號紅色部分與RGB信號亮度值之間的差異。而Cb反映的是RGB輸入信號藍色部分與RGB信號亮度值之間的差異。
採用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視採用YUV空間正是為了用亮度信號Y解決彩色電視機與黑白電視機的兼容問題,使黑白電視機也能接收彩色電視信號。
對於數字視頻,定義了從 RGB 到兩個主要 YUV 的轉換。這兩個轉換都基於稱為 ITU-R Recommendation BT.709 的規範。第一個轉換是 BT.709 中定義用於 50-Hz 的較早的 YUV 格式。它與在 ITU-R Recommendation BT.601 中指定的關係相同, ITU-R Recommendation BT.601 也被稱為它的舊名稱 CCIR 601。這種格式應該被視為用於標準定義 TV解析度(720 x 576) 和更低解析度視頻的首選 YUV 格式。它的特徵由下面兩個常量 Kr 和 Kb 的值來定義:
Kr = 0.299Kb = 0.114第二個轉換為 BT.709 中定義用於 60-Hz 的較新 YUV 格式,應該被視為用於高於 SDTV 的視頻解析度的首選格式。它的特徵由下面兩個不同的常量值來定義:Kr = 0.2126Kb = 0.0722從 RGB 到 YUV 轉換的定義以下列內容開始:L = Kr * R + Kb * B + (1 – Kr – Kb) * G然後,按照下列方式獲得 YUV 值:
Y = floor(2^(M-8) * (219*(L–Z)/S + 16) + 0.5)U = clip3(0, 2^M-1, floor(2^(M-8) * (112*(B-L) / ((1-Kb)*S) + 128) + 0.5))V = clip3(0, 2^M-1, floor(2^(M-8) * (112*(R-L) / ((1-Kr)*S) + 128) + 0.5))其中
M 為每個 YUV 樣例的位數 (M >= 8)。
Z 為黑電平變數。對於計算機RGB,Z 等於 0。對於 studio視頻RGB,Z 等於 16*2,其中 N 為每個 RGB
樣例的位數 (N >= 8)。S 為縮放變數。對於計算機RGB,S 等於 255。對於 studio視頻RGB,S 等於 219*2。
函式floor(x) 返回大於或等於 x 的最大整數。函式clip3(x, y, z) 的定義如下所示:
clip3(x, y, z) = ((z < x) ? x : ((z > y) ? y : z))Y 樣例表示亮度,U 和 V 樣例分別表示偏向藍色和紅色的顏色偏差。Y 的標稱範圍為 16*2 到 235*2 。黑色表示為 16*2 ,白色表示為 235*2 。U 和 V 的標稱範圍為 16*2 到 240*2 ,值 128*2 表示中性色度。但是,實際的值可能不在這些範圍之內。
對於 studio 視頻 RGB 形式的輸入數據,要使得 U 和 V 值保持在 0 到 2M-1 範圍之內,必需進行剪輯操作。如果輸入為計算機RGB,則不需要剪輯操作,這是因為轉換公式不會生成超出此範圍的值。
這些都是精確的公式,沒有近似值。
在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等。
格式(圖)
YUV格式通常有兩大類:打包(packed)格式和平面(planar)格式。前者將YUV分量存放在同一個數組中,通常是幾個相鄰的像素組成一個宏像素(macro-pixel);而後者使用三個數組分開存放YUV三個分量,就像是一個三維平面一樣。表2.3中的YUY2到Y211都是打包格式,而IF09到YVU9都是平面格式。(注意:在介紹各種具體格式時,YUV各分量都會帶有下標,如Y0、U0、V0表示第一個像素的YUV分量,Y1、U1、V1表示第二個像素的YUV分量,以此類推。)
¨ YUY2(和YUYV)格式為每個像素保留Y分量,而UV分量在水平方向上每兩個像素採樣一次。一個宏像素為4個位元組,實際表示2個像素。(4:2:2的意思實際上是一個宏像素中有2個Y分量、1個U分量和1個V分量。)圖像數據中YUV分量排列順序如下:
Y0 U0 Y1 V0 Y2 U2 Y3 V2 …
¨ YVYU格式跟YUY2類似,只是圖像數據中YUV分量的排列順序有所不同:
Y0 V0 Y1 U0 Y2 V2 Y3 U2 …
¨ UYVY格式跟YUY2類似,只是圖像數據中YUV分量的排列順序有所不同:
U0 Y0 V0 Y1 U2 Y2 V2 Y3 …
¨ AYUV格式帶有一個Alpha通道,並且為每個像素都提取YUV分量,圖像數據格式如下:
A0 Y0 U0 V0 A1 Y1 U1 V1 …
¨ Y41P(和Y411)格式為每個像素保留Y分量,而UV分量在水平方向上每4個像素採樣一次。一個宏像素為12個位元組,實際表示8個像素。圖像數據中YUV分量排列順序如下:
U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 …
¨ Y211格式在水平方向上Y分量每2個像素採樣一次,而UV分量每4個像素採樣一次。一個宏像素為4個位元組,實際表示4個像素。圖像數據中YUV分量排列順序如下:
Y0 U0 Y2 V0 Y4 U4 Y6 V4 …
¨ YVU9格式為每個像素都提取Y分量,而在UV分量的提取時,首先將圖像分成若干個4 x 4的宏塊,然後每個宏塊提取一個U分量和一個V分量。圖像數據存儲時,首先是整幅圖像的Y分量數組,然後就跟著U分量數組,以及V分量數組。IF09格式與YVU9類似。
¨ IYUV格式為每個像素都提取Y分量,而在UV分量的提取時,首先將圖像分成若干個2 x 2的宏塊,然後每個宏塊提取一個U分量和一個V分量。YV12格式與IYUV類似。
¨ YUV411、YUV420格式多見於DV數據中,前者用於NTSC制,後者用於PAL制。YUV411為每個像素都提取Y分量,而UV分量在水平方向上每4個像素採樣一次。YUV420並非V分量採樣為0,而是跟YUV411相比,在水平方向上提高一倍色差採樣頻率,在垂直方向上以U/V間隔的方式減小一半色差採樣,如上圖所示。
轉換方法
YUV與RGB的轉換公式:
U和V元件可以被表示成原始的R、G,和B:
取而代之,以矩陣表示法(matrix representation),可得到公式: