学习目标:
1.熟悉数据压缩方法的分类
2.了解数据压缩方法的评价
3.掌握常见数据压缩算法
视频学习:
电子教材:
数据压缩算法
数据压缩分类
根据解码后数据与原始数据是否一致分类
1.无损压缩
无损压缩也称可逆压缩、无失真编码、熵编码等。此类方法解压缩后的还原数据与原始数据完全一致
2.有损压缩
有损压缩也称为不可逆压缩。此类方法解压缩后的还原数据与原始数据不完全一致,压缩时减少的数据是不可恢复的。
根据编码原理分类
1.预测编码
预测编码是根据原始的离散信号之间存在着一定关联性的特点,利用前面的一个或多个信号对下一个信号进行预测,然后对实际值和预测值的差(预测误差)进行编码。
2.变换编码
变换编码(Transform Coding,TC)的主要思想是利用图像块内像素值之间的相关性,把图像变换到一组新的基上,使得能量集中到少数几个变换系数上,通过存储这些系数而达到压缩的目的。
3.统计编码
统计编码包括行程编码、LZW编码、Huffman编码和算术编码,属于无失真编码。其编码效率主要取决于编码符号出现的概率分布,越集中,压缩比越高。
4.行程编码
行程编码是最简单、最古老的压缩技术之一,其主要技术是检测重复的比特或者字符序列,利用它们的出现次数取而代之。
5.分析合成编码
分析合成编码方法突破了经典数据压缩编码的理论框架。其本质是通过对原始数据的分析,将其分解成一系列更适合于表示的“基元”。
压缩方法评价
数据压缩方法的优劣主要由所能达到的压缩倍数,它主要从压缩后的数据所能恢复(或称重建)的图像(或声音)质量以及压缩和解压缩的速度等几方面来评价。
1.压缩比
压缩比是指压缩过程中输人数据量和输出数据量之比。压缩比越大,压缩效率越高。如一幅分辨率为512×480、颜色深度为24bit的静态图像,输入=737280byte,输出=15000byte,压缩比=737280/15000=49。
2.图像(声音)质量
压缩方法分为有损压缩和无损压缩,以图像压缩为例,图像的无损压缩在压缩与解压过程中没有损失任何原始信息,无损压缩不必担心恢复出来的图像质量。
3.压缩/解压速度
通常压缩和解压不能同时进行,压缩和解压的速度需要分别估计。在静态图像中,压缩速度没有解压速度严格;在动图中,压缩、解压速度都有要求。除此之外,有些数据的压缩和解压可以在标准的PC机硬件上用软件实现,有些则因为算法太复杂或者质量要求高,必须采用专门的硬件。
常见的数据压缩编码
1.哈夫曼编码
哈夫曼于1952年提出一种编码方法,哈夫曼编码依据符号出现概率来构造异字头(前缀)的平均长度最短的码字,有时称之为最佳编码。哈夫曼编码是可变字长编码(VLC)的一种,各符号与码字一一对应,是一种分组码。变字长编码的最佳编码定理:在变字长编码中,对于出现概率大的信息符号以短字长编码,对于概率小的符号以长字长编码。如果码字长度严格按所对应符号出现概率大小逆序排列,则平均码字长度一定小于其他以任何符号顺序排列方式得到的平均码字长度。该定理保证了按符号出现概率分配妈长,使平均码长最短。
2.预测编码
预测编码的基本思想是根据原始信号的相关性,在当前时刻(或位置)预测下一时刻(或位置)的信号值,并对预测出现的误差进行编码的压缩编码方法。对于绝大多数图像来说,在局部空间和时间上具有很好的连续性,即原始图像数据具有很强的相关性。利用这一特性,可以通过对一个或多个像素的观测,预测出它们相邻像素的估计值。这种思想导致产生了预测编码,它是利用图像数据的相关性,用已传输的像素值对当前像素进行预测,然后对当前像素的实际值与预测值的差值(即预测误差)进行编码传输。
预测编码主要考虑消除两个方面的信息冗余。一是消除存在于图像内部的数据冗余,即空间冗余度;二是消除存在于相邻图像之间的数据冗余,即时间冗余度。
预测方法分线性预测和非线性预测。由于线性预测的预测公式是线性的,即预测系数是固定的常数,在图像压缩编码中得到广泛应用。采用线性预测的预测编码通常也称为差值脉冲编码调制,简称DPCM。
3.变换编码
变换编码是指先对信号进行某种函数变换,从一种信号(空间)变换到另一种信号(空间),然后再对信号进行编码。变换编码的基本思想是利用变换方法(如DCT变换)先改变表示图像的模式(如RGB模式→YUV模式),再对变换得到的基信号进行量化取整和编码的技术。
变换编码不直接对原始的空域信号(基于空间的视频信号)进行编码,而是先将空域信号映射到另一个正交矢量空间(如以可见光频率表示的图像频域空间)。经过这样的变换后,将得到一批变换系数(即基信号),再对这些系数进行编码。
以声音、图像为例,由于声音、图像大部分信号都是低频信号,在频域中信号较集中,编码时需将时域信号变换到频域,再对其进行采样、编码。
变换编码系统中压缩数据有变换、变换域采样和量化三个步骤。变换本身并不进行数据压缩,它只把信号映射到另一个域,让信号在变换域里进行压缩。变换后的样值更独立和有序,这样,量化操作使用比特分配可以有效地压缩数据。

