YUV 格式
上圖從上到下分別是:原圖,Y向量圖片,U向量圖片,V向量圖片。
YUV 格式有兩大類:Planar(平面格式) 和 Packed(打包格式)。
- Planar:先連續存儲所有像素點的 Y,緊接着存儲所有像素點的 U,隨後是所有像素點的 V。相當於將 YUV 拆分成三個平面 (plane) 存儲。
- Packed:每個像素點的 Y, U, V 是連續交替存儲的。
YUV 分爲三個分量,Y 表示亮度(Luminance),即灰度值;UV 表示色度(Chrominance),描述色彩和飽和度。
與我們熟知的 RGB 類似,YUV 也是一種顏色編碼方法,主要用於電視系統以及模擬視頻領域,它將亮度信息(Y)與色彩信息(UV)分離,沒有 UV 信息一樣可以顯示完整的圖像,只不過是黑白的,這樣的設計很好地解決了彩色電視機與黑白電視的兼容問題。並且,YUV 不像 RGB 那樣要求三個獨立的視頻信號同時傳輸,所以用 YUV 方式傳送佔用極少的頻寬。
YUV 的存儲格式與其採樣方式密切相關。
主流的採樣方式有 4 種:YUV(4:4:4), YUV(4:2:2), YUV(4:2:0), YUV(4:1:1)
- YUV 4:4:4 採樣:每一個 Y 對應一組 UV 分量(4 個 Y 採樣就對應 4 個 Cb 和 4 個 Cr 採樣)。平均一個像素佔用 8+8+8 = 24 位。
- YUV 4:2:2 採樣:每兩個 Y 共用一組 UV 分量(4 個 Y 採樣就對應 2 個 Cb 和 2 個 Cr 採樣)。平均一個像素佔用 8+4+4 = 16 位。
- YUV 4:2:0 採樣:每四個 Y 共用一組 UV 分量(4 個 Y 採樣就對應 2 個 Cb 或 2 個 Cr 採樣)。平均一個像素佔用 8+4+0 = 12 位。
- YUV 4:1:1 採樣:每四個 Y 共用一組 UV 分量(4 個 Y 採樣就對應 1 個 Cb 和 1 個 Cr 採樣)。平均一個像素佔用 8+2+2 = 12 位。
YUV411 這個格式很少使用,這裏就不介紹了。
YUV444 格式
YUV444P
Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 | Y8 |
Y9 | Y10 | Y11 | Y12 | Y13 | Y14 | Y15 | Y16 |
Y17 | Y18 | Y19 | Y20 | Y21 | Y22 | Y23 | Y24 |
Y25 | Y26 | Y27 | Y28 | Y29 | Y30 | Y31 | Y32 |
U1 | U2 | U3 | U4 | U5 | U6 | U7 | U8 |
U9 | U10 | U11 | U12 | U13 | U14 | U15 | U16 |
U17 | U18 | U19 | U20 | U21 | U22 | U23 | U24 |
U25 | U26 | U27 | U28 | U29 | U30 | U31 | U32 |
V1 | V2 | V3 | V4 | V5 | V6 | V7 | V8 |
V9 | V10 | V11 | V12 | V13 | V14 | V15 | V16 |
V17 | V18 | V19 | V20 | V21 | V22 | V23 | V24 |
V25 | V26 | V27 | V28 | V29 | V30 | V31 | V32 |
YUV422 格式 ( YCbYCr / YUYV ,CbYCrY / UYVY / I422 ,422P , 422SP )
打包格式 (Packed) :YCbYCr / YUYV ,CbYCrY / UYVY / I422
平面格式 (Planar) :422P , 422SP
YCbYCr / YUYV
Y | U | Y | V | Y | U | Y | V |
---|---|---|---|---|---|---|---|
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 | U8 | Y16 | V8 |
Y17 | U9 | Y18 | V9 | Y19 | U10 | Y20 | V10 |
Y21 | U11 | Y22 | V11 | Y23 | U12 | Y24 | V12 |
Y25 | U13 | Y26 | V13 | Y27 | U14 | Y28 | V14 |
Y29 | U15 | Y30 | V15 | Y31 | U16 | Y32 | V16 |
CbYCrY / UYVY / I422
U | Y | V | Y | U | Y | V | Y |
---|---|---|---|---|---|---|---|
U1 | Y1 | V1 | Y2 | U2 | Y3 | V2 | Y4 |
U3 | Y5 | V3 | Y6 | U4 | Y7 | V4 | Y8 |
U5 | Y9 | V5 | Y10 | U6 | Y11 | V6 | Y12 |
U7 | Y13 | V7 | Y14 | U8 | Y15 | V8 | Y16 |
U9 | Y17 | V9 | Y18 | U10 | Y19 | V10 | Y20 |
U11 | Y21 | V11 | Y22 | U12 | Y23 | V12 | Y24 |
U13 | Y25 | V13 | Y26 | U14 | Y27 | V14 | Y28 |
U15 | Y29 | V15 | Y30 | U16 | Y31 | V16 | Y32 |
YUV422P
Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 | Y8 |
Y9 | Y10 | Y11 | Y12 | Y13 | Y14 | Y15 | Y16 |
Y17 | Y18 | Y19 | Y20 | Y21 | Y22 | Y23 | Y24 |
Y25 | Y26 | Y27 | Y28 | Y29 | Y30 | Y31 | Y32 |
U1 | U2 | U3 | U4 | U5 | U6 | U7 | U8 |
U9 | U10 | U11 | U12 | U13 | U14 | U15 | U16 |
V1 | V2 | V3 | V4 | V5 | V6 | V7 | V8 |
V9 | V10 | V11 | V12 | V13 | V14 | V15 | V16 |
YUV422SP
Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 | Y8 |
Y9 | Y10 | Y11 | Y12 | Y13 | Y14 | Y15 | Y16 |
Y17 | Y18 | Y19 | Y20 | Y21 | Y22 | Y23 | Y24 |
Y25 | Y26 | Y27 | Y28 | Y29 | Y30 | Y31 | Y32 |
U1 | V1 | U2 | V2 | U3 | V3 | U4 | V4 |
U5 | V5 | U6 | V6 | U7 | V7 | U8 | V8 |
U9 | V9 | U10 | V10 | U11 | V11 | U12 | V12 |
U13 | V13 | U14 | V14 | U15 | V15 | U16 | V16 |
YUV420 格式( I420 / YU12 , YV12 , NV12 , NV21 )
分爲:YUV420P ( I420 / YU12 , YV12 ),YUV420SP ( NV12 , NV21 )
YU12 是 I420 的別稱,YV12 與之是 UV 順序不同。
NV12 和 NV21 則是 UV 交織順序不同。
I420 / YU12 (YUV420P)
又稱 YU12 ( Y 後面緊跟着 V,位深爲 12 )
Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 | Y8 |
Y9 | Y10 | Y11 | Y12 | Y13 | Y14 | Y15 | Y16 |
Y17 | Y18 | Y19 | Y20 | Y21 | Y22 | Y23 | Y24 |
Y25 | Y26 | Y27 | Y28 | Y29 | Y30 | Y31 | Y32 |
U1 | U2 | U3 | U4 | U5 | U6 | U7 | U8 |
V1 | V2 | V3 | V4 | V5 | V6 | V7 | V8 |
YV12 (YUV420P)
與 I420(YUV420P) 的 UV 存儲順序相反
Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 | Y8 |
Y9 | Y10 | Y11 | Y12 | Y13 | Y14 | Y15 | Y16 |
Y17 | Y18 | Y19 | Y20 | Y21 | Y22 | Y23 | Y24 |
Y25 | Y26 | Y27 | Y28 | Y29 | Y30 | Y31 | Y32 |
V1 | V2 | V3 | V4 | V5 | V6 | V7 | V8 |
U1 | U2 | U3 | U4 | U5 | U6 | U7 | U8 |
NV12 (YUV420SP)
UV 分量交織存儲
Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 | Y8 |
Y9 | Y10 | Y11 | Y12 | Y13 | Y14 | Y15 | Y16 |
Y17 | Y18 | Y19 | Y20 | Y21 | Y22 | Y23 | Y24 |
Y25 | Y26 | Y27 | Y28 | Y29 | Y30 | Y31 | Y32 |
U1 | V1 | U2 | V2 | U3 | V3 | U4 | V4 |
U4 | V4 | U5 | V5 | U7 | V7 | U8 | V8 |
NV21 (YUV420SP)
VU 分量交織存儲。與 YUV420P(NV12) 的 UV 交織存儲順序相反
Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 | Y8 |
Y9 | Y10 | Y11 | Y12 | Y13 | Y14 | Y15 | Y16 |
Y17 | Y18 | Y19 | Y20 | Y21 | Y22 | Y23 | Y24 |
Y25 | Y26 | Y27 | Y28 | Y29 | Y30 | Y31 | Y32 |
v1 | U1 | V2 | U2 | V3 | U3 | V4 | U4 |
v4 | U4 | V5 | U5 | V7 | U7 | V8 | U8 |
YUV 轉 RGB
不管 YUV 的格式如何,最終得到的就是 Y、U、V 三個向量的值。
那麼 Y、U、V 的數據如何轉爲 RGB 圖片呢?畢竟 RGB 圖片上有很多強大的算法。
YUV 與 RGB 的轉換公式:
U 和 V 組件可以被表示成原始的 R、G,和 B:
如一般順序,轉移組件的範圍可得到:
在逆轉關係上,從 YUV 到 RGB,可得:
取而代之,以矩陣表示法(matrix representation),可得到公式: