天天看點

視訊壓縮的基本原理,一些常見壓縮算法的概念

對于​​算法​​研究而言,本身就是要先知道哪個地方可以努力,哪些地方行不通。這些原理,就是指明方向的。

一.視訊壓縮的可行性

1.空間備援

一幅靜态圖像,比如人臉。背景,人臉,頭發等處的亮度,顔色,都是平緩變化的。相鄰的像素和色度信号值比較接近。具有強相關性,如果直接用采樣數來表示亮度和色度資訊,資料中存在較多的空間備援。如果先去除備援資料再編碼,表示每個像素的平均比特數就會下降,這就是通常說的圖像的幀内編碼,即以減少空間備援進行資料壓縮。

2.時間備援

視訊是時間軸方向的幀圖像序列,相鄰幀圖像的相關性也很強。通常用降低幀間的方法來減少時間備援。采用運動估計和運動補償的技術滿足解碼重建圖像的品質要求。

3.符号備援

用相同碼表示機率不同的符号,會造成比特數的浪費。比如10,11,13三個數,如果我們都用1bytes來表示,就是3bytes(即3×8 = 24bits),但是如果我們表00b表示10,01b表示11,02b表示13,這樣,三個數合起來才用了6bits,較之前可以節省18bits。

可變長編碼技術的原理就如此,概論大的用較短的碼字,機率小的用較長的碼字。

4.結構備援

對于圖像内部,各個部分也存在某種關系。我們可以通過這種關系,減少資訊的碼字表達。比如:分形圖像編碼

5.視覺備援

1),人眼對彩色信号的亮度分辨率高于色彩分辨率,比如rgb-->yuv就是這個原理

2),人眼對靜止圖像的空間的分辨率大于運動圖像的分辨率。

3),人眼對亮度的細小變化不敏感

4),中心敏感,四周不敏感。

其實我們雖然知道了這些,我們知道有備援,但是如何把這些備援找出來,是個很複雜的過程。也是我們的算法不斷追求的過程。

上面的一段,是所有視訊壓縮标準的基石。mpeg2,mpeg4,h264,h265這些标準,與其說他們是标準,不如他們提供了一些算法的組合,或簡單或複雜,當然簡單的算法壓縮掉的備援小,複雜的壓縮掉的備援大。通過算法找到備援資訊在哪,然後壓縮掉,實作資料量的減小。這就是我們的目錄。

更近一步的說,就是我們如何找出資料的相關性。

二,常見算法的名詞解釋

大的分類有兩種,一個變換,一個是編碼。

先說變換

我們要找出信号的相關性,時間上不好找怎麼辦,變換到另外一個空間上去。這就是我們在信号與系統,數字信号處理,高等數學得到的結論

變換

傅裡葉變換

walsh-hadamard(沃爾什哈達瑪變換)

正弦變換

餘弦變換----應用最廣

斜變換

哈爾變換

k-L變換

小波變換

對于這些變換來說,很多東西隻在數學上有意義,對于工程來說,或者沒有快速算法,或者變換後相關性比較低,或者其他原因。隻有餘弦變換是最最廣泛的,為了減小我們的學習壓力(當然如果你是要對比其中的差異的另當别論),我們隻掌握餘弦變換就可以了。

編碼

又分無失真編碼與限失真編碼,從名字上我們就可以看出差異了。呵呵,不多解釋

無失真編碼的種類:

哈夫曼編碼,算術編碼,遊程編碼

限失真編碼

預測編碼,變換編碼,矢量量化,基于模型的編碼。

對于編碼這塊,上述的算法,基本要全部掌握才行。

jpeg/mpeg2先用了遊程編碼減小的0這個數占用的比特位,然後用了哈夫曼壓縮。

h264用了算術編碼來做最後一道壓縮工序

運動補償與運動估計,用到預測編碼。

mpeg4用到了基于模型的編碼