音影片直播技術–YUV影片格式詳解
- 2020 年 4 月 2 日
- 筆記
什麼是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格式是做音影片直播的一個基本知識點,所以這也是我音影片直播系列文章中的一節,希望大家喜歡,如有不足也請指正。
後面我還會有更多精彩的文章,也希望大家關注我的頭條號。
參考
- 百度百科 https://baike.baidu.com/item/YUV/3430784?fr=aladdin
- http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html