歡迎訪問易龍三維科技官網,專注研發數碼打印機20年!
全國咨詢熱線:400-8316492
聯系我們
400-8316492

手機:13823737137

郵箱:3485053954@qq.com

QQ:3485053954

地址:深圳市龍崗區橫坪公路89號數字硅谷E棟4樓

當前位置:首頁 > 行業新聞 > 公司動態

YUV圖像淺析(1)

時間:2025-01-13 09:30:53 作者:147小編 點擊:

undefined
undefined
undefined
undefined
undefined

undefined

 

0.引言

本篇文案重點講解YUV格式和內存擺列,看完本篇文案,能夠快速對YUV格式有個更清楚的認識。

從下圖就能夠看出,YUV4:1:1,YUV4:2:0,就壓縮的最厲害。一般在網絡傳輸時,通常在送到編碼之前,都轉換作為這2種格式。

1.YUV簡述

yuv是歐洲電視系統采用的顏色編碼辦法之一,包括一個亮度信號Y和兩個色差信號U、V。yuv格式能夠優化彩色視頻信號數據的存儲方式。與RGB格式相比,最大的優良在于只需占用極少的數據存儲空間,使得數據傳輸更為簡易。

yuv中,“Y”暗示亮度,便是灰階值;而“U”和“V”暗示的則是色度,色度的功效是記錄圖像色彩及飽和度。“亮度”是透過輸入信號來創立的,辦法將信號的特定部分疊加到一塊“色度”則定義了顏色的兩個方面─色調與飽和度,分別用Cr和Cb來暗示。其中,Cr反映了RGB輸入信號紅色部分與RGB信號亮度值之間的差異。而Cb反映的是RGB輸入信號藍色部分與RGB信號亮度值之間的差異。

采用yuv色彩空間的重要性是它的亮度信號y和色度信號u、v是分離的。倘若僅有y信號分量而u、v分量,那樣這般暗示的圖像便是黑白灰度圖像。彩色電視采用yuv空間正是為了用亮度信號y處理彩色電視機與黑白電視機的兼容問題,使黑白電視機能接收彩色電視信號。

2.YUV采樣格式

重點的采樣格式有YCbCr:4:4:4、YCbCr:4:2:2、YCbCr:4:2:0、以及YCbCr:4:2:1,舉例說明中YCbCr:4:1:1為常用的采樣格式,其含義為:每一個保留一個8bit的亮度值(便是Y值),每4個點保留一個Cr和Cb值,Cr和Cb像素點在肉眼中的感覺不會起太大的變化。因此,原來用RGB(R,G,B都是8bit unsigned)模型,即1個點需要24bits。如果按YCbCr:4:1:1采樣后,平均每一個點僅需要8+8/4+8/4=12bits。這般就把圖像的數據壓縮了一半。下面對這幾種格式做仔細介紹。

(1)YUV 4:4:4

YUV三個采樣數據完整存儲,不存在任何數據損失與壓縮,當然數據存儲體積不變,與格式相同。如下圖:

每一個交叉暗示一個Y值數據,每一個圓圈暗示一個U值與V值數據,圖中為每一個Y值對應一個U值與V值,整體為一個像素點,該像素點數據保留完整。

YUV 4:4:4圖像

交錯格式存儲如下:

YUV數據在內存中的存儲方式,每3個為一組,為方便32位計算機的按位直接讀取,一般在每組YUV值后會填充一個A值,使得每次讀取數值為32位,增多讀取速度。

YUV 4:4:4內存存儲方式

(2)YUV 4:2:2

灰度值數據Y完整讀取,色度U與V僅保存本來的一半,取每行像素點的奇數位的UV值進行保留。此處UV數據壓縮百分之五十,Y數據不變,壓縮比為1-(4+2+2)/(4+4+4)*100%=33.33%)。因像素點在屏幕表示后,圖像顏色的失真針對觀察者來講并不會影響圖像的質量與觀賞度,因此能夠按此法進行壓縮。如下圖所示:

YUV 4:2:2圖像

交錯格式存儲如下:

YUV 4:2:2 內存存儲方式

每一個交叉暗示一個Y值數據,每一個圓圈暗示一個U值與V值數據,圖中為每兩個Y值對應一個U值與V值,整體為兩個像素點,兩像素點共用一個相同的色度差,利用物體顏色在兩個像素的距離內不會變化過大的原理,恰當壓縮圖像數據。

