基于DCT变换的数字图像分层压缩编码

2010年11月10日 15:29    发布者:zengchao8593
基于DCT变换的数字图像分层压缩编码本文以DCT变换为基础,提出一种可以适用于不同网络传输环境下的分层编码方法。基于系数重要性的分层编码根据域中系数重要程度不同和信道传输特性,有选择地舍弃部分系数达到分层压缩的目的;基于比特平面的分层编码通过分析系数的比特平面,按照比特平面进行分层,根据设置的参数实现不同质量的图像压缩编码。 互联网和电信网络的迅速发展为数字图像的传输提供了必要条件,但是不同接入方式其传输带宽有很大的差别,因此,研究具有可伸缩性的图像编码方法具有重要的意义。可伸缩性编码是指同一编码源可以随着接入方式的不同,提供不同质量的数 字图像。本文针对这种需求,提出了一种可以适应不同网络传输条件的数字图像编码方法,即分层编码。 目前,无论是互联网的UDP连接还是ATM网络上都存在丢信元/帧的问题,而现在还没有可以完全避免信源元丢失的技术方案。分层编码方法将数字图像按照人眼视觉特性对不同频率分量信息的敏感度不同,将图像信息分量分为不同的层次,当网络出现拥塞时有选择地丢弃低优先级的信息,在给定的信道带宽的条件下,提供尽可能高质量的数字图像。本文以DCT变换为基础,研究DCT变换中分层压缩编码,并且给出不同分层条件下的实验结果。 DCT变换 DCT变换的基本思路是将图像分解为8×8的子块或16×16的子块,并对每一个子块进行单独的DCT变换,然后对变换结果进行量化、编码。随着子块尺寸的增加,算法的复杂度急剧上升,因此,实用中通常采用8×8的子块进行变换,但采用较大的子块可以明显减少图像分块效应。 在图像压缩中,一般把图像分解为8×8的子块,然后对每一个子块进行DCT变换、量化,并对量化后的数据进行Huffman编码。DCT变换可以消除图像的空间冗余,Huffman编码可以消除图像的信息熵冗余。 DCT是无损的,它只将图像从空间域转换到变换域上,使之更能有效地被编码。对一个图像子块而言,将对变换后的64个系数进行量化,并对Z字顺序扫描系数表进行编码。这种排列方法有助于将低频非0系数置于高频系数之前,直流系数由于包含了所有图像特征中的关键部分而被单独编码。量化后的系数经过熵编码进一步无损压缩,通常采用的是Huffman编码。这种压缩编码方法中,图像质量的降低主要是由于对系数的量化造成,且不可恢复。假设子图像为f(x, y),则DCT变换可以由下面的公式实现:













其中式(1)的f(u, v)表示变换域的高频成分,也称为交流系数;式(2)中F(0, 0)表示变换域中的低频成分,也称为直流系数。对变换结果进行分析,可以看出能量主要集中到左上角。DCT变换具有良好的去相关特性。在图像的压缩编码 中,N一般取8。 在解码时首先得到各点的DCT系数,然后根据下面的DCT反变换即可恢复出原图像。DCT的反变换公式为:


