音視頻編解碼: YUV采樣格式中的YUV444,YUV422,YUV420理解


YUV各種采樣格式的說明

通常我們用RGB表示一種彩色。計算機系統里的LCD顯示的數據就是RGB來表示每個像素的顏色。
而在我們生活里,有黑白電視機與彩色電視機兩種,拍攝節目源時不可以用兩種不同的攝像機來存放兩種圖像數據。
所以為了兼容兩種電視機,專家就引入YUV格式代替RGB,其中Y表示亮度, U和V表示色差。 黑白電視機只用Y信號, 而彩色電視機可由YUV轉換成RGB再顯示顏色。

通常我們所用的YUV格式是 ITU-R 的標准 , 也叫YCbCr.

YUV是由RGB格式的數據轉換得來。

Y    Y = 0.299 x R + 0.587 x G + 0.114 x B + 0 
U    Cb = -0.169 x R - 0.331 x G + 0.499 x B + 128 
V    Cr = 0.499 x R - 0.418 x G - 0.0813 x B + 128 
 
Y    Y = 0.299 x R + 0.587 x G + 0.114 x B + 0 
U    Cb = -0.169 x R - 0.331 x G + 0.499 x B + 128 
V    Cr = 0.499 x R - 0.418 x G - 0.0813 x B + 128 

///////
YUV4:4:4 
其實就是YUV的數據各占用8位, 每個像素都由YUV組成

同一行的相鄰4個像素數據:   Y0U0V0    Y1U1V1   Y2U2V2  Y3U3V3
              存儲時:    Y0U0V0    Y1U1V1   Y2U2V2  Y3U3V3  //即每個像素YUV的數據都會存放起來
為什么叫4:4:4 , 意思就是4個像素里的數據有4個Y, 4個U, 4個V

 

//////
YUV4:2:2
其實絕大部分相鄰的兩個像素,數據差異應不大。所以為了節點空間便於存儲,丟失每個像素的部分數據。
專家研究表明我們人對亮度比較敏感,而對色彩不怎么敏感。所以每個像素的亮度Y數據是絕對不動的,而色差數據可以進行丟棄。

同一行的相鄰4個像素數據:   Y0U0V0    Y1U1V1   Y2U2V2  Y3U3V3
             存儲時:   Y0U0      Y1V1    Y2U2   Y3V3  // 每兩個相鄰的像素, 一個丟棄V數據,一個丟棄U數據
為什么叫4:2:2,  意思就是相鄰的4個像素里有4個Y, 2個U, 2個V。 按上面存儲的順序也叫YUYV.
 
但還原成RGB數據必須需要YUV, 像第一個像素只有Y0U0是沒法還原的,這時只能用下一像素的V1數據。
      還原時的YUV:  [Y0U0V1] [Y1U0V1] [Y2U2V3] [Y3U2V3]  // 這樣還原理論上會對圖像的質量有影響的,但我們看不出來的.

 

/////
YUV4:2:0
專家們進一步研究表示,每一行的相鄰兩個像素與下一行同位置的兩個像素數據差異不大,可以進一步的丟數據。

如兩行的像素數據:
           Y00U00V00   Y01U01V01   Y02U02V02   Y03U03V03  ....  
           Y88U88V88   Y89U89V89   Y90U90V90   Y91U91V91  ....
 
存儲時:    Y00U00    Y01      Y02U02    Y03    // 每個像素的Y數據保留, 兩個像素數據只保留一個U數據。這一行不保留V數據(YUV:  420)
           Y88V88    Y89      Y90V90    Y91    // ....  兩個像素數據只保留一個V數據, 這行不保留U數據(YUV:  402)
 
還原時只能相同位置的上下兩行4個像素結合還原:
        Y00U00V88  Y01U00V88  Y02U02V90  Y03U02V90
        Y88U00V88  Y89U00V88  Y90U02V90  Y91U02V90

YUV各種采樣格式的比較 

我們以一張大小為1280*720的圖像為例:
在RGB 圖像中,每個像素點都有紅、綠、藍三個原色,其中每種原色都占用 8 bit,也就是一個字節,那么一個像素點也就占用 24 bit,也就是三個字節。
一張 1280 * 720 大小的圖片,就占用 1280 * 720 * 3 / 1024 / 1024 = 2.63 MB 存儲空間。

【使用YUV4:4:4格式采樣的大小】
YUV4:4:4格式意味着Y、U、V三個分量的采集比例相同,因此在生成的圖像里,每個像素的三個分量信息完整,都是8bit,也就是一個字節。
那么它的采樣大小為
3 * 1280 * 720 / 1024 / 1024 = 2.63MB
與原始RGB圖像相比大小是一樣的。

【使用YUV4:2:2格式采樣的大小】
YUV4:2:2格式的采樣特征是在每相臨的兩個像素,一個丟棄U分量,一個丟棄V分量,那么它的采樣大小為:
(8 + 8) * 1280 * 720 / 8 / 1024 / 1024 = 1.76MB
可以看到 YUV 4:2:2 采樣的圖像比 RGB 模型圖像節省了三分之一的存儲空間,在傳輸時占用的帶寬也會隨之減少。

【使用YUV4:2:0格式采樣的大小】
YUV4:2:0格式的采樣特征是所有像素都保留Y分量,同一行的像素只保留U分量,或者是V分量,同一行中相臨的兩個像素只保留同一個Y分量或者U分量。
那么它的采樣大小為:
(8 * 1280 * 720 + 8 * 1280 * 720 / 2 / 2 + 8 * 1280 * 720 / 2 / 2) / 8 / 1024 / 1024 = 1.32MB
可以看到 YUV 4:2:0 采樣的圖像比 RGB 模型圖像節省了一半的存儲空間,因此它也是比較主流的采樣方式。

 

參考鏈接:

1.一文讀懂 YUV 的采樣與格式

2.最簡單解釋 YUV444,YUV422,YUV420中的4,2,0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM