音影片入門-07-認識YUV
- 2019 年 10 月 3 日
- 筆記
YUV & YCbCr 簡介
-
YUV,是一種顏色編碼方法。常使用在各個影片處理組件中。 YUV 在對照片或影片編碼時,考慮到人類的感知能力,允許降低色度的頻寬。
-
Y 表示明亮度(Luminance或Luma),也就是灰階值,U 和 V 表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用於指定像素的顏色。
-
Y’CbCr 不是一種絕對的色彩空間,是一種針對 RGB 資訊所做的編碼。真正的顏色顯示是根據實際 RGB 色盤(colorant)來決定的。因此 Y’CbCr 所表示的值只有在標準 RGB 色盤或是 ICC 數據(ICC profile)有提供的時候才能計算。Y’CbCr 在模擬分量影像(analog component video)中也常被稱為 YPbPr。
-
YCbCr 不是一種絕對色彩空間,是 YUV 壓縮和偏移的版本。YCbCr 的 Y 與 YUV 中的 Y 含義一致,Cb 和 Cr 與 UV 同樣都指色彩,Cb 指藍色色度,Cr 指紅色色度,在應用上很廣泛,JPEG、MPEG、DVD、攝影機、數字電視等皆采此一格式。
- [ [ [ 因此一般俗稱的 YUV 大多是指 YCbCr ] ] ]。
- [ [ [ 因此一般俗稱的 YUV 大多是指 YCbCr ] ] ]。
-
[ [ [ 因此一般俗稱的 YUV 大多是指 YCbCr ] ] ]。
YUVFormats分成兩個格式:
-
緊縮格式(packedformats):將 Y、U、V 值存儲成 MacroPixels 數組,和 RGB 的存放方式類似。
-
平面格式(planarformats):將 Y、U、V 的三個分量分別存放在不同的矩陣中。
緊縮格式(packedformat)中的 YUV 是混合在一起的,對於 YUV4:4:4 格式而言,用緊縮格式很合適的,因此就有了 UYVY、YUYV 等。
平面格式(planarformats)是指每 Y 分量,U 分量和 V 分量都是以獨立的平面組織的,也就是說所有的 U 分量必須在 Y 分量後面,而 V 分量在所有的 U 分量後面,此一格式適用於取樣(subsample)。平面格式(planarformat)有 I420(4:2:0)、YV12、IYUV 等。
YUV 取樣格式
為節省頻寬起見,大多數 YUV 格式平均使用的每像素位數都少於 24 位。主要的取樣(subsample)格式有 YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1 和 YCbCr4:4:4。YUV 的表示法稱為 A:B:C 表示法:
- 4:4:4 表示完全取樣。
- 4:2:2 表示 2:1 的水平取樣,垂直完全取樣。
- 4:2:0 表示 2:1 的水平取樣,垂直 2:1 取樣。
- 4:1:1 表示 4:1 的水平取樣,垂直完全取樣。
表格中,每一格代表一個像素
未取樣前
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V0 | Y1 U1 V1 | Y2 U2 V2 | Y3 U3 V3 |
2 | Y4 U4 V4 | Y5 U5 V5 | Y6 U6 V6 | Y7 U7 V7 |
3 | Y8 U8 V8 | Y9 U9 V9 | Y10 U10 V10 | Y11 U11 V11 |
4 | Y12 U12 V12 | Y13 U13 V13 | Y14 U14 V14 | Y15 U15 V15 |
4:4:4 取樣
4:4:4 表示完全取樣
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V0 | Y1 U1 V1 | Y2 U2 V2 | Y3 U3 V3 |
2 | Y4 U4 V4 | Y5 U5 V5 | Y6 U6 V6 | Y7 U7 V7 |
3 | Y8 U8 V8 | Y9 U9 V9 | Y10 U10 V10 | Y11 U11 V11 |
4 | Y12 U12 V12 | Y13 U13 V13 | Y14 U14 V14 | Y15 U15 V15 |
映射的像素:
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V0 | Y1 U1 V1 | Y2 U2 V2 | Y3 U3 V3 |
2 | Y4 U4 V4 | Y5 U5 V5 | Y6 U6 V6 | Y7 U7 V7 |
3 | Y8 U8 V8 | Y9 U9 V9 | Y10 U10 V10 | Y11 U11 V11 |
4 | Y12 U12 V12 | Y13 U13 V13 | Y14 U14 V14 | Y15 U15 V15 |
4:2:2 取樣
4:2:2 表示 2:1 的水平取樣,垂直完全取樣
每取樣過一個像素點,都會取樣其 Y 分量,而 U、V 分量就會間隔一個採集一個。
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 – | Y1 – V1 | Y2 U2 – | Y3 – V3 |
2 | Y4 U4 – | Y5 – V5 | Y6 U6 – | Y7 – V7 |
3 | Y8 U8 – | Y9 – V9 | Y10 U10 – | Y11 – V11 |
4 | Y12 U12 – | Y13 – V13 | Y14 U14 – | Y15 – V15 |
映射的像素:
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V1 | Y1 U0 V1 | Y2 U2 V3 | Y3 U2 V3 |
2 | Y4 U4 V5 | Y5 U4 V5 | Y6 U6 V7 | Y7 U6 V7 |
3 | Y8 U8 V9 | Y9 U8 V9 | Y10 U10 V11 | Y11 U10 V11 |
4 | Y12 U12 V13 | Y13 U12 V13 | Y14 U14 V15 | Y15 U14 V15 |
4:2:0 取樣
4:2:0 表示 2:1 的水平取樣,垂直 2:1 取樣
每取樣過一個像素點,都會取樣其 Y 分量,而 U、V 分量就會間隔一行按照 2 : 1 進行取樣。
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 – | Y1 – – | Y2 U2 – | Y3 – – |
2 | Y4 – V4 | Y5 – – | Y6 – V6 | Y7 – – |
3 | Y8 U8 – | Y9 – – | Y10 U10 – | Y11 – – |
4 | Y12 – V12 | Y13 – – | Y14 – V14 | Y15 – – |
映射的像素:
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V4 | Y1 U0 V4 | Y2 U2 V6 | Y3 U2 V6 |
2 | Y4 U0 V4 | Y5 U0 V4 | Y6 U2 V6 | Y7 U2 V6 |
3 | Y8 U8 V12 | Y9 U8 V12 | Y10 U10 V14 | Y11 U10 V14 |
4 | Y12 U8 V12 | Y13 U8 V12 | Y14 U10 V14 | Y15 U10 V14 |
4:1:1 取樣
4:1:1 表示 4:1 的水平取樣,垂直完全取樣
每取樣過一個像素點,都會取樣其 Y 分量,而 U、V 分量就會間隔一行按照 2 : 1 進行取樣。
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 – | Y1 – – | Y2 – V2 | Y3 – – |
2 | Y4 U4 – | Y5 – – | Y6 – V6 | Y7 – – |
3 | Y8 U8 – | Y9 – – | Y10 – V10 | Y11 – – |
4 | Y12 U12 – | Y13 – – | Y14 – V14 | Y15 – – |
映射的像素:
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V2 | Y1 U0 V2 | Y2 U0 V2 | Y3 U0 V2 |
2 | Y4 U4 V6 | Y5 U4 V6 | Y6 U4 V6 | Y7 U4 V6 |
3 | Y8 U8 V10 | Y9 U8 V10 | Y10 U8 V10 | Y11 U8 V10 |
4 | Y12 U12 V14 | Y13 U12 V14 | Y14 U12 V14 | Y15 U12 V14 |
YUV 存儲方式
YUV 的存儲方式,一般有兩種方式,一種叫 packed 模式,一種叫 planar 模式。packed 模式 Y,U,V 交錯排列,而 planar 模式 Y 和 U,V 的排列是分開的,而具體 U 與 V 繼續分開或者繼續交錯排列根據具體的格式相關。
常見的基於 YUV422 取樣的格式:
YUV422 取樣 |
---|
YUYV 格式 |
UYVY 格式 |
YUV422P 格式 |
常見的基於 YUV420 取樣的格式:
YUV420P 類型 | YUV420SP 類型 |
---|---|
YV12 格式 | YU12 格式 |
NV12 格式 | NV21 格式 |
基於 YUV444 取樣的格式
4×4 像素 YUV444 取樣:
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V0 | Y1 U1 V1 | Y2 U2 V2 | Y3 U3 V3 |
2 | Y4 U4 V4 | Y5 U5 V5 | Y6 U6 V6 | Y7 U7 V7 |
3 | Y8 U8 V8 | Y9 U9 V9 | Y10 U10 V10 | Y11 U11 V11 |
4 | Y12 U12 V12 | Y13 U13 V13 | Y14 U14 V14 | Y15 U15 V15 |
YUV444P 格式
存儲時:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 U0 U1 U2 U3 U4 U5 U6 U7 U8 U9 U10 U11 U12 U13 U14 U15 V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
基於 YUV422 取樣的格式
4×4 像素 YUV422 取樣:
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 – | Y1 – V1 | Y2 U2 – | Y3 – V3 |
2 | Y4 U4 – | Y5 – V5 | Y6 U6 – | Y7 – V7 |
3 | Y8 U8 – | Y9 – V9 | Y10 U10 – | Y11 – V11 |
4 | Y12 U12 – | Y13 – V13 | Y14 U14 – | Y15 – V15 |
YUYV 格式
YUYV 格式是採用打包格式進行存儲的,指每個像素點都取樣 Y 分量,但是每隔一個像素取樣它的 UV 分量。
存儲時(每個方括弧里是 Macropixel=2 image pixels):
[Y0 U0 Y1 V1 ][Y2 U2 Y3 V3 ] [Y4 U4 Y5 V5 ][Y6 U6 Y7 V7 ] [Y8 U8 Y9 V9 ][Y10 U10 Y11 V11] [Y12 U12 Y13 V13][Y14 U14 Y15 V15]
對 U,V 分量重新編號:
[Y0 U0 Y1 V0 ][Y2 U1 Y3 V1 ] [Y4 U2 Y5 V2 ][Y6 U3 Y7 V3 ] [Y8 U4 Y9 V4 ][Y10 U5 Y11 V5 ] [Y12 U6 Y13 V6 ][Y14 U7 Y15 V7 ]
UYVY 格式
UYVY 格式也是採用打包格式進行存儲,它的順序和 YUYV 相反,先取樣 U 分量再取樣 Y 分量。
存儲時(每個方括弧里是 Macropixel=2 image pixels):
[U0 Y0 V1 Y1 ][U2 Y2 V3 Y3 ] [U4 Y4 V5 Y5 ][U6 Y6 V7 Y7 ] [U8 Y8 V9 Y9 ][U10 Y10 V11 Y11] [U12 Y12 V13 Y13][U14 Y14 V15 Y15]
對 U,V 分量重新編號:
[U0 Y0 V0 Y1 ][U1 Y2 V1 Y3 ] [U2 Y4 V2 Y5 ][U3 Y6 V3 Y7 ] [U4 Y8 V4 Y9 ][U5 Y10 V5 Y11] [U6 Y12 V6 Y13][U7 Y14 V7 Y15]
YUV422P 格式(又叫做 I422)
YUV422P 格式,又叫做 I422,採用的是平面格式進行存儲,先存儲所有的 Y 分量,再存儲所有的 U 分量,再存儲所有的 V 分量。
存儲時:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 U0 U2 U4 U6 U8 U10 U12 U14 V1 V3 V5 V7 V9 V11 V13 V15
對 U,V 分量重新編號:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 U0 U1 U2 U3 U4 U5 U6 U7 V0 V1 V2 V3 V4 V5 V6 V7
基於 YUV420 取樣的格式
YUV420P 和 YUV420SP 都是基於 Planar 平面模式進行存儲的。
4×4 像素 YUV420 取樣:
– | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 – | Y1 – – | Y2 U2 – | Y3 – – |
2 | Y4 – V4 | Y5 – – | Y6 – V6 | Y7 – – |
3 | Y8 U8 – | Y9 – – | Y10 U10 – | Y11 – – |
4 | Y12 – V12 | Y13 – – | Y14 – V14 | Y15 – – |
YUV420P 類型
YUV420P 類型先存儲所有的 Y 分量後,會先存儲所有的 U 分量或者 V 分量。
YU12 和 YV12 格式都屬於 YUV420P 類型,即先存儲 Y 分量,再存儲 U、V 分量,區別在於:YU12 是先 Y 再 U 後 V,而 YV12 是先 Y 再 V 後 U 。
YU12 格式(又叫做I420)
YU12 是先 Y 再 U 後 V
存儲時:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 U0 U2 U8 U10 V4 V6 V12 V14
對 U,V 分量重新編號:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 U0 U1 U2 U3 V0 V1 V2 V3
YV12 格式
YV12 是先 Y 再 V 後 U
存儲時:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 V4 V6 V12 V14 U0 U2 U8 U10
對 V,U 分量重新編號:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 V0 V1 V2 V3 U0 U1 U2 U3
YUV420SP 類型
YUV420SP 類型先存儲所有的 Y 分量後,是按照 UV 或者 VU 的交替順序進行存儲。
NV12 和 NV21 格式都屬於 YUV420SP 類型。它也是先存儲了 Y 分量,但接下來並不是再存儲所有的 U 或者 V 分量,而是把 UV 分量交替連續存儲。
NV12 格式
NV12 是 iOS 中有的模式,它的存儲順序是先存 Y 分量,再 UV 進行交替存儲。
存儲時:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 U0 V4 U2 V6 U8 V12 U10 V14
對 U,V 分量重新編號:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 U0 V0 U1 V1 U2 V2 U3 V3
NV21 格式
NV21 是 Android 中有的模式,它的存儲順序是先存 Y 分量,在 VU 交替存儲。
存儲時:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 V4 U0 V6 U2 V12 U8 V14 U10
對 U,V 分量重新編號:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 V0 U0 V1 U1 V2 U2 V3 U3
參考資料:
內容有誤?聯繫作者: