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. 总结:
-
压缩对大部分文件类型都有用
-
学习压缩非常重要,因为可以高效存储图片、音乐、视频