概述
大纲
- 无损编码
- Huffman 编码
- 算术编码
- 字典编码
- 有损编码
- 标量量化
- 向量量化
- 预测编码
- 变换编码、JPEG
- 子带编码
- 小波编码、JPEG2000
- 分析-综合编码
- 音视频编码
- 音频编码
- 视频编码
教学目标
- 理解基本数学原理
- 为什么能工作
- 在什么情况下能工作
- 对给定情况,什么算法能工作得最好
- 深入理解算法
- 算法到底如何工作
- 动手实现算法
为什么需要压缩
- 对物理世界:没有足够空间
- 对数字世界:数据增长比物理存储(带宽)增长得更快
如果没有压缩,很多应用/服务不可行,如视频流服务,很多应用/服务更贵,比如模拟移动电话、数字移动电话。
为什么可以压缩
数据大多数是冗余的:任何非随机选择的数据都有一定结构,可利用这种结构得到数据的更紧致表示。
- 统计冗余: 某些值经常出现,而另外一些值很少出现,那么,这种由于取值上统计的不均匀性就构成了统计冗余
- 字母冗余:英文中字母E最常出现,而Z很少出现
- 文本冗余:字母Q后常跟有字母U
- 图像冗余:自然图像中相邻像素的颜色往往比较相近
- 时间冗余:视频图像前后几帧内容变化不大,位置可能不同,可用运动估计方法找到对应位置
- 结构冗余:图像中物体表面纹理等结构
基本术语
- 无损编码:(x=x^{prime}),也称熵编码 ( (entropy quad coding) ) 或可逆编码 ( $ reversible quad coding$ )
- 有损编码:(x e x^{prime}),也称不可逆编码 ( (irreversible quad coding) )
- 压缩率:(frac{|x|}{|y|}),(|x|) 表示编码 (x) 需要的比特数
- 码率:(frac{比特}{样本}),如 ASCII是 8 比特/字符
- 质量:对有损编码而言。人类感知到 (x) 与 (x^{prime}) 之间的差异或在数学上(x) 与 (x^{prime}) 之间的差异
- 复杂度:(1) 算法的运算量和存储量 (2) 编码器和解码器的复杂度
- 时延
开发压缩算法的步骤
建模
- 提取冗余信息
- 冗余 ( ightarrow) 可预测性
编码
- 用二进制表示模型与观测数据之间的差异,也称为残差 (residual)