【視頻處理】YUV格式說明


YUV,是一種顏色編碼方法,Y表示明亮度(Luminance、Luma),U和V則是色度、濃度(Chrominance、Chroma)。

YUV,Y`UV,YCbCr,YPbPr等都可以稱為YUV,彼此有重疊。

YUV和Y`UV通常用來描述模擬信號YCbCr與YPbPr則是用來描述數位的影像信號

YUV顏色編碼方法相比於RGB的優勢體現在兩個方面:

將亮度信息與色彩信息分離,沒有色彩信息可以顯示完整的圖像,很好地解決了彩色電視機與黑白電視的兼容問題;

YUV不像RGB要求三個獨立的視頻信號同時傳輸,用YUV方式傳送占用極少的頻寬。

YUV存儲格式,主要描述像素的Y、U、V分量排列方式,分為兩種格式:緊縮格式和平面格式。

緊縮格式(packed formats):將Y、U、V值儲存成Macro Pixels陣列,和RGB的存放方式類似。

平面格式(planar formats):將Y、U、V的三個分量分別存放在不同的矩陣中。

YUV采樣方式,主要描述像素Y、U、V分量采樣比例,即表達每個像素時,Y、U、V分量的數目,通常有三種方式:YUV4:4:4,YUV4:2:2,YUV4:2:0。

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

YUV4:4:4采樣,每一個Y對應一組UV分量;YUV4:2:2采樣,每兩個Y共用一組UV分量;YUV4:2:0采樣,每四個Y共用一組UV分量。

 

常見YUV格式說明:YV12、IYUV、I420、NV12、NV21 采樣方式都是4:2:0,其存儲格式都是平面格式,下面簡要說明以上常見格式的內存布局。

YV12

  所有 Y 樣例都會作為不帶正負號的char值組成的數組首先顯示在內存中。此數組后面緊接着所有 V (Cr) 樣例。V 平面的跨距為 Y 平面跨距的一半,V 平面包含的行為 Y 平面包含行的一半。V 平面后面緊接着所有 U (Cb) 樣例,它的跨距和行數與 V 平面相同。

 

IYUV和I420

   IYUV、I420和YV12的內存布局格式是一樣的,只是U、V分量的順序是相反的,IYUV和I420格式中,U分量緊跟Y分量后,V分量緊跟U分量后,如圖所示。

 

NV12

  所有 Y 樣例都會作為由不帶正負號的char值組成的數組首先顯示在內存中,並且行數為偶數。Y 平面后面緊接着一個由不帶正負號的char值組成的數組,其中包含了打包的 U (Cb) 和 V (Cr) 樣例,如圖 所示。當組合的 U-V 數組被視為一個由 little-endian WORD值組成的數組時,LSB 包含 U 值,MSB 包含 V 值。NV12 是用於 DirectX VA 的首選 4:2:0 像素格式。預期它會成為支持 4:2:0 視頻的 DirectX VA 加速器的中期要求。

 

NV21

  NV21和NV12的內存布局是一樣的,只是U、V分量交錯存儲的順序是相反的,NV21格式中,是以V-U的交錯方式存儲,如圖所示。

 

參考資料:

http://www.fourcc.org/yuv.php

http://wenzongliang.iteye.com/blog/1902608

 


免責聲明!

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



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