音視頻基礎知識-圖像篇

1. 圖像的數(shù)值表示

1.1 RGB

  • 浮點表示:取值范圍為0.0~1.0,在 OpenGL ES 中對每一個子像素點的表示使用的就是這種表達方式

  • 整數(shù)表示:取值范圍為0~255或者00~FF,8個 bit 表示一個子像素,32個 bit 表示一個像素,這就是類似于某些平臺上表示圖像格式的 RGBA_8888 數(shù)據(jù)格式。比如,Android平臺上RGB_565的表示方法為16 bit 表示一個像素,R用5個 bit 來表示,G用6個 bit 來表示,B用 5個 bit 來表示

對于一幅圖像,一般使用整數(shù)表示方法來進行描述,比如計算一張 1280×720的RGBA_8888圖像的大小,可采用如下方式:

1280 * 720 * 4 = 3.516MB

這也是位圖(bitmap)在內(nèi)存中所占用的大小,所以每一張圖像的裸數(shù)據(jù)都是很大的。對于圖像的裸數(shù)據(jù)來講,直接在網(wǎng)絡上進行傳輸也是不太可能的,所以就有了圖像的壓縮格式,比如JPEG壓縮:JPEG是靜態(tài)圖像壓縮標準,由ISO制定。JPEG圖像壓縮算法在提供良好的壓縮性能的同時,具有較好的重建質(zhì)量。這種算法被廣泛應用于圖像處理領域,當然其也是一種有損壓縮。在很多網(wǎng)站如淘寶上使用的都是這種壓縮之后的圖片,但是這種壓縮不能直接應用于視頻壓縮,因為對于視頻來講,還有一個時域上的因素需要考慮,不僅僅要考慮幀內(nèi)編碼,還要考慮幀間編碼。視頻采用的是更成熟的算法,有興趣的朋友可以自行展開了解。

1.2 YUV

對于視頻幀的裸數(shù)據(jù)表示,其實更多的是YUV數(shù)據(jù)格式的表示, YUV主要應用于優(yōu)化彩色視頻信號的傳輸,使其向后兼容老式黑白電 視。與RGB視頻信號傳輸相比,它最大的優(yōu)點在于只需要占用極少的頻 寬(RGB要求三個獨立的視頻信號同時傳輸)。其中“Y”表示明亮度 (Luminance或Luma),也稱灰階值;而“U”和“V”表示的則是色度 (Chrominance或Chroma),它們的作用是描述影像的色彩及飽和度, 用于指定像素的顏色。“亮度”是透過RGB輸入信號來建立的,方法是將 RGB信號的特定部分疊加到一起?!吧取眲t定義了顏色的兩個方面——色調(diào)與飽和度,分別用Cr和Cb來表示。其中,Cr反映了RGB輸入信號 紅色部分與RGB信號亮度值之間的差異,而Cb反映的則是RGB輸入信 號藍色部分與RGB信號亮度值之間的差異。

之所以采用YUV色彩空間,是因為它的亮度信號Y和色度信號U、 V是分離的。如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解 決彩色電視機與黑白電視機的兼容問題,使黑白電視機也能接收彩色電 視信號,最常用的表示形式是Y、U、V都使用8個字節(jié)來表示,所以取值范圍就是0~255。在廣播電視系統(tǒng)中不傳輸很低和很高的數(shù)值,實際 上是為了防止信號變動造成過載,因而把這“兩邊”的數(shù)值作為“保護 帶”,不論是Rec.601還是BT.709的廣播電視標準中,Y的取值范圍都是 16~235,UV的取值范圍都是16~240。

YUV最常用的采樣格式是4:2:0,4:2:0并不意味著只有Y、Cb 而沒有Cr分量。它指的是對每行掃描線來說,只有一種色度分量是以 2:1的抽樣率來存儲的。相鄰的掃描行存儲著不同的色度分量,也就是 說,如果某一行是 4:2:0,那么其下一行就是4:0:2,再下一行是 4:2:0,以此類推。對于每個色度分量來說,水平方向和豎直方向的 抽樣率都是2:1,所以可以說色度的抽樣率是4:1。對非壓縮的8比特 量化的視頻來說,8×4的一張圖片需要占用48字節(jié)的內(nèi)存(如下圖所 示)。


