圖像格式詳細解析_第1頁
圖像格式詳細解析_第2頁
圖像格式詳細解析_第3頁
圖像格式詳細解析_第4頁
圖像格式詳細解析_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 YUV格式詳解1.什么是RGB?RGB是紅綠藍三原色的意思,R=Red、G=Green、B=Blue。2.什么是YUV/YCbCr/YPbPr?亮 度信號經(jīng)常被稱作Y,色度信號是由兩個互相獨立的信號組成。視顏色系統(tǒng)和格式不同,兩種色度信號經(jīng)常被稱作U和V或Pb和Pr或Cb和Cr。這些都是由不 同的編碼格式所產(chǎn)生的,但是實際上,他們的概念基本相同。在DVD中,色度信號被存儲成Cb和CrC代表顏色,b代表藍色,r代表紅色。3.什么是4:4:4、4:2:2、4:2:0?在 最近十年中,視頻工程師發(fā) 現(xiàn)人眼對色度的敏感程度要低于對亮度的敏感程度。在生理學中,有一條規(guī)律,那就是人類視網(wǎng)膜上的視網(wǎng)膜桿細

2、胞要多于視網(wǎng)膜錐細 胞,說得通俗一些,視網(wǎng)膜桿細胞的作用就是識別亮度,而視網(wǎng)膜錐細胞的作用就是識別色度。所以,你的眼睛對于亮和暗的分辨要比對顏色的分辨精細一些。正是 因為這個,在我們的視頻存儲中,沒有必要存儲全部顏色信號。既然眼睛看不見,那為什么要浪費存儲空間或者說是金錢來存儲它們呢?像Beta或VHS之類的消費用錄像帶就得益于將錄像帶上的更多帶寬留給黑白信號被稱作“亮度”,將稍少的帶寬留給彩色信號被稱作“色度”。在MPEG2也就是DVD使用的壓縮格式當中,Y、Cb、Cr信號是分開儲存的這就是為什么分量視頻傳輸需要三條電纜。其中Y信號是黑白信號,是以全分辨率存儲的。但是,由于人眼對于彩色信息的

3、敏感度較低,色度信號并不是用全分辨率存儲的。色 度信號分辨率最高的格式是4:4:4,也就是說,每4點Y采樣,就有相對應的4點Cb和4點Cr。換句話說,在這種格式中,色度信號的分辨率和亮度信號的 分辨率是相同的。這種格式主要應用在視頻處理設備內(nèi)部,防止畫面質量在處理過程中降低。當圖像被存儲到Master Tape,比方D1或者D5,的時候,顏色信號通常被削減為4:2:2。在圖中,你可以看到4:4:4格式的亮度、色度采樣分布。就像圖中所表示的,畫面中每個象素都有與之對應的色度和亮度采樣信息。/center其 次就是4:2:2,就是說,每4點Y采樣,就有2點Cb和2點Cr。在這種格式中,色度信號的掃

4、描線數(shù)量和亮度信號一樣多,但是每條掃描線上的色度采樣點 數(shù)卻只有亮度信號的一半。當4:2:2信號被解碼的時候,“缺失”的色度采樣,通常由一定的內(nèi)插補點算法通過它兩側的色度信息運算補充???:2:2格式亮度、色度采樣的分布情況。在這里,每個象素都有與之對應的亮度采樣,同時一半的色度采樣被丟棄,所以我們看到,色度采樣信號每隔 一個采樣點才有一個。當著張畫面顯示的時候,缺少的色度信息會由兩側的顏色通過內(nèi)插補點的方式運算得到。就像上面提到的那樣,人眼對色度的敏感程度不如亮 度,大多數(shù)人并不能分辨出4:2:2和4:4:4顏色構成的畫面之間的不同。色度信號分辨率最低的格式,也就是DVD所使用的 格式,就是

5、4:2:0了。事實上4:2:0是一個混亂的稱呼,按照字面上理解,4:2:0應該是每4點Y采樣,就有2點Cb和0點Cr,但事實上完全不是 這樣。事實上,4:2:0的意思是,色度采樣在每條橫向掃描線上只有亮度采樣的一半,掃描線的條數(shù)上,也只有亮度的一半!換句話說,無論是橫向還是縱向, 色度信號的分辨率都只有亮度信號的一半。舉個例子,如果整張畫面的尺寸是720*480,那么亮度信號是720*480,色度信號只有360*240。在 4:2:0中,“缺失”的色度采樣不單單要由左右相鄰的采樣通過內(nèi)插補點計算補充,整行的色度采樣也要通過它上下兩行的色度采樣通過內(nèi)插補點運算獲得。這 樣做的原因是為了最經(jīng)濟有效

6、地利用DVD的存儲空間。誠然,4:4:4的效果很棒,但是如果要用4:4:4存儲一部電影,我們的DVD盤的直徑至少要有兩 英尺六十多厘米!4.什么是YV12,什么是YUY2?YUV格式通常有兩大類:打包packed格式和平面planar格式。前者將YUV分量存放在同一個數(shù)組中,通常是幾個相鄰的像素組成一個宏像 素macro-pixel;而后者使用三個數(shù)組分開存放YUV三個分量,就像是一個三維平面一樣。表2.3中的YUY2到Y211都是打包格式,而 IF09到YVU9都是平面格式。注意:在介紹各種具體格式時,YUV各分量都會帶有下標,如Y0、U0、V0表示第一個像素的YUV分量,Y1、 U1、V1

7、表示第二個像素的YUV分量,以此類推。¨ YUY2和YUYV格式為每個像素保留Y分量,而UV分量在水平方向上每兩個像素采樣一次。一個宏像素為4個字節(jié),實際表示2個像素。4:2:2的意思為一個宏像素中有4個Y分量、2個U分量和2個V分量。圖像數(shù)據(jù)中YUV2分量排列順序如下:Y0 U0 Y1 V0    Y2 U2 Y3 V2 ¨ YVYU格式跟YUY2類似,只是圖像數(shù)據(jù)中YUV分量的排列順序有所不同:Y0 V0 Y1 U0    Y2 V2 Y3 U2 ¨ UYVY格式跟YUY2類似,只是圖像數(shù)據(jù)中YUV分量的排列順序有所不同

8、:U0 Y0 V0 Y1    U2 Y2 V2 Y3 ¨ AYUV格式帶有一個Alpha通道,并且為每個像素都提取YUV分量,圖像數(shù)據(jù)格式如下:A0 Y0 U0 V0    A1 Y1 U1 V1 ¨ Y41P和Y411格式為每個像素保留Y分量,而UV分量在水平方向上每4個像素采樣一次。一個宏像素為12個字節(jié),實際表示8個像素。圖像數(shù)據(jù)中YUV分量排列順序如下:U0 Y0 V0 Y1    U4 Y2 V4 Y3    Y4 Y5 Y6 Y8 ¨ Y211格式在水平方向上Y分量每2個

9、像素采樣一次,而UV分量每4個像素采樣一次。一個宏像素為4個字節(jié),實際表示4個像素。圖像數(shù)據(jù)中YUV分量排列順序如下:Y0 U0 Y2 V0    Y4 U4 Y6 V4 ¨ YVU9格式為每個像素都提取Y分量,而在UV分量的提取時,首先將圖像分成假設干個4 x 4的宏塊,然后每個宏塊提取一個U分量和一個V分量。圖像數(shù)據(jù)存儲時,首先是整幅圖像的Y分量數(shù)組,然后就跟著U分量數(shù)組,以及V分量數(shù)組。IF09格式與YVU9類似。¨ IYUV格式為每個像素都提取Y分量,而在UV分量的提取時,首先將圖像分成假設干個2 x 2的宏塊,然后每個宏塊提取一個U分量和一個V

10、分量。YV12格式與IYUV類似。¨ YUV411、YUV420格式多見于DV數(shù)據(jù)中,前者用于NTSC制,后者用于PAL制。YUV411為每個像素都提取Y分量,而UV分量在水平方向上 每4個像素采樣一次。YUV420并非V分量采樣為0,而是跟YUV411相比,在水平方向上提高一倍色差采樣頻率,在垂直方向上以U/V間隔的方式減小 一半色差采樣5.為什么影片在VDM處理的過程中要選Fast recompress?選擇Fast recompress的原因,現(xiàn)得從Avisynth 2.5講起。Avisynth 2.5最大的特色,就是支持YV12直接處理。我們知道原始MPEG數(shù)據(jù)是YUV4:2

11、:0,也就是YV12的格式,以前我們在做DivX/XviD壓縮的時候,處理流程是:DVD/VCD(YUV 4:2:0) -> DVD2AVI(YUV 4:2:0 ->YUV4:2:2 ->YUV4:4:4 -> RGB24) -> VFAPI(RGB24) -> TMPGEnc/AviUtl/VirtualDub(RGB24) -> DivX/XviD Codec(RGB24 ->YUV4:2:0) -> MPEG-4(YUV 4:2:0)ps. VFAPI 內(nèi)部只能以 RGB24 傳遞數(shù)據(jù),所以會轉成 RGB24 輸出或是DVD/VCD(

12、YUV 4:2:0) -> MPG2DEC.DLL(YUV 4:2:0 ->YUV4:2:2) -> Avisynth 2.0.x(只能用支援YUV4:2:2 的濾鏡,不能用 RGB24/32 的 filter) -> VirtualDub(YUV 4:2:2,不能使用 VD 的 filter,因為 VD 的 filetr 都是在 RGB32 上處理,壓縮時要選 Fast recompress,才會直接原封不動的送YUV4:2:2,也就是 YUY2 的數(shù)據(jù)給 Codec 壓縮) -> DivX/XviD Codec(YUV 4:2:2 ->YUV4:2:0)

13、 -> MPEG-4(YUV 4:2:0)所以以前的處理流程中間要經(jīng)過好幾次YUV RGB 的轉換。這個轉換是有損的,做得越多次,原始的色彩信息就損失的越嚴重。而且這個轉換的計算又耗時這就可以解釋為什么我們將YV12轉為RGB輸出時會卡的多,不過,RGB的品質真的更高的多1. 處理的數(shù)據(jù)量少。YV12的資料,UV 比YUY2少一半,比RGB 24/32少更多2. 不用轉換計算所以速度快。再加上又可以防止YUV RGB 轉換的損失,豈不是一舉兩得?所以支持YV12的 Avisynth 2.5 就誕生了。但 是目前VirtualDub還是不支持 YV12,即使選 Fast recompres

14、s,VD還是會將YV12的輸入轉為 YUY2。所以要得到全程YV12處理的好處,必須使用VirtualDubMod才行,這個改版才有支持YV12。只有在選擇Fast recompress的時候,VDM才不會進行任何處理,直接將數(shù)據(jù)丟給編碼器壓縮,這樣就能保留YV12,實現(xiàn)了全程YV12。關于 RGB 跟 YUV 的轉換:計 算機彩色顯示器顯示色彩的原理與彩色電視機一樣,都是采用RRed、GGreen、BBlue相加混色的原理:通過發(fā)射出三種不同強度的電子 束,使屏幕內(nèi)側覆蓋的紅、綠、藍磷光材料發(fā)光而產(chǎn)生色彩。這種色彩的表示方法稱為RGB色彩空間表示它也是多媒體電腦技術中用得最多的一種色彩空間表

15、 示方法。根據(jù)三基色原理,任意一種色光F都可以用不同分量的R、G、B三色相加混合而成。F = r R + g G + b B 其中,r、g、b分別為三基色參與混合的系數(shù)。當三基色分量都為0最弱時混合為黑色光;而當三基色分量都為k最強時混合為白色光。調整r、g、b三個系數(shù)的值,可以混合出介于黑色光和白色光之間的各種各樣的色光。那 么YUV又從何而來呢?在現(xiàn)代彩色電視系統(tǒng)中,通常采用三管彩色攝像機或彩色CCD攝像機進行攝像,然后把攝得的彩色圖像信號經(jīng)分色、分別放大校正后得到 RGB,再經(jīng)過矩陣變換電路得到亮度信號Y和兩個色差信號RY即U、BY即V,最后發(fā)送端將亮度和色差三個信號分別進行編碼,用同一

16、信道發(fā)送 出去。這種色彩的表示方法就是所謂的YUV色彩空間表示。采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是別離的。如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機與黑白電視機的兼容問題,使黑白電視機也能接收彩色電視信號。YUV與RGB相互轉換的公式如下RGB取值范圍均為0-255:Y = 0.299R + 0.587G + 0.114BU = -0.147R - 0.289G + 0.436BV = 0.615R - 0.515G - 0.100BR = Y + 1.14VG = Y - 0.39

17、U - 0.58VB = Y + 2.03U在DirectShow 中,常見的RGB格式有RGB1、RGB4、RGB8、RGB565、RGB555、RGB24、RGB32、ARGB32等;常見的YUV格式有 YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、 YUV420等。作為視頻媒體類型的輔助說明類型Subtype,它們對應的GUID見表2.3。表2.3 常見的RGB和YUV格式GUID 格式描述MEDIASUBTYPE_RGB1 2色,每個像素用1位表示,需要調色板MEDIASUBTYPE_RGB4 16

18、色,每個像素用4位表示,需要調色板MEDIASUBTYPE_RGB8 256色,每個像素用8位表示,需要調色板MEDIASUBTYPE_RGB565 每個像素用16位表示,RGB分量分別使用5位、6位、5位MEDIASUBTYPE_RGB555 每個像素用16位表示,RGB分量都使用5位剩下的1位不用MEDIASUBTYPE_RGB24 每個像素用24位表示,RGB分量各使用8位MEDIASUBTYPE_RGB32 每個像素用32位表示,RGB分量各使用8位剩下的8位不用MEDIASUBTYPE_ARGB32 每個像素用32位表示,RGB分量各使用8位剩下的8位用于表示Alpha通道值MEDI

19、ASUBTYPE_YUY2 YUY2格式,以4:2:2方式打包MEDIASUBTYPE_YUYV YUYV格式實際格式與YUY2相同MEDIASUBTYPE_YVYU YVYU格式,以4:2:2方式打包MEDIASUBTYPE_UYVY UYVY格式,以4:2:2方式打包MEDIASUBTYPE_AYUV 帶Alpha通道的4:4:4 YUV格式MEDIASUBTYPE_Y41P Y41P格式,以4:1:1方式打包MEDIASUBTYPE_Y411 Y411格式實際格式與Y41P相同MEDIASUBTYPE_Y211 Y211格式MEDIASUBTYPE_IF09 IF09格式MEDIASUB

20、TYPE_IYUV IYUV格式MEDIASUBTYPE_YV12 YV12格式MEDIASUBTYPE_YVU9 YVU9格式下面分別介紹各種RGB格式。¨ RGB1、RGB4、RGB8都是調色板類型的RGB格式,在描述這些媒體類型的格式細節(jié)時,通常會在BITMAPINFOHEADER數(shù)據(jù)結構后面跟著 一個調色板定義一系列顏色。它們的圖像數(shù)據(jù)并不是真正的顏色值,而是當前像素顏色值在調色板中的索引。以RGB12色位圖為例,比方它的調色板中 定義的兩種顏色值依次為0x000000黑色和0xFFFFFF白色,那么圖像數(shù)據(jù)001101010111每個像素用1位表示表示對應各 像素的顏色為:

21、黑黑白白黑白黑白黑白白白。¨ RGB565使用16位表示一個像素,這16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一個字WORD,一個字等于兩個字節(jié)來操作一個像素。當讀出一個像素后,這個字的各個位意義如下:高字節(jié) 低字節(jié)R R R R R G G G G G G B B B B B可以組合使用屏蔽字和移位操作來得到RGB各分量的值:#define RGB565_MASK_RED 0xF800#define RGB565_MASK_GREEN 0x07E0#define RGB565_MASK_BLUE 0x001FR = (wPixel & RGB565_MAS

22、K_RED) >> 11; / 取值范圍0-31G = (wPixel & RGB565_MASK_GREEN) >> 5; / 取值范圍0-63B = wPixel & RGB565_MASK_BLUE; / 取值范圍0-31¨ RGB555是另一種16位的RGB格式,RGB分量都用5位表示剩下的1位不用。使用一個字讀出一個像素后,這個字的各個位意義如下:高字節(jié) 低字節(jié)X R R R R G G G G G B B B B B X表示不用,可以忽略可以組合使用屏蔽字和移位操作來得到RGB各分量的值:#define RGB555_MASK_RE

23、D 0x7C00#define RGB555_MASK_GREEN 0x03E0#define RGB555_MASK_BLUE 0x001FR = (wPixel & RGB555_MASK_RED) >> 10; / 取值范圍0-31G = (wPixel & RGB555_MASK_GREEN) >> 5; / 取值范圍0-31B = wPixel & RGB555_MASK_BLUE; / 取值范圍0-31¨ RGB24使用24位來表示一個像素,RGB分量都用8位表示,取值范圍為0-255。注意在內(nèi)存中RGB各分量的排列順序為:

24、BGR BGR BGR。通??梢允褂肦GBTRIPLE數(shù)據(jù)結構來操作一個像素,它的定義為:typedef struct tagRGBTRIPLE BYTE rgbtBlue; / 藍色分量BYTE rgbtGreen; / 綠色分量BYTE rgbtRed; / 紅色分量 RGBTRIPLE;¨ RGB32使用32位來表示一個像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。ARGB32就是帶Alpha通道的 RGB32。注意在內(nèi)存中RGB各分量的排列順序為:BGRA BGRA BGRA。通??梢允褂肦GBQUAD數(shù)據(jù)結構來操作一個像素,它的定義為:typedef s

25、truct tagRGBQUAD BYTE rgbBlue; / 藍色分量BYTE rgbGreen; / 綠色分量BYTE rgbRed; / 紅色分量BYTE rgbReserved; / 保留字節(jié)用作Alpha通道或忽略 RGBQUAD;PS:貼上兩個網(wǎng)上找到的sourcecode:RGB->YUVY = 0.299R + 0.587G + 0.114BCb = 0.564(B Y ) Cr = 0.713(R Y )代碼:uint8_t COL_RgbToYuv(uint8_t R,uint8_t G,uint8_t B, uint8_t *y,int8_t *u,int8_t *v)    float rr=R,bb=B,gg=G;    float yy,uu,vv;    yy=0.299*rr+ 0.587*gg+ 0.114*bb;    uu=-0.169*rr+ -0.331*gg+ 0.5*bb;    vv=0.5*rr+ -0.419*gg+ -0.081*bb;    if(uu>127)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論