圖像YUV格式介紹


1 YUV格式簡介

  YUV格式,與我們熟知的RGB類似,YUV也是一種顏色編碼方法,主要用於電視系統以及模擬視頻領域,它將亮度信息(Y)與色彩信息(UV)分離,沒有UV信息一樣可以顯示完整的圖像,只不過是黑白的,這樣的設計很好地解決了彩色電視機與黑白電視的兼容問題。並且,YUV不像RGB那樣要求三個獨立的視頻信號同時傳輸,所以用YUV方式傳送占用極少的頻寬

  YUV格式有兩大類:planarpacked。對於planarYUV格式,先連續存儲所有像素點的Y,緊接着存儲所有像素點的U,隨后是所有像素點的V。對於packedYUV格式,每個像素點的Y,U,V是連續交替存儲的。

  YUV,分為三個分量,“Y”表示明亮度(LuminanceLuma),也就是灰度值;而“U”“V” 表示的則是色度(ChrominanceChroma),作用是描述影像色彩及飽和度,用於指定像素的顏色。

2 YUV的存儲格式

  YUV碼流的存儲格式其實與其采樣的方式密切相關,主流的采樣方式有三種,YUV4:4:4YUV4:2:2YUV4:2:0,關於其詳細原理,可以通過網上其它文章了解,這里我想強調的是如何根據其采樣格式來從碼流中還原每個像素點的YUV值,因為只有正確地還原了每個像素點的YUV值,才能通過YUVRGB的轉換公式提取出每個像素點的RGB值,然后顯示出來。

 簡介如下。

    (1) YUV 4:4:4采樣,每一個Y對應一組UV分量。

    (2) YUV 4:2:2采樣,每兩個Y共用一組UV分量。 

    (3) YUV 4:2:0采樣,每四個Y共用一組UV分量。

3 YUV的內存存儲格式

  下面介紹形式給出常見的YUV碼流的存儲方式,並在存儲方式后面附有取樣每個像素點的YUV數據的方法,其中,CbCr的含義等同於UV

  (1) YUVY 格式 (屬於YUV422

  YUYVYUV422采樣的存儲格式中的一種,相鄰的兩個Y共用其相鄰的兩個CbCr,分析,對於像素點Y'00Y'01 而言,其CbCr的值均為 Cb00Cr00,其他的像素點的YUV取值依次類推。 

  (2) UYVY 格式 (屬於YUV422

  UYVY格式也是YUV422采樣的存儲格式中的一種,只不過與YUYV不同的是UV的排列順序不一樣而已,還原其每個像素點的YUV值的方法與上面一樣。

  (3) YUV422P(屬於YUV422

  YUV422P也屬於YUV422的一種,它是一種Plane模式,即平面模式,並不是將YUV數據交錯存儲,而是先存放所有的Y分量,然后存儲所有的UCb)分量,最后存儲所有的VCr)分量,如上圖所示。其每一個像素點的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即兩個Y共用一個UV。比如,對於像素點Y'00Y'01 而言,其CbCr的值均為 Cb00Cr00

  (4YV12YU12格式(屬於YUV420

  YU12YV12屬於YUV420格式,也是一種Plane模式,將YUV分量分別打包,依次存儲。其每一個像素點的YUV數據提取遵循YUV420格式的提取方式,即4Y分量共用一組UV。注意,上圖中,Y'00Y'01Y'10Y'11共用Cr00Cb00,其他依次類推。

  (5NV12NV21(屬於YUV420

  NV12NV21屬於YUV420格式,是一種two-plane模式,即YUV分為兩個Plane,但是UVCbCr)為交錯存儲,而不是分為三個plane。其提取方式與上一種類似,即Y'00Y'01Y'10Y'11共用Cr00Cb00

  YUV420 planar數據, 以720×488大小圖象YUV420 planar為例

  其存儲格式是:大小為(720×480×3>>1)字節,分為三個部分:Y,U

  Y分量:    (720×480)個字節   

  U(Cb)分量:(720×480>>2)個字節

  V(Cr)分量:(720×480>>2)個字節 

  三個部分內部均是行優先存儲,三個部分之間是Y,U,V 順序存儲。即YUV數據的0--720×480字節是Y分量值,720×480--720×480×5/4字節是U分量,720×480×5/4 --720×480×3/2字節是V分量

4 YUV的格式轉換

  以YUV42YUV420轉換為例,如下:

  最簡單的方式:

  YUV4:2:2 ---> YUV4:2:0  Y不變,將UV信號值在行(垂直方向)在進行一次隔行抽樣。 YUV4:2:0 ---> YUV4:2:2  Y不變,將UV信號值的每一行分別拷貝一份形成連續兩行數據。

  在YUV420中,一個像素點對應一個Y,一個4X4的小方塊對應一個UV。對於所有YUV420圖像,它們的Y值排列是完全相同的,因為只有Y的圖像就是灰度圖像。YUV420spYUV420p的數據格式它們的UV排列在原理上是完全不同的。420p它是先把U存放完后,再存放V,也就是說UV它們是連續的。而420sp它是UVUV這樣交替存放的。(見下圖有了上面的理論,我就可以准確的計算出一個YUV420在內存中存放的大小。width * hight =Y(總和) U = Y / 4   V = Y / 4 ,所以YUV420 數據在內存中的長度是 width * hight * 3 / 2

 

 

 

 

    

 


免責聲明!

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



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