计算机速成课 第二十一集 压缩

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. 总结:

  • 压缩对大部分文件类型都有用
  • 学习压缩非常重要,因为可以高效存储图片、音乐、视频
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章