音影片直播技術–YUV影片格式詳解

什麼是YUV

YUV(也稱YCbCr)是電視系統所採用的一種顏色編碼方法。其中 Y 表示明亮度,也就是灰階值,它是基礎訊號;U 和 V 表示的則是色度,UV 的作用是描述影像色彩及飽和度,它們用於指定像素的顏色。U和V不是基礎訊號,它倆都是被正交調製的.

YUV與RGB影片訊號相比,最大的優點在於只需佔用極少的頻寬,YUV只需要佔用RGB一半的頻寬。

YUV取樣格式

主要的取樣格式有YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4 ,其中 YCbCr 4:2:0是最常用的取樣格式。

YUV 4:4:4

YUV三個信道的抽樣率相同,因此在生成的影像里,每個象素的三個分量資訊完整(每個分量通常8比特),經過8比特量化之後,未經壓縮的每個像素佔用3個位元組。

下面的四個像素為:                      [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]  存放的碼流為:                      Y0 U0 V0    Y1 U1 V1   Y2 U2 V2   Y3 U3 V3

YUV 4:2:2

每個色差信道的抽樣率是亮度信道的一半,所以水平方向的色度抽樣率只是4:4:4的一半。對非壓縮的8比特量化的影像來說,每個由兩個水平方向相鄰的像素組成的宏像素需要佔用4位元組記憶體。

下面的四個像素為:                      [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]  存放的碼流為:                      Y0 U0       Y1 V1      Y2 U2      Y3 V3  映射出像素點為:                      [Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]

YUV4:2:0

4:2:0並不意味著只有Y、Cb兩個分量,而沒有Cr分量。它實際指得是對每行掃描線來說,只有一種色度分量,它以2:1的抽樣率存儲。相鄰的掃描行存儲不同的色度分量,也就是說,如果一行是4:2:0的話,下一行就是4:0:2,再下一行是4:2:0…以此類推。對每個色度分量來說,水平方向和豎直方向的抽樣率都是2:1,所以可以說色度的抽樣率是4:1。對非壓縮的8比特量化的影片來說,每個由2×2個2行2列相鄰的像素組成的宏像素需要佔用6位元組記憶體。

下面八個像素為:                  [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]                  [Y5 U5 V5] [Y6 U6 V6] [Y7 U7 V7] [Y8 U8 V8]    存放的碼流為:                  Y0 U0      Y1         Y2 U2      Y3                  Y5 V5      Y6         Y7 V7      Y8    映射出的像素點為:                  [Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]                  [Y5 U0 V5] [Y6 U0 V5] [Y7 U2 V7] [Y8 U2 V7]

圖形表式法

我們用三個圖來直觀地表示採集的方式吧,以黑點表示取樣該像素點的Y分量,以空心圓圈表示採用該像素點的UV分量。

YUV

YUV 4:4:4取樣,每一個Y對應一組UV分量。 YUV 4:2:2取樣,每兩個Y共用一組UV分量。 YUV 4:2:0取樣,每四個Y共用一組UV分量,如圖中的紅色部分。

存儲格式

YUV存儲格式分為兩大類:planar(平面)格式 和 packed(打包)格式。對於planar格式,先連續存儲所有像素點的Y分量,緊接著存儲所有像素點的U分量,最後是所有像素點的V分量。對於packed格式,每個像素點的 Y、U、V 分量是連續交叉存儲的。由於我們比較常用的是YUV 4:2:0格式,所以我們下面只介紹它的存儲格式,其它如YUV 4:4:4 和 YUV 4:2:2請大家參閱其它文章。

YUV420P中的Y、U、V分量都是平面格式,如下圖所示:

yuv420p

YUV420P又分為 I420 和 YV12 兩種格式。I420格式和YV12格式的不同處在U平面和V平面的位置不同。在I420格式中,U平面緊跟在Y平面之後,然後才是V平面(即:YUV);但YV12則是相反(即:YVU)。

I420: YYYYYYYY UU VV    =>YUV420P  YV12: YYYYYYYY VV UU    =>YUV420P

YUV420SP中的Y分量為平面格式,UV分量為打包格式,即 U 和 V 分量交錯排列。如下圖所示:

yuv420sp.png

YUV420SP也分為兩種格式 NV12 和 NV21,這兩種格式的不同在於UV交錯排列的順序不同。

NV12: YYYYYYYY UVUV     =>YUV420SP  NV21: YYYYYYYY VUVU     =>YUV420SP

小結

本篇文章為大家介紹了什麼是YUV,YUV和取樣格式及其存儲格式。這裡並沒有介紹RGB與YUV之間的轉換,有興趣的同學可以自行查閱相關資訊。

YUV格式是做音影片直播的一個基本知識點,所以這也是我音影片直播系列文章中的一節,希望大家喜歡,如有不足也請指正。

後面我還會有更多精彩的文章,也希望大家關注我的頭條號。

參考

  1. 百度百科 https://baike.baidu.com/item/YUV/3430784?fr=aladdin
  2. http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html