為YUV數據在內存中的存儲方式,每4個為一組,其中奇數位為Y值,偶數位為U值與V值,32位計算機在讀取時能夠一次恰好讀取一組YUV數據,其中包含兩個Y值與其共用的一個U值與V值。

(3)YUV 4:1:1

灰度值數據Y依舊完整讀取,而色度U與V僅保存本來的四分之一,取每兩行像素點的左上位置的UV值進行保留。此處數據壓縮百分之七十五,Y數據不變,壓縮比為1-(4+1+1)/(4+4+4)*100%=50%)。一樣利用因像素點在屏幕表示后,圖像顏色的失真針對觀察者來講并不會影響圖像的質量與觀賞度,既然YUV4:2:2能夠橫向壓縮,因此YUV 4:1:1能夠增多縱向壓縮,達到更加高的壓縮比例,但需要付出數據較難處理的代價。如下圖所示:

每一個交叉暗示一個Y值數據,每一個圓圈暗示一個U值與V值數據,圖中為每四個Y值對應一個U值與V值,整體為四個像素點,四個像素點共用一個相同的色度差,一樣利用物體顏色在兩個像素的距離內不會變化過大的原理,恰當壓縮圖像數據。內存擺列如下圖所示:

內存存儲方式YUV 4:1:1內存存儲方式

上圖中,為YUV 4:1:1數據在內存中的存儲方式,與YUV 4:4:4、YUV 4:2:2區別的是,雖然YUV 4:1:1壓縮比最大,需要存儲的數據最少,然則其存儲方式是最為繁雜的,需要運用三個Buffer依次存取Y,U,V,三值,此存儲方式節約了存儲內存空間與數據進行傳送時的網絡傳輸帶寬,增多了編程人員對數據還原表示處理的難度。

確定圖像的存儲方式關系到數據在內存中的存儲方式,當進行圖像合并時,需要對內存中的數據進行修改,以達到合并圖像的效果,因此認識圖像存儲方式至關重要。

重視:盡管上面列舉出了有些常用的格式,然則還是有非常多格式是有用到的,實質遇到采集與編碼格式區別,或解碼與播放格式區別,就需要進行格式轉換。理解清楚這些格式轉換就曉得怎么去轉換了,當然倘若搞不清這種數據關系,有庫能夠用。

3.其它

如WebRTC庫中源碼針對圖像類的命名為I420,初步猜測為YUV4:2:0格式。但在interface文件I420videoframe.h中觀察創建圖像的辦法與其參數:

int CreateFrame(int size_y,const uint8_t & buffer_y,int size_U,const uint8_t & buffer_U, int size_V,const uint8_t & buffer_V,int width,intheigth,int stride_y,int stride_u,int stride_v)

推斷其實質存儲方式為YUV4:1:1,由于參數中包括三個Buffer,分別為bufferY,bufferU以及bufferV,以及她們對應的體積。

事實上,WebRTC做為視頻通話的研發庫,其思慮最優先的必然是最大化壓縮數據,減少需要網絡傳輸的數據,減少視頻通話與現實中的延遲,在使得視頻通話順暢的基本上,再進行畫質的改善。因此呢WebRTC選取YUV4:1:1為恰當選取,但此圖像格式處理的方式較為困難,后面文案再介紹下怎么轉換的算法。

4.總結

本文用一篇非常簡短的文案,再次講述了YUV格式和內存擺列,后面有機會再繼續講講一些轉換算法和RGB格式。歡迎關注,保藏,轉發,分享。

后期關于項目知識,會更新在微X公眾號“記錄世界 from antonio”,歡迎關注

  • 免責聲明:部分文章信息來源于網絡以及網友投稿,本網站只負責對文章進行整理、排版、編輯,是出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其內容的真
  • 實性,如本站文章和轉稿涉及版權等問題,請作者在及時聯系本站,我們會盡快刪除處理問答,若不聯系則默認允許本站轉載。
  • 上一篇:視頻號直播帶貨怎么做?這3個數據指標很重要
  • 下一篇:奧熱龍(Aurelon)的色彩管理軟件PrintFactory