多媒體信息的編碼挑戰#

  • 今天計算機很多時候被用於多媒體信息的壓縮、傳輸和處理,涉及對信息的編碼
  • 其中的關鍵在於把握範圍和精度的平衡
  • 通常可行的辦法是:
    • 採用非線性編碼來擴大範圍,完成粗調
    • 增量編碼來縮短編碼長度,完成精調

線性編碼(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 幀
  • 每一幀視頻之間的差異其實極小
  • 對第一幀(主幀)進行全畫面編碼,後面的每一幀只針對它和上一幀的差異進行編碼
  • 這樣一段視頻的大小整體上可以壓縮成原本的千分之幾
  • 為了防止累積誤差,每過若干幀就重新產生一個主幀

信息壓縮的極限#

  • 信息壓縮總要有一個極限,分為兩種情況:
    • 無損壓縮:不允許任何的信息損失,壓縮後編碼的總長度不可能小於相應信息的信息熵
    • 有損壓縮:允許一定範圍內的信息損失
  • 在計算機裡,能讓編碼長度接近於信息熵的常用無損壓縮算法就是哈夫曼編碼

保守主義的做事原則——保守主義不是不變,而是強調利用增量來改變世界,這樣代價最低。在計算機領域,競爭力就體現在用最低的代價做更多的事情。

要點#

  • 由於前後信息的相關性,編碼時可以用較少的比特數表達同樣的信息