音視頻壓縮編碼介紹

1.概念:

壓縮(編碼):因爲未經壓縮的數字視頻的數據量巨大,在相對有限的存儲空間和傳輸帶寬條件下,其在互聯網上的傳輸會有極大的不便,所以在視頻的傳輸之前,會對視頻數據和音頻數據進行一定算法的壓縮,這個過程又稱爲編碼。

幀內(Intraframe)壓縮:也稱爲空間壓縮,當壓縮一幀圖像時,只考慮本幀的數據而不考慮相鄰幀之間的冗餘信息,幀內一般採用有損壓縮算法,由於幀內壓縮時各個幀之間沒有相互關係,所以壓縮後的視頻數據仍可以以幀爲單位進行編輯。幀內壓縮一般達不到很高的壓縮比率,可能有一定的失真。

基於同一幀內已編碼塊預測,構造預測塊,計算與當前塊的殘差,對殘差、預測模式等信息進行編碼。其主要去除的是空域冗餘

幀間(Interframe)壓縮:是基於許多視頻或 動畫的連續前後兩幀具有很大的相關性,或者說前後兩幀信息變化很小的特點。也即連續的視頻其相鄰幀之間具有冗餘信息,根據這一特性,壓縮相鄰幀之間的冗餘量就可以進一步提高壓縮量,減小壓縮比。幀間壓縮也稱爲時間壓縮(Temporalcompression),它通過比較時間軸上不同幀之間的數據進行壓縮。幀間壓縮一般是無損的。幀差值(Frame differencing)算法是一種典型的時間壓縮法,它通過比較本幀與相鄰幀之間的差異,僅記錄本幀與其相鄰幀的差值,這樣可以大大減少數據量。

基於一個或多個已編碼幀預測,構造預測塊,計算與當前塊的殘差,對殘差、預測模式、運動矢量殘差、參考圖像索引等信息進行編碼。其主要去除的是時域冗餘

RGB:任何彩色圖像可由不同比例的紅色、綠色和藍色組合而成,即三基色原理。這種表示彩色圖像的方法即RGB 彩色空間。

YUV(YCbCr):人類視覺系統(HDV)對亮度比彩色更敏感,因此可以把亮度信息從彩色信息分離處來,並使之具有更高的清晰度,彩色信息的清晰度較低些,可顯著壓縮帶寬,實現視頻壓縮的一部分,人的感覺卻沒有不同。

如果亮度分量用Y 表示,色度用Cb,Cr 表示,則由大量實驗得出:

Y=0.299R+0587G+0.114B

Cb=0564(B-Y)

Cr=0.713(R-Y) 

**反之,可由下式得到相應的R、G、B:**

R=Y+1.402Cr

G=Y-0.344Cb-0.714Cr

B=Y+1.772Cb 

GOP(Group of Pictures):策略影響編碼質量:所謂GOP,意思是畫面組,一個GOP就是一組連續的畫面。MPEG編碼將畫面(即幀)分爲I、P、B三種。

I幀:幀內編碼幀,表示關鍵幀,可以理解爲這一幀畫面的完整保留;解碼時只根據本幀數據就可以完成。

I幀特點: 1.它是一個全幀壓縮編碼幀。它將全幀圖像信息進行JPEG壓縮編碼及傳輸; 2.解碼時僅用I幀的數據就可重構完整圖像; 3.I幀描述了圖像背景和運動主體的詳情; 4.I幀不需要參考其他畫面而生成; 5.I幀是P幀和B幀的參考幀(其質量直接影響到同組中以後各幀的質量); 6.I幀是幀組GOP的基礎幀(第一幀),在一組中只有一個I幀; 7.I幀不需要考慮運動矢量; 8.I幀所佔數據的信息量比較大。

P幀:前向預測編碼幀。P幀表示的是這一幀跟之前的一個關鍵幀(或P幀)的差別,解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面。(也就是差別幀,P幀沒有完整畫面數據,只有與前一幀的畫面差別的數據)

