視頻壓縮編碼基本原理

1.視頻信號的冗餘信息

數字化的視頻信號能進行壓縮的主要依據兩個基本條件:

數據冗餘:空間冗餘、時間冗餘、結構冗餘、信息熵冗餘等,圖像的各個像素之間存在着很強的相關性,消除這些冗餘不會導致信息損失,屬於無損壓縮。

視覺冗餘:人眼的一些特性,例如亮度分辨閾值、視覺閾值、對亮度和色度的敏感度不同,是的編碼的時候引入適量的誤差,也不會被察覺出來。可以利用人眼的這一特性,以一定客觀失真換取數據壓縮。這種壓縮屬於有損壓縮。

數字視頻信號的壓縮正是基於上述兩種條件,使得視頻數據量得以極大的壓縮,有利於傳輸和存儲。

2.壓縮編碼方法

一般的數字視頻壓縮編碼方法都是混合編碼,即將變換編碼運動估計和運動補償,以及熵編碼三種方式相結合來進行壓縮編碼。

變換編碼:消去除圖像的幀內冗餘
運動估計和運動補償:去除圖像的幀間冗餘
熵編碼:進一步提高壓縮的效率

1. 變換編碼
變換編碼的作用是將空間域描述的圖像信號變換到頻率域,然後對變換後的係數進行編碼處理。一般來說,圖像在空間上具有較強的相關性,變換到頻率域可以實現去相關能量集中

常用的正交變換有離散傅里葉變換,離散餘弦變換等等。數字視頻壓縮過程中應用廣泛的是離散餘弦變換。

2. 熵編碼
熵編碼是因編碼後的平均碼長接近信源熵值而得名。熵編碼多用可變字長編碼(VLC,Variable Length Coding)實現。其基本原理是對信源中出現概率大的符號賦予短碼,對於出現概率小的符號賦予長碼,從而在統計上獲得較短的平均碼長。可變字長編碼通常有霍夫曼編碼、算術編碼、遊程編碼等。其中游程編碼是一種十分簡單的壓縮方法,它的壓縮效率不高,但編碼、解碼速度快,仍被得到廣泛的應用,特別在變換編碼之後使用遊程編碼,有很好的效果。

3. 運動估計和運動補償
運動估計(Motion Estimation)和運動補償(Motion Compensation)是消除圖像序列時間方向相關性的有效手段。上文介紹的DCT變換、量化、熵編碼的方法是在一幀圖像的基礎上進行,通過這些方法可以消除圖像內部各像素間在空間上的相關性。實際上圖像信號除了空間上的相關性之外,還有時間上的相關性。例如對於像新聞聯播這種背景靜止,畫面主體運動較小的數字視頻,每一幅畫面之間的區別很小,畫面之間的相關性很大。對於這種情況我們沒有必要對每一幀圖像單獨進行編碼,而是可以只對相鄰視頻幀中變化的部分進行編碼,從而進一步減小數據量,這方面的工作是由運動估計和運動補償來實現的。

運動估計技術一般將當前的輸入圖像分割成若干彼此不相重疊的小圖像子塊,例如一幀圖像的大小爲1280x720,首先將其以網格狀的形式分成40x45個尺寸爲16x16的彼此沒有重疊的圖像塊,然後在前一圖像或者後一個圖像某個搜索窗口的範圍內爲每一個圖像塊尋找一個與之最爲相似的圖像塊。這個搜尋的過程叫做運動估計。通過計算最相似的圖像塊與該圖像塊之間的位置信息,可以得到一個運動矢量。這樣在編碼過程中就可以將當前圖像中的塊與參考圖像運動矢量所指向的最相似的圖像塊相減,得到一個殘差圖像塊,由於殘差圖像塊中的每個像素值很小,所以在壓縮編碼中可以獲得更高的壓縮比。這個相減過程叫運動補償

由於編碼過程中需要使用參考圖像來進行運動估計和運動補償,因此參考圖像的選擇顯得很重要。一般情況下編碼器的將輸入的每一幀圖像根據其參考圖像的不同分成3種不同的類型:I(Intra)幀B(Bidirection prediction)幀P(Prediction)幀
典型的I、B、P幀結構順序
如圖所示,I幀只使用本幀內的數據進行編碼,在編碼過程中它不需要進行運動估計和運動補償。顯然,由於I幀沒有消除時間方向的相關性,所以壓縮比相對不高。P幀在編碼過程中使用一個前面的I幀或P幀作爲參考圖像進行運動補償,實際上是對當前圖像與參考圖像的差值進行編碼。B幀的編碼方式與P幀相似,惟一不同的地方是在編碼過程中它要使用一個前面的I幀或P幀和一個後面的I幀或P幀進行預測。由此可見,每一個P幀的編碼需要利用一幀圖像作爲參考圖像,而B幀則需要兩幀圖像作爲參考。相比之下,B幀比P幀擁有更高的壓縮比。

4. 混合編碼
在實際應用中,這幾種方法常常是不可分離的,通常將它們結合起來以達到最好的壓縮效果。下面是混合編碼(即變換編碼+ 運動估計和運動補償+ 熵編碼)模型,該模型普遍適用於MPEG1,MPEG2,H.264等標準中。
混合編碼模型

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