1. 壓縮的好處
- 文件小一點,能存大量文件,傳輸也會快一些
- 把數據佔用的空間壓得更小,用更少的位(bit)來表示數據
2. 遊程編碼(Run-length Encoding)
- 消除冗餘:減少重複信息
- 適合經常出現相同值的文件
- 屬於「無損壓縮」
3. 無損壓縮(lossless compression)
- 沒有損失/丟失任何數據
- 可以輕易恢復到原來的數據
- 解壓縮後,數據和壓縮前完全一樣
- 另一種無損壓縮:用更緊湊的方式表示數據塊
- 舉例 “別忘了變厲害” 簡寫爲 DFTBA (筆者注:Don't forget to be awesome)
- 字典編碼: 需要一個字典:存儲「代碼」和「數據」間的對應關係,屬於「無損壓縮」
- 舉例:緊湊代碼(compact codes)
- 音頻格式:WAV, FLAC
4. 霍夫曼樹(Huffman Tree)
- 1950 年,麻省理工學院的學生大衛·霍夫曼,發明的一種高效編碼方式
- 算法方式
- 核心:變成一棵樹,按頻率排列,頻率低的在下面
- 把樹變成字典
- 「消除冗餘」和「用更緊湊的表示方法」,這兩種方法通常會組合使用。幾乎所有無損壓縮格式都用了它們,比如:GIF, PNG, PDF, ZIP
5. 有損壓縮
- 有些人類看不到的數據被清除,不影響閱讀
- 舉例:
- 人的耳朵只能收聽到一定頻率,例如超聲波是聽不到的。
- 如果錄音樂,超聲波數據都可以扔掉
- 你在電話裏的聲音和現實中不一樣,壓縮音頻是爲了讓更多人能同時打電話
- 如果網速變慢了,壓縮算法會刪更多數據,進一步降低聲音質量,所以 Skype 通話有時聽起來像機器人
- 有損音頻壓縮
- 用不同精度編碼不同頻段
- 聽不出什麼區別,不會明顯影響體驗
- 舉例:壓縮音頻文件 MP3,比無損壓縮 WAV, FLAC 能小 10 倍甚至更多,省了很多空間
6. 感知編碼(perceptual coding)
- 定義:刪掉人類無法感知的數據的方法
- 它依賴於人類的感知模型,模型來自「心理物理學」領域
- 它是各種「有損壓縮圖像格式」的基礎,最著名的是 JPEG
- 視覺系統
- 像聽力一樣,人的視覺系統也不是完美的
- 更善於看到尖銳對比,比如物體的邊緣,但看不出顏色的細微變化
- 視頻只是一長串連續圖片,所以圖片的很多方面也適用於視頻
- 更高級的視頻壓縮格式:找出幀和幀之間相似的補丁,然後用簡單效果實現,比如移動和旋轉,變亮和變暗,
7. 時間冗餘
- 視頻裏不用每一幀都存相同的像素(例如主持人的背景板),可以只存變了的部分
- 這是利用了幀和幀之間的相似性
8. MPEG-4 視頻編碼
- 常見標準,可以比原文件小 20 倍道 200 倍
9. 總結:
- 壓縮對大部分文件類型都有用
- 學習壓縮非常重要,因爲可以高效存儲圖片、音樂、視頻