P幀的預測與重構:P幀是以I幀爲參考幀,在I幀中找出P幀“某點”的預測值和運動矢量,取預測差值和運動矢量一起傳送。在接收端根據運動矢量從I幀中找出P幀“某點”的預測值並與差值相加以得到P幀“某點”樣值,從而可得到完整的P幀。

P幀特點:1.P幀是I幀後面相隔1~2幀的編碼幀;2.P幀採用運動補償的方法傳送它與前面的I或P幀的差值及運動矢量(預測誤差);3.解碼時必須將I幀中的預測值與預測誤差求和後才能重構完整的P幀圖像;4.P幀屬於前向預測的幀間編碼。它只參考前面最靠近它的I幀或P幀;5.P幀可以是其後面P幀的參考幀,也可以是其前後的B幀的參考幀;6.由於P幀是參考幀,它可能造成解碼錯誤的擴散;7.由於是差值傳送,P幀的壓縮比較高。

B幀:雙向預測內插編碼幀。B幀是雙向差別幀,也就是B幀記錄的是本幀與前後幀的差別(具體比較複雜,有4種情況,但我這樣說簡單些),換言之,要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之後的畫面,通過前後畫面的與本幀數據的疊加取得最終的畫面。B幀壓縮率高,但是解碼時CPU會比較累。

B幀的預測與重構:B幀以前面的I或P幀和後面的P幀爲參考幀,“找出”B幀“某點”的預測值和兩個運動矢量,並取預測差值和運動矢量傳送。接收端根據運動矢量在兩個參考幀中“找出(算出)”預測值並與差值求和,得到B幀“某點”樣值,從而可得到完整的B幀。

B幀特點:1.B幀是由前面的I或P幀和後面的P幀來進行預測的;2.B幀傳送的是它與前面的I或P幀和後面的P幀之間的預測誤差及運動矢量;3.B幀是雙向預測編碼幀;4.B幀壓縮比最高,因爲它只反映丙參考幀間運動主體的變化情況,預測比較準確;5.B幀不是參考幀,不會造成解碼錯誤的擴散。

:I、B、P各幀是根據壓縮算法的需要,是人爲定義的,它們都是實實在在的物理幀。一般來說,I幀的壓縮率是7(跟JPG差不多),P幀是20,B幀可以達到50。可見使用B幀能節省大量空間,節省出來的空間可以用來保存多一些I幀,這樣在相同碼率下,可以提供更好的畫質。

2.視頻幾種主流編碼算法

爲什麼視頻信息可以被壓縮?

視頻信息之所以存在大量可以被壓縮的空間,是因爲其中本身就存在大量的數據冗餘。其主要類型有:

時間冗餘:視頻相鄰的兩幀之間內容相似,存在運動關係

空間冗餘:視頻的某一幀內部的相鄰像素存在相似性

視覺冗餘:觀衆的視覺系統對視頻中不同的部分敏感度不同

針對這些不同類型的冗餘信息,在各種視頻編碼的標準算法中都有不同的技術專門應對,以通過不同的角度提高壓縮的比率。

理論依據:參照一段時間內圖像的統計結果表明,在相鄰幾幅圖像畫面中,一般有差別的像素只有10%以內的點,亮度差值變化不超過2%,而色度差值的變化只有1%以內。所以對於一段變化不大圖像畫面,我們可以先編碼出一個完整的圖像幀A,隨後的B幀就不編碼全部圖像,只寫入與A幀的差別,這樣B幀的大小就只有完整幀的1/10或更小!B幀之後的C幀如果變化不大,我們可以繼續以參考B的方式編碼C幀,這樣循環下去。這段圖像我們稱爲一個GOP(GOP就是有相同特點的一段數據),當某個圖像與之前的圖像變化很大,無法參考前面的幀來生成,那我們就結束上一個GOP,開始下一段GOP,也就是對這個圖像生成一個完整幀A1,隨後的圖像就參考A1生成,只寫入與A1的差別內容。

鏈接:https://www.jianshu.com/p/8d5dbfb52c6e

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章