H264基本概念之 預測編碼、變換編碼和熵編碼

1、預測編碼     

      壓縮算法的本質就是去除信號間的冗餘,什麼是信號的冗餘呢?信號之間的相關性就是冗餘,人類聽覺或視覺系統感覺不到的或者掩蔽的也可以當做冗餘成分。今天談談預測編碼的概念,這是一種非常直觀和簡單易行的方法。說它直觀,以圖像爲例,前後兩幀或者同一圖像的相鄰像素都存在着相似性、相關性,我們完全可以通過當前幀和一組預測係數,推測出下一幀圖像,當然也可以從當前像素推測出周圍像素的變化。通過實際值與預測值的差,去除了一部分冗餘,使得信號的動態範圍變小了,表示這些信號的比特數減少了,從而達到壓縮的目的。

 

      對於視頻信號的預測編碼分成兩種,一個是幀間預測編碼,一個是幀內預測編碼。幀內預測是從空間上去除同一幀圖像內宏塊之間的冗餘。H264中,有4x4亮度預測模式、16x16亮度預測模式、8x8色度塊預測模式以及一種I_PCM編碼模式,如何選擇最優的編碼模型是一個不太容易的問題。

 

      幀間預測編碼效率比幀內編碼要高,它是從時間上去除圖像幀與幀之間的冗餘,分爲單向預測、雙向預測。一般雙向預測會增加編碼延時,所以在實時通信中用的不多。在幀間預測中,就不得不提運動估計這個概念,在活動圖像鄰近幀中的景物會發生空間上的位移,得到這個運動偏移的過程就是運動估計,涉及到各種搜索算法,同時這一部分的複雜度也是H264的重點。

 

2、變換編碼

     變換編碼是指將空間域的圖像變換到頻域,這樣會產生相關性很小的一些變換系數,並對其進行壓縮編碼。通常採用DCT變換,因爲它的性能接近K-L變換,同時具有快速算法,非常適合圖像變換編碼。變換編碼比預測編碼要複雜,但是各種誤差(量化、信道誤差)不會向後面擴展,對視覺影響不大。

 

3、熵編碼

     利用信源的統計特性進行碼率壓縮的編碼稱爲熵編碼。特點是無損編碼,但是壓縮率比較低,一般用在變換編碼後面作進一步壓縮。常用的有變長編碼(huffman編碼)和算術編碼。

1) 變長編碼

     對出現概率大的符號分配短字長的二進制碼,對出現概率小的符號分配長字長的二進制碼,得到符號平均碼長最短的碼。也稱爲最佳編碼。

2) 算術編碼

     與huffman編碼不同,不採用碼字表示輸入符號的方法,而是採用一個浮點數來代替一串輸入符號,經算術編碼後輸出一個小於1,大於等於0的浮點數,在解碼端在進行唯一的解碼,恢復原符號序列。

     這兩種編碼方法實際應用中都有受硬件精度的問題,即如何定點化表示小數的問題。

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