總的來說,YUV從像素組織形式上來分有兩種:1.planer模式,2.packet模式。
planar模式舉例: Y0Y1....Yn U0U1...Um V0V1..Vm,YUV三個通道分別連續存儲;
packet模式舉例: Y0U0V0 + Y1U1V1 + ... + YnUnVn,YUV三個通道混合存儲。
planar模式有利於編解碼的輸入輸出;packet模式有利於視頻數據採集輸入與顯示輸出。
由於人眼對於色度不敏感,因此可以降低色度採樣,這樣可以降低處理數據量,也減少存儲空間。
根據UV採樣的不同,YUV格式又可以分爲400,420,422,444等格式。
400 灰度數據,沒有色度數據;
420 色度在水平和垂直兩個方向上,採樣率都減半。這樣每相鄰的4個Y公用一個U,V數據,U,V的數據量都爲Y的1/4. (420這個名字起的非常不好,令人產生誤解,但是約定俗成就這個延續下來了。)
422 色度在水平方向上採樣率減半,這樣每行相鄰的2個Y公用一個U,V數據,U,V的數據量都爲Y的1/2.
444 色度採樣率和亮度一樣,每個Y都有各自的U,V數據,U,V的數據量都和Y相同。
還有種411格式,不常用,就不關注了。
一般稱400用8bit來表徵一個像素點,420是12比特,422是16比特,444是24比特。
用總的數據量/像素個數 就是這個比特數。例如420格式 總數據量是(w*h + w*h/4 + w*h/4)*8比特 = 12*w*h比特。
YUV常用格式
格式 | Mode | 通道 | 比特 | 示例 | |
GRAY | Planar | 1 | 8 | 400. Y0Y1...Y15 | |
I420 | Planar | 3 | 12 | 420. Y0Y1..Y15 U0U1U2U3 V0V1V2V3 * 常用 理解爲YU12 | |
IYUV | Planar | 3 | 12 | 同I420 | |
YUV420P | Planar | 3 | 12 | 同I420 | |
YUVJ420P | Planar | 3 | 12 | 同I420,不同的是色彩轉換公式,YUVJ使用 JPEG 公式, 輸出數據範圍[0..255], I420的範圍是 [16-240] | |
YV12 | Planar | 3 | 12 | 420. Y0Y1..Y15 V0V1V2V3 U0U1U2U3 * 常用 很多編解碼器都用這個格式輸入輸出 | |
YVU420P | Planar | 3 | 12 | 同YV12 | |
NV12 | Planar | 2 | 12 | 420. Y0Y1..Y15 U0V0U1V1.....U3V3 *常用 | |
NV21 | Planar | 2 | 12 | 420. Y0Y1..Y15 V0U0V1U1.....V3U3 | |
YV16 | Planar | 3 | 16 | 422. Y0Y1..Y15 V0V1..V7 U0U1..U7 | |
YUV422P | Planar | 3 | 16 | 同YV16 | |
I422 | Planar | 3 | 16 | 同YV16 | |
UYVY | Packed | 1 | 16 | 422. U0Y0V0Y1|U1Y2V1Y3|... | |
Y422 | Packed | 1 | 16 | 同UYVY | |
YUY2 | Packed | 1 | 16 | 422. Y0U0Y1V0|Y2U1Y3V1|... *很多攝像機的輸出格式 | |
YUV422 | Packed | 1 | 16 | 同YUY2 | |
YUYV | Packed | 1 | 16 | 同YUY2 | |
YVYU | Packed | 1 | 16 | 422. Y0V0Y1U0|Y2V1Y3U1|... | |
YU16 | Planar | 3 | 16 | 422. Y0Y1..Y15 U0U1..U7 V0V1..V7 | |
NV16 | Planar | 2 | 16 | 422. Y0Y1..Y15 U0V0U1V1..U7V7 | |
YV24 | Planar | 3 | 24 | 444. Y0Y1..Y15 V0V1..V15 U0U1..U15 | |
I444 | Planar | 3 | 24 | 同YV24 | |
IYU2 | Packed | 1 | 24 | 444. U0Y0V0|U1Y1V1|... |
參考:
http://www.fourcc.org/yuv.php
http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html