yuv.png

相較于RGB,我們可以計算一幀為1280×720 的視頻幀,用 YUV420P 的格式來表示,其數(shù)據(jù)量的大小如下:

1280 * 720 * 1 + 1280 * 720 * 0.5 = 1.318MB

如果 fps 是24,按照一般電影的長度90分鐘來 計算,那么這部電影用 YUV420P 的數(shù)據(jù)格式來表示的話,其數(shù)據(jù)量的大小就是:

1.318MB * 24fps * 90min * 60s = 166.8GB

所以僅用這種方式來存儲電影肯定是不可行的,更別說在網(wǎng)絡上進行流媒體播放了,那么如何對電影進行存儲以及流媒體播放呢?答案是需要進行視頻編碼。

2. 視頻編碼

視頻壓縮是通過去除冗余信息來進行壓縮的。相較于音頻數(shù)據(jù),視頻數(shù)據(jù)有極強的相關性,也就是說有大量的冗余信息,包括空間上的冗余信息和時間上的冗余信息。使用幀間編碼技術(shù)可以去除時間上的冗余信息,具體包括以下幾個部分:

  • 運動補償:運動補償是通過先前的局部圖像來預測、補償當前的局部圖像,它是減少幀序列冗余信息的有效方法。
  • 運動表示:不同區(qū)域的圖像需要使用不同的運動矢量來描述運動信息。
  • 運動估計:運動估計是從視頻序列中抽取運動信息的一整套技術(shù)。

使用幀內(nèi)編碼技術(shù)可以去除空間上的冗余信息。

前面有提到過圖像編碼標準JPEG,對于視頻,ISO同樣也制定了標準:Motion JPEG即MPEG,MPEG算法是適用于動態(tài)視頻的壓縮算法,它除了對單幅圖像進行編碼外,還利用圖像序列中的相關原則去除冗余,這樣可以大大提高視頻的壓縮比。截至目前,MPEG的版本一直在不斷更新中,主要包括這樣幾個版本:MPEG1(用于VCD)、 MPEG2(用于DVD)、MPEG4 AVC(現(xiàn)在流媒體使用最多的就是它了)。

相比較于ISO制定的MPEG的視頻壓縮標準,ITU-T制定的H.261、 H.262、H.263、H.264一系列視頻編碼標準是一套單獨的體系。其中,H.264集中了以往標準的所有優(yōu)點,并吸取了以往標準的經(jīng)驗,采用的是簡潔設計,這使得它比 MPEG4 更容易推廣?,F(xiàn)在使用最多的就是 H.264 標準,H.264創(chuàng)造了多參考幀、多塊類型、整數(shù)變換、幀內(nèi)預測等新的壓縮技術(shù),使用了更精細的分像素運動矢量(1/4、1/8)和新一代的環(huán)路濾波器,這使得壓縮性能得到大大提高,系統(tǒng)也變得更加完善。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 音視頻之所以叫音視頻是因為他由音頻和視頻構(gòu)成,我們平時看的視頻其實就是音視頻。本文將記錄筆者在學習音視頻遇到的概念...
    Seacen_Liu閱讀 3,293評論 1 3
  • ### YUV顏色空間 視頻是由一幀一幀的數(shù)據(jù)連接而成,而一幀視頻數(shù)據(jù)其實就是一張圖片。 yuv是一種圖片儲存格式...
    天使君閱讀 3,656評論 0 4
  • 一.圖像的數(shù)值表示 1.RGB表示方式 浮點表示:取值范圍為0.0~1.0,比如,在OpenGL ES中對每一個子...
    doublej_yjj閱讀 980評論 0 0
  • 一、音視頻播放原理 雷霄驊雷神的[總結(jié)]視音頻編解碼技術(shù)零基礎學習方法 音視頻知識小結(jié) 如圖所示,視頻播放器播放一...
    Theendisthebegi閱讀 3,186評論 4 21
  • 第一場,教室內(nèi),考試中,甲乙(兩人同桌) 甲:乙,乙……(小聲叫乙) 乙:(瞟了一眼) 甲:乙,我沒復習好,你能不...
    愛擦肩而過的每一個路人閱讀 509評論 2 1

友情鏈接更多精彩內(nèi)容