感謝諸位大大的整理和教學 m(_ _)m
這串討論的前面幾頁有提到色空間轉換和色域範圍的問題,最近剛好有一篇 YUV 的討論,因為原作者 Silky 絕對不會有異議(^^;),我把它轉貼過來給大家參考。
轉貼開始
================================
MPEG 儲存的 YU(Cb)V(Cr) 格式是遵循 CCIR601,也就是 ITU-R BT.601 的規範,Y 亮度的範圍是 16~235,UV(CbCr) 色度是以無色 =128 為中心,範圍是 16~240。
一般民生消費產品使用的 MPEG 壓縮,大都採用 YUV 4:2:0 的格式,也就是如果解析度是 720x576,則每個 Frame,Y 有 720x576 個點,U 只有 360x288 個點,V 也只有 360x288 個點。色度的資訊只有亮度的 1/4。那麼為什麼不寫 YUV 4:1:1(UV 和 Y 的比例是 1:4) 而要寫 YUV 4:2:0?這是因為要區分取樣的方式不同。YUV 4:1:1 是指水平 Y 取樣四個點,UV 各只取樣一個點,水平的 Y 和 UV 的取樣比例是 4:1,也就是
YC Y Y Y ....
C: Chroma, UV
YUV 4:2:0 是指水平和垂直 Y 各取樣兩個點,UV 各只取樣一個點,水平的取樣比例是 2:1,重直的取樣比例 2:1,也就是
Y Y
_C
Y Y
和 YUV 4:1:1 一樣,色度和亮度差 1/2 * 1/2 = 1/4,只是取樣的方式不同。
而 MPEG 最常採用的 YUV 4:2:0 格式,其 UV 的取樣位置,MPEG-1 和 MPEG-2 又不同(MPEG-4 是用和 MPEG-2 一樣的取樣位置)
MPEG-1
Y Y
_x
Y Y
x 是 UV 的取樣位置
MPEG-2
Y Y
x
Y Y
x 是 UV 的取樣位置
在個人電腦上,這些 YUV 讀出來以後會以一些格式包裝起來,送給軟體或硬體處理。包裝的方式分成兩種,一種是 packed format,把 Y 和相對應的 UV 包在一起。另一種是 planar format,把 Y 和 U 和 V 三種分別包裝,拆成三個 plane(平面)。
其中 YV12 和 YUY2 都是一種 YUV 的包裝格式,而且兩種都是 packed format。
YV12 和 YUY2 的不同,在於 YV12 是 YUV 4:2:0 格式,也就是 DVD/VCD 上原本儲存的格式。YUY2 則是 YUV 4:2:2 格式,也就是
YC Y YC Y ....
水平取樣比例是 1/2
重直取樣比例是 1/1,也就是垂直 UV 和 Y 的個數一樣多
以解析度來講,就是 Y 720x576 U 360x576 V 360x576。
至於詳細的包裝格式,這裡就不畫圖了,請參考
http://www.fourcc.org/fccyuv.htm
http://msdn.microsoft.com/library/d.../YUVFormats.asp