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


自己的這個筆記,廢了好久,還是要堅持寫下去,雖然現在看來,質量不太高,而且很多東西貌似沒有說到位,只有自己才看得懂,明顯不是技術普及的方式。

先說基本原理,這個基本就是抄書了,因為不是做科研的,很多東西都是人們用了很多年才逐漸總結出來的。

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

一.視頻壓縮的可行性

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用到了基於模型的編碼

變換完成后,進行了矢量量化。

 

 


免責聲明!

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



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