視頻壓縮編碼的基本原理


文章轉自:http://www.cnblogs.com/CoderTian/p/8159481.html

1.預測編碼

1.1.預測編碼基本概念

預測法是最簡單和實用的視頻壓縮編碼方法,這時壓縮編碼后傳輸的並不是像素本身的取樣幅值,而是該取樣的預測值和實際值之差。
大量統計表明, 同一副圖像的臨近像素之間有着相關性,或者說這些像素值相似。而且同幀圖像中鄰近行之間對應位置的像素之間也有較強的相關性。人們可以利用這些性質進行視頻壓縮編碼。

如圖,同一幀內的臨近像素中與 X 之間的距離近的像素,如 A 和 B 與 X 的相關性強,愈遠相關性愈弱,如 C、 D、E、 F 等像素。以 P 作為預測值,按與 X 的距離不同給以不同的權值,把這些像素的加權和作為 X的預測值,與實際值相減,得到差值 q。由於臨近像素之間相關性強, q 值非常小,達到壓縮編碼的目的。接收端把差值 q 與預測值(事先已定義好,比當前 X 早到達接收端像素,如A)相加,恢復原始值 X。歸納如下:

編碼端: X-A=q
解碼端: q+A=X

按以上原理可得預測編碼框圖,這種預測編碼也稱為差分脈沖編碼(DPCM)。

其中, x(n)為當前像素的實際值, p(n)為其預測值, d(n)為差值或殘差值。該差值經量化后得到殘差量化值 q(n)。預測值 p(n)經預測器得到, 預測器輸入為已存儲在預測器內前面的各像素和當前像素實際值,它們的加權和即為下一個預測器輸出。
解碼輸出 x’(n)與原始信號 x(n)之間有個因量化而產生的量化誤差。

1.2.幀內預測編碼

預測模型可以是一維的,也可以是二維或多維的;可以是線性的,也可是非線性的。下面先討論一維線性預測方法
1.一維最佳預測
一維預測編碼器的原理框圖如下所示

信號間相關性越大,預測誤差方差越小於信號方差,壓縮效率也就越高

2.二維最佳預測
二維預測編碼器框圖如下所示

3.預測編碼的量化器
下圖是圖像差值信號的概率分布

 

一般說圖像中平坦區域比突變區域多得多,例如人臉中,只有眼睛、鼻子、嘴等少量地方細節出現,其余則為平坦或緩變區域。
人眼視覺特性實驗表明,在亮度突變部分或變化大的部分,量化誤差大些不會使人眼敏感,可采取粗量化,量化節距可取大一些,這時雖然需多些比特數,但面積小總比特數不大;反之,在亮度變化緩慢區域,則應取細量化,但由於平坦區域 e(x,y)小,也不會增加很多比特數。總之,利用人眼這種掩蓋效應采用非線性(不均勻)量化,可使總碼率有所下降。
由於量化,預測編碼會產生過載、顆粒噪聲、偽輪廓以及邊沿忙亂等,它們都是由於量化值過小或不夠小及像素變化過快等跟不上變化造成的
4.二維預測編解碼器框圖
編碼器

解碼器

1.3.幀間預測編碼

一般而言,幀間預測編碼編碼效率比幀內更高。
1.單向預測
運動矢量的概念

 

單向預測幀間編碼框圖

利用上一幀的圖像經運動矢量位移作為預測值的方法稱為單向預測或單向時間預測

