淺述YUV顏色格式

來源:互聯網
上載者:User
  • 淺述YUV顏色格式
  • 1 起因
  • 2 根源
  • 3 對比
  • 4 參考
淺述 YUV顏色格式 ——從Xvid解碼偏色問題說起  

(陳雲川 ybc2084@163.com UESTC,CD 2007-04-19)

1 起因 事情的起因是兩個星期前,我在用Xvid對一個MPEG-4碼流進行解碼的時候,發現解碼出來的視頻序列存在偏藍的問題。當時指定的色場空間是YV12,我記得YV12是YUV4:2:0的顏色格式。但出來的結果顯然不對。

2 根源 昨晚對幾種YUV顏色格式進行了研究,恍然發現了問題的所在。

YUV格式分為兩種:緊縮YUV格式(packed)和平面YUV格式(planar)。

在緊縮YUV格式中,亮度分量Y(luminance)、兩個色度分量U和V(chrominance)是緊挨著存放在一個單獨的矩陣中的——這和RGB的存放方式類似,RGB都是以緊縮格式存放的。圖 1是一個大小為4x4的緊縮YUV格式的。

圖 1 緊縮YUV格式

對於YUV4:4:4格式而言,採用緊縮格式是很合適的,但是由於YUV的另外幾種格式都是通過亞採樣(subsample)來獲得的,其亮度分量與色度分量的解析度不相同。在這樣的情況下,如果仍然採用緊縮格式進行存放,就顯得不太方便了。

平面YUV格式把YUV的三個分量分別存放在不同的矩陣中,每一個矩陣看作是一個平面,最終看到的映像是將三個平面融合在一起得到的。

在Xvid中,定義了三種YUV4:2:2格式的顏色,它們都是採用緊縮格式存放的。這三種YUV4:2:2顏色格式的名稱分別是:YUY2、UYVY、YVYU,它們對應的FOURCC碼如下:0x32595559、0x59565955、0x55595659。有關FOURCC碼,請參見[1]。

Xvid定義了兩種YUV4:2:0格式的顏色,它們是採用平面格式存放的。這兩種YUV4:2:0顏色格式的名稱分別是:I420、YV12,它們對應的FOURCC碼分別是:0x30323449、0x32315659。

仍然以4x4大小的映像為例,說明I420格式的顏色資料的存放方式, 2所示。

圖 2 I420平面YUV格式

對於同樣大小的映像,YV12格式的存放方式 3所示。

圖 3 YV12平面YUV格式

可以看到,YV12格式和I420格式的不同之處在於:V平面和U平面的位置不同。在I420格式中,U平面緊跟在Y平面之後,然後才是V平面;但是對於YV12格式,情況剛好反過來,Y平面之後是V平面,然後才是U平面。

在存在偏色的程式中,我是將Xvid的解碼輸出以Y平面、然後U平面、最後V平面的順序輸出到檔案中的,也就是和I420的顏色平面順序相同,這也是YUV Viewer要求的平面順序。我犯下的錯誤是:把YV12和I420搞混了。我指定給Xvid的輸出格式是YV12,Xvid忠實地執行了我的命令,按照先Y平面、然後V平面、最後U平面的方式輸出瞭解碼後的映像,然而我在把資料儲存到檔案中的時候卻是按照I420的順序儲存的。顯然,這樣不出錯才怪呢。

3 對比 以下來對比一下偏色映像和正常解碼後得到的映像(通過YUV Viewer得到)。圖 4是指定YV12輸出格式時的映像,顏色明顯不對;圖 5是指定I420輸出格式後得到的正常映像,與圖 4對比,正誤立現。

圖 4 偏色映像

圖 5 正常映像

4 參考 [1] http://www.fourcc.org/ 。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.