Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2278669
  • 博文数量: 668
  • 博客积分: 10016
  • 博客等级: 上将
  • 技术积分: 8588
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-29 19:22
文章分类

全部博文(668)

文章存档

2011年(1)

2010年(2)

2009年(273)

2008年(392)

分类:

2009-07-15 08:24:44

3)量化

    DCT系数采用量化(Quantization)进行压缩是1个关键性的运算,因为组合量化和游程长度编码可以提供最大的压缩量,也可以通过量化使编码器输出匹配成1个给定的比特率。实际上,自适应量化是实现视觉质量的关键性工具之一,在量化中会减少频率域中描述DCT系数的精度。这一点可从图26基本MPEG编码器的运动补偿预测编码过程简化电路图看出。用当前帧的原始图像的取样值减去当前帧解码复原值,其差值为:

fn - fn’= f n - e’n-f*n  =  en+f*n - e’n - f*n = en- e’n = qn        (4)       

    式(4)中qn为量化误差,即量化误差的大小决定了图像恢复的精度。这表明,可以利用调整量化器误差大小来调整量化精度的高低。实际量化如图27所示,是DCT编码输出的系数块中的每DCT系数除以量化器表中与其系数对应位置上的量化步长。量化步长是1个大于1的值,可根据编码图像的复杂度改变,甚至可对每个DCT块改变量化矩阵值。根据DCT的结果分析,直流分量DC体现了大多数普通图像的内容,应该用较小的量化步长去分配;交流分量AC只体现了普通图像所包含频谱中的很少一部分,应该用较大的量化步长去分配。量化的结果如图24所示,量化了的不同频率的频域系数趋向“0”值,而且这些大群的“0”在许多情况下都是群集在较高频率上。因此,通过一串“0”的个数的编码而不是对每个单独的“0”本身的编码,可以取得附加的压缩效果,这就是游程长度编码(RLC-Run Length Coding)。

4)编码

    编码是DCT压缩系统的最后一步。在对64个DCT系数均匀量化后,系数分成为直流(DC)和交流(AC)两个部分。DC系数代表了分量模块的平均亮度,可采用差值脉冲编码调制(DPCM)进行编码;对AC系数,由于非零的DCT系数大多数集中在矩阵的左上角,在进行编码之前先对量化后的DCT系数进行“之”字形扫描,有利于得到一个长的“0”序列,提高编码效率。DCT系数扫描方式有“之”字形和“准之” 字形两种。逐行扫描采用“之”字形传送量化后的DCT系数,隔行扫描采用“准之”字形传送量化后的DCT系数,两种扫描方式如图28所示。

   通过“之”字形扫描,将8×8的像素块转换成为1×64的码组,以便进行游程长度编码(RLC)和可变长度编码(VLC),如图29所示。


    为了说明RLC和VLC,这里以图24中的量化输出编码为例,加以说明。量化输出矩阵如图30;量化输出的十进制值出现的概率统计如表3;变长编码如表4。由表4可见,概率大的得到短编码,概率小的得到长编码。如果将这些编码按照图29中“之”字形扫描后数据流排序排列起来,如图31所示。



    由图30,31和表3,4可见,原始的8×8像素块要用64×8=512比特,量化和变长编码后要用100比特,高于5:1压缩。经过游程长度编码后,二进制编码的新数据流为58比特,其压缩比高于8:1。显然,编码是码率压缩的关键,因为编码是对数据流中的每个符号分配一种特定的码值的过程,选择最有效的码值决定了编码的有效性,从而有效地降低熵值。这里,对DC分量进行DPCM编码以及对AC分量进行变换编码,如DCT,都是为了降低熵值 ;对AC分量进行熵值编码,如RLC和VLC,都是为了减少比特数。

    图32为DPCM编码的例子。由图可见,原数据需要传输75比特的数据,通过DPCM后,只需要传输47比特的数据,压缩比为1.6:1。图33是RLC编码的实例,由图可见,原数据52比特经过RLC后,压缩为16比特,压缩比为3.25:1。(未完待续)

阅读(826) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~