多媒體信息的編碼挑戰#
- 今天計算機很多時候被用於多媒體信息的壓縮、傳輸和處理,涉及對信息的編碼
- 其中的關鍵在於把握範圍和精度的平衡
- 通常可行的辦法是:
- 採用非線性編碼來擴大範圍,完成粗調
- 用增量編碼來縮短編碼長度,完成精調
線性編碼(PCM 編碼)#
- 對一段語音進行編碼,最簡單的方法是逐一採樣,然後將其變成 -32768 到 32767 的整數
- 這樣就可以用 16 位二進制數進行編碼
- 今天的長途電話採用的就是這種脈衝編碼調制(PCM)編碼
非線性編碼#
- 一個簡單的方法是對信號求對數,縮小信號的動態範圍
- 對數函數的特點:對較小的數字分辨率較高,對大的數字分辨率則比較低
- 這正好符合語音信息和圖像信息的特點——人耳和人眼對小信號更敏感
增量編碼(差分編碼)#
- 如果將一組數字一起觀察,就可以利用數據前後的相關性
- 只需要對前後數據的增量進行編碼,而非逐一對每個數據完整編碼
- 例如一組信號值 3210, 3208, 3206, 3211, 3220, 3212 可以變換為:
- 3210, [-2], [-2], [5], [9], [-8], …
- 由於增量的動態變化範圍不大,無論採用線性還是非線性編碼,都不需要太長的編碼
實際應用:ADPCM#
- 今天 IP 電話(VoIP)中傳輸的語音數據,就是用非線性編碼和增量編碼相結合的方式壓縮的
- 這種方法稱為自適應差分 PCM(ADPCM),其中 A 代表 Adaptive(自適應),D 代表 Differential(差分)
- 通過對信息的非線性編碼以及利用前後的相關性進行增量編碼,編碼的長度縮短了 50%,而語音品質的差別幾乎聽不出來
視頻壓縮#
- 一般視頻每秒 30 幀,高清視頻每秒 60 幀,4K 視頻每秒 120 幀
- 每一幀視頻之間的差異其實極小
- 對第一幀(主幀)進行全畫面編碼,後面的每一幀只針對它和上一幀的差異進行編碼
- 這樣一段視頻的大小整體上可以壓縮成原本的千分之幾
- 為了防止累積誤差,每過若干幀就重新產生一個主幀
信息壓縮的極限#
- 信息壓縮總要有一個極限,分為兩種情況:
- 無損壓縮:不允許任何的信息損失,壓縮後編碼的總長度不可能小於相應信息的信息熵
- 有損壓縮:允許一定範圍內的信息損失
- 在計算機裡,能讓編碼長度接近於信息熵的常用無損壓縮算法就是哈夫曼編碼
保守主義的做事原則——保守主義不是不變,而是強調利用增量來改變世界,這樣代價最低。在計算機領域,競爭力就體現在用最低的代價做更多的事情。
要點#
- 由於前後信息的相關性,編碼時可以用較少的比特數表達同樣的信息