购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2.4 量化和熵编码

1.量化

从前面的变换编码和预测编码的分析可以看出,如果没有量化,那么就不可能得到数据的压缩,或者压缩比较小。同时,预测和变换本身并未给图像数据带来失真,失真是由量化造成的。可见量化过程是数据压缩的有效方法之一,也是图像压缩编码产生失真的根源之一。因此,量化器的设计总是朝着最好的方向努力,既要获得尽可能高的压缩比,又要减少量化失真,保持尽可能好的图像质量,以此来寻找最佳量化器的设计方法。

最佳量化器主要有两类设计方法,一类是客观准则下的设计方法,当量化器的分层总数 K 为一定时,根据量化误差的均方值为最小的准则(MMSE)进行设计;另一类是主观准则下的设计,它使量化器的量化分层总数 K 最小,同时还保证量化误差不超过人的视觉可见度阈值,即不被人的眼睛所发觉。

量化最简单的方法就是均匀(线性)量化,但均匀量化效果往往并不好,因为它没有考虑到量化对象的概率分布。例如,对预测误差这样的信号而言,其分布大部分集中在0附近,这时如果采用非均匀量化,对概率密度大的区域细量化,对概率密度小的区域粗量化,可以证明,它与均匀量化相比,在相同的量化分层条件下,其量化误差的均方值要小得多;或者,在同样的均方误差条件下,它只需要比均匀量化器更少的量化分层。

2.Zig-Zag扫描

并不是直接对量化后的DCT 系数值进行熵编码,而是按“Z”字形(Zig-Zag)扫描顺序,如图1.8所示,对于交流(AC)系数的二维数组以一维方式顺序读出。将非零系数前面的零游程长度(个数)与该系数值一起作为一个统计事件,然后将每一事件(零游程长度,非零系数)组成的符号组进行熵编码,又称变长编码(VLC),如Huffman编码。

img

图1.8 DCT系数的Zig-Zag扫描

之所以在熵编码之前进行Z字形扫描,主要是因为量化后的DCT系数更加稀疏,仅少数AC系数不为零,如果采用Z字形方式扫描,可以增加连零的长度,减少统计事件的个数,从而进一步增加对DCT系数熵编码的压缩码率。

3.熵编码

经过量化、Zig-Zag扫描后的符号组,如果对它们以相同长度的二进制码表示,称为等长编码。采用等长编码的优点是编码过程和解码过程简单,但由于这种编码方法没有考虑各个符号出现的概率,实际上就是将它们当作等概率事件来处理的,因而它的编码效率较低。

和等长编码不同的一种方法是变长编码(Variable Length Coding,VLC)。在这种编码方法中,表示符号的码字的长度不是固定不变的,而是随符号出现的概率而变化:给出现概率高的符号分配较短的码字,给出现概率低的码字分配较长的码字。可以证明,在非均匀符号概率分布的情况下,变长编码总的编码效率要高于等长编码。要注意的是,变长编码是一种信息保持型编码(熵编码),即编解码的过程并不引起信息量(熵)的损失,因为它的符号和码字之间是唯一对应的。

哈夫曼编码(Huffman)是一种最常用的变长编码方法。设被编码的信源有 K 种符号,如 K 种恢度等级,即信源的符号集合为 { a i | i =1, 2, …, K },且它们出现的概率对应为{ P ( a i )| i =1, 2, … , K },那么,不考虑信源符号的相关性,对每个符号单独编码时,则平均码长为 L 比特:

img

(1.10)

式中, l i 表示符号 a i 的码字的长度。可以证明,若编码时对概率大的符号用短码,对概率小的符号用长码,则 L 会比等长编码时所需的码字短。

除了Huffman编码以外,还有几种常见的变长编码方法,如香农编码、算术编码等。 YVW5oVhB7KVIa0LmYfwMtQcf40hf9MG3hKB2rKL4Cshn7rR7oQJAQqIQCKocnMUk

点击中间区域
呼出菜单
上一章
目录
下一章
×