如何減小幀差和更精確預測當前像素是提高幀間壓縮編碼效率的關鍵之處
上述原理以像素為單位進行預測,除了傳送幀差外,還增加了每個像素的運動矢量,編碼效率顯著下降。實際上,兩幀之差的物體運動一般是剛體的平移運動,位移量不大,因此 往往把一幀圖像分成若干 M×N 塊,以塊為單位分配運動矢量,大大降低總碼率。
2.雙向預測
有時,不只是利用前一幀像素預測,還需利用后一幀像素,即預測值為:
前向參考幀預測當前幀稱為前向運動補償,利用后向參考幀預測當前幀稱為后向運動補償,利用前后向同時預測的就稱為雙向預測運動補償。
雙向預測在實時通信中是不能應用的,例如會議電視、可視電話等,因為后向預測在當前幀之后進行,會引入編碼時延。它可用在廣播電視系統中,如采用 MPEG 標准的編碼系統, 特別針對一些暴露區域,即 t-1 幀尚未暴露而 t+1 幀已呈現出來的區域。
單項和雙向預測舉例
雙向預測編碼可解決“暴露”問題, 即某物體在前一幀未顯示出來,但在后一幀卻“暴露”出來,雙向預測能更准確地找出運動矢量,並只有在視頻存儲、 VOD 等非實時通信及數字廣播電視中應用。 會議電視、可視電話等實時通信中不宜應用 B 圖像,因為實時通信后一幀處在當前幀之后,當前幀編碼時它尚未出現。
3.運動估計
在幀間預測編碼中,由於活動圖像鄰近幀中的景物存在着一定的相關性。因此,可將活動圖像分成若干塊或宏塊,並設法搜索出每個塊或宏塊在鄰近幀圖像中的位置,並得出兩者之間的空間位置的相對偏移量, 得到的相對偏移量就是通常所指的運動矢量,得到運動矢量的過程被稱為運動估計。
運動矢量和經過運動匹配后得到的預測誤差共同發送到解碼端,在解碼端按照運動矢量指明的位置,從已經解碼的鄰近參考幀圖像中找到相應的塊或宏塊,和預測誤差相加后就得到了塊或宏塊在當前幀中的位置
前向和后向運動估計
 

H.264 編碼標准和以往采用的視頻壓縮標准很大的不同在於,在運動估計過程中采用了多參考幀預測來提高預測精度,多參考幀預測就是在編解碼端建一個存儲 M 個重建幀的緩存,當前的待編碼塊可以在緩存內的所有重建幀中尋找最優的匹配塊進行運動補償,以便更好地去除時間域的冗余度

2.變換編碼

2.1.變換編碼的簡單理解

 比如在一個坐標系中有A、B、C三個點,如果我們將坐標軸調整一下,A、B、C三個點的坐標值將會減小,達到壓縮的目的

2.2.變換編碼的概念

絕大多數圖像都有一個共同的特征:平坦區域和內容緩慢變化區域占據一幅圖像的大部分,而細節區域和內容突變區域則占小部分。也可以說,圖像中直流和低頻區占大部分,高頻區占小部分。這樣,空間域的圖像變換到頻域或所謂的變換域,會產生相關性很小的一些變換系數,並可對其進行壓縮編碼, 即所謂的變換編碼 。
變換中有一類叫做 正交變換,可用於圖像編碼。自 1968 年利用快速傅立葉變換(FFT)進行圖像編碼以來,出現了多種正交變換編碼方法,如 K-L 變換、離散余弦變換(DCT) 等等。其中,編碼編碼性能以 K-L 變換最理想,但缺乏快速算法,且不同圖像需計算不同的變換矩陣,因而只用來參考比較。 DCT 編碼性能略次於 K-L 變換,且具有快速算法,廣泛應用於圖像編碼。
DCT變換可以將L*L的圖像塊從空間域變換為頻率域
一個實際8*8圖像塊
圖像塊經過DCT變換后的系數
信號經過DCT變換后需要進行量化。由於人的眼睛對圖像的低頻特性比如物體的總體亮度之類的信息很敏感,而對圖像中的高頻細節信息不敏感,因此在傳送過程中可以少傳或不傳送高頻信息,只傳送低頻部分。量化過程通過對低頻區的系數進行細量化,高頻區的系數進行粗量化,去除了人眼不敏感的高頻信息,從而降低信息傳送量。
合理選擇量化系數,對變換后的圖像塊進行量化后的結果如圖所示
DCT系數經過量化之后大部分經變為0,而只有很少一部分系數為非零值,此時只需將這些非0值進行壓縮編碼即可
PS:是不是很像-_-!!!

3.變換編碼與預測編碼的比較

變換編碼實現比較復雜,預測編碼的實現相對容易,但預測編碼的誤差會擴散。 現實中,往往采用混合編碼方法,即對圖像先進行帶有運動補償的幀間預測編碼,再對預測后殘差信號進行 DCT變換。這種混合編碼方法已成為許多視頻壓縮編碼國際標准的基本框架。

 


免責聲明!

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



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