YUV 格式

YUV 格式

Y爲0.5時,UV的色彩對應RGB色域

原圖與Y、U、V的效果

上圖從上到下分別是:原圖,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:

從 RGB 到 YUV

如一般順序,轉移組件的範圍可得到:

YUV範圍

在逆轉關係上,從 YUV 到 RGB,可得:

從 YUV 到 RGB

取而代之,以矩陣表示法(matrix representation),可得到公式:

RGB 轉 YUV 的轉換矩陣

YUV 轉 RGB 的轉換矩陣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章