利用公式(3)可以无损地恢复原图像。在实际的应用中,使用DCT变换的矩阵描述形式更容易理解。   基于系数重要性的分层编码 按照上面的方法对图像变换之后的系数进行编码,产生的码流不具有分层的特性,因而不具有分级传输的 能力。为了实现分层压缩,我们对变换后的系数进行重新排列(见图1),再进行支持分级传输特性的编码。 由上面图中的方法可知,变换后能量集中到变换域的左上角。因此基于DCT变换的图像压缩方法是对系数采用“Z”字型扫描的方式处理。为了实现分层编码,我们将这些系数重新排列,然后进行分层次的编码:左上角的4个系数作为基本层的数据;左上角16个系数作为第一增强层的数据,这16个系数是除基本层中的四个系数以外的其余系数;从16-47的数据作为第二增强层的数据;其余的16个系数作为第三增强层数据。 经过重排并进行分层压缩之后,在各个层次上进行测试可以发现,在只传输基本层时可提供峰值信噪比为23.23dB以上的图像;增加一个增强层,图像的峰值信噪比强达到28.9dB以上;如果加入第二个增强层,恢复图像的峰值信噪比可以达到37.35dB。 采用这种方法,通过对DCT变换后的系数按照其重要性进行取舍,可以非常方便地实现图像序列的分层压缩和分级传输,大大提高压缩算法对不同传输通道的适应能力,并兼顾到帧内图像质量与帧速率。在一般的应用场合下,只传输第一增强层的数据即可达到较好的视觉效果,此时需要熵编码的数据量已经减少为原数据量的1/4,通过熵编码的方法,可以获得很高的压缩比。 基于比特平面的分层编码 另外一种支持分层分级压缩编码的方案是采用比特平面分层的方法。在经过DCT变换之后的数据中,通常较大的系数集中在左上角,同时它也是重要的系数。分析这些系数可以发现,左上角的系数的值比较大,因此可以在不同的传输特性下将图像变换后的数据按比特平面的先后次序进行编码,先将高比特的比特平面编码,对于一些小的系数,其高数据比特必然为零,从而减少编码的数据量,实际上等价于减少系数的个数,忽略较小的系数,从而得到一个低速码流。在该低速码流中,由于 包括了所有系数的较高比特,因此,可以将其作为图像的基本层。依次将不同比特平面上的数据编码为不同的层,从而实现基于DCT变换的另外一种压缩方法。整个处理的过程如图2所示。 对量化之后的数据按照比特的重要性进行分层,按照分层的策略扫描比特平面的顺序如图3所示。将分层后的数据采用游长编码的方法进行压缩编码。 图3(a)表示扫描所有比特时的扫描顺序,(b)表示有选择扫描时的扫描顺序。对DCT变换后的系数量化,将其用9个比特来表示。将Bit8~Bit4作为基本层的数据,Bit3和Bit2作为第一增强层的数据,Bit1和Bit0作为第二个增强层数据。采用这种划分方法,按照比特平面重要程度的不同,将其编码到不同逻辑信道,从而实现数字图像分层压缩编码。 需要注意的是,在比特分层的测试中,对于DC系数不能采用分层的方法进行编码,必须采用原来的编码方法,否则将使图像的质量极度恶化,几乎无法得到任何有用的信息。 与前一方法相比,这种方法的实现显然更复杂,但同时也更灵活。也有专家提出一种比特分层的压缩算法,在进行分层压缩时,如果在基本层或上一个增强层中出现过不为零的比特时,对于后一增强层中的非零比特采取忽略的办法,以获得更加高的压缩比。但实际上对这种压缩方法进行测试时,无法得到其声称的压缩效果,因此在本文中仍然采用全部扫描的方法。 实际上,采用按照比特平面扫描编码方法可以实现更细的分层,在特定的传输特性下取得最有效的编码效率。表1是针对不同的图像采用逐个比特分层时的实验结果。 比较两种方案可知,在只考虑基本层数据的情况下,前者的PSNR比后者大约要高出2dB,而且其实现也更加容易,因此,前一方案是首选的分层分级压缩编码方法。本文的所有测试图像尺寸为512×512、256级灰度,其中“Lena”为一般的人物图像,“Pepper”为自然物体图像,“Camera”为几何形状明显的图像,“Women”为具有分付细节特征的人物图像。从结果可以看出,对不同类图像均可以获得相近的实验结果,说明这种方法可以适用于所有的数字图像。 本文小结 本文介绍了数字图像的分层压缩方法,并且对两种分层压缩的结果进行了比较。第一种实现方案中,根据DCT变换后各系数的重要程度,通过对系数有选择的丢弃实现分层压缩编码,因而最为简单,它的特点是增强层的数据量比较大。而针对比特平面的分层压缩算法的计算复杂度高于前者,但是它具有最明显的分层效果,根据传输信道的不同,可以实现更多级别的分层,因此是基于DCT变换最灵活的分层压缩算法。 参考文献:
1.JPEG(ISO/IEC JTC1/SC2/WG8) Diagital Compression and Coding of Continous Time Still Pictures .ISO CD10918-1, 1991.3。
2.MPEG(ISO/IEC JTC1/SC29/WG11) Coding of Moving Pictures and Associated Audio for Digital Storage Media at Up to 1.5Mbps .ISO CD11172, 1991.11。
3.A Layered DCT Coder for Internet Video. Elan Amir, Steven McCanne,Martin Vetterli University of California Berkeley, CA
4.郁晓宏、姚敏,小波变换及在图象变换中小波系数地分析,计算机工程,2001 No.2 Vol.21,pp35-38。
5.张正炳、朱光喜、朱耀庭,基于亚取样分形插值预测的混合图象编码方法,通信学报,1998 No.8。

网友评论

higoogle 2010年11月21日
算法  我的薄弱环节