压缩算法(compaction algorithm)是指数据压缩的算法,在电子与通信领域也常被称为信号编码,包括压缩和还原(或解码和编码)两个步骤。
定义
压缩算法(compaction algorithm)是指数据压缩的算法,在电子与通信领域也常被称为信号编码,包括压缩和还原(或解码和编码)两个步骤。
由于多媒体信号的数据量巨大,所以需要压缩;同时,由于在多媒体数据中,存在着各种冗余,所以可以压缩。
用于多媒体数据的压缩方法众多,可按主要特点将它们分成不同的类型。
(1)无损与有损
1、无损压缩:能够无失真地从压缩后的数据重构,准确地还原原始数据。可用于对数据的准确性要求严格的场合,如可执行文件和普通文件的压缩、磁盘的压缩,也可用于多媒体数据的压缩。该方法的压缩比较小。如差分编码、RLE、Huffman编码、LZW编码、算术编码。
2、有损压缩:有失真,不能完全准确地恢复原始数据,重构的数据只是原始数据的一个近似。可用于对数据的准确性要求不高的场合,如多媒体数据的压缩。该方法的压缩比较大。例如预测编码、音感编码、分形压缩、小波压缩、JPEG/MPEG。
(2)对称性
若编解码算法的复杂性和所需时间差不多,则为对称的编码方法,多数压缩算法都是对称的。但也有不对称的,一般是编码难而解码容易,如Huffman编码和分形编码。但用于密码学的编码方法则相反,是编码容易,而解码则非常难。
(3)帧间与帧内
在视频编码中会同时用到帧内与帧间的编码方法,帧内编码是指在一帧图像内独立完成的编码方法,同静态图像的编码,如JPEG;而帧间编码则需要参照前后帧才能进行编解码,并在编码过程中考虑对帧之间的时间冗余的压缩,如MPEG。
(4)实时性
在有些多媒体的应用场合,需要实时处理或传输数据(如现场的数字录音和录影、播放MP3/RM/VCD/DVD、视频/音频点播、网络现场直播、可视电话、视频会议),编解码一般要求延时≤50ms。这就需要简单/快速/高效的算法和高速/复杂的CPU/
DSP芯片。
(5)分级处理
有些压缩算法可以同时处理不同分辨率、不同传输速率、不同质量水平的多媒体数据,如JPEG2000、MPEG-2/4。
分类
熵编码和混合编码
熵编码(Entropy Encoding)是一类利用数据额统计信息进行压缩的无语义数据流的无损编码。信息熵为信源的平均信息量(不确定性的度量)。常见的熵编码有行程码(RLE)、LZW编码、香农(Shannon)编码、哈夫曼(Huffman)编码和算术编码(Arithmetic coding)。
混合编码即熵编码和(信)源编码的组合。大多数压缩标准都采用混合编码的方法进行数据压缩,一般是先利用信源编码进行有损压缩,再利用熵编码做进一步的无损压缩。
信源编码
(信)源编码(Source Coding)是一类利用信号原数据在时间域和频率域中的相关性和冗余进行压缩的有损编码。种类繁多,可进一步分为如下几种。
1、预测编码:利用先前和限制的数据对在时间或空间上相邻的下面或后来的数据进行预测,从而达到压缩的目的。如增量调制(DM)、差分和自适应编码(ADPCM);
2、变换编码:采用各种数学变换方法,将原时间域或空间域的数据变换到频率域或其他域,利用数据在变换域中的冗余或人类感觉的特征来进行压缩。常见的变换编码有FFT(
快速傅里叶变换)、DCT(
离散余弦变换)、DWT(
离散小波变换)和IFS(
迭代函数系统);
3、分层编码:将原数据在时空域或频率域上分成若干子区域,利用人类感觉的特征进行压缩编码,然后再合并,如二值位、子采样、子带编码;