适合于高分辨力航测图像压缩的低复杂度算法
2011-06-25李其虎任国强吴钦章
李其虎 ,任国强,吴钦章
(1.中国科学院光电技术研究所,四川 成都 610209;2.中国科学院研究生院,北京 100149)
0 引言
随着航天技术的飞速发展,空间飞行器的有效载荷数量、分辨率、采样率等不断增加,目前有限的信道传输和存储能力已经无法适应空间航测、遥感图像的海量数据,成为制约空间航测、遥感分辨力提高的瓶颈。因此必须对高分辨力航测、遥感图像产生的数据进行实时的压缩,以解决数据码率传输、存储和信道带宽之间的矛盾。然而传统的数据压缩方法都存在不同程度上的局限性,如差分脉冲编码调制(DPCM)[1]压缩不高,矢量量化(VQ)方法的计算复杂度随着维数的上升急剧增加,JPEG在压缩比较高时又存在明显的方块效应[2]。在传统傅里叶分析基础上发展起来的基于小波分析理论的多种图像压缩算法以其良好的时频局域性和多分辨率分析能力而广泛应用于航测、遥感等图像压缩领域[3]。
目前,国内外许多学者已经提出了多种结合不同编码措施的小波压缩算法。其中改进和应用较多的有EZW,SPIHT和EBCOT算法[4-6]。传统的EZW和SPIHT在编码时都是采取了链表式结构,存储空间较大,熵编码采用算术编码,计算量较大,不宜与硬件实现。EBCOT是当前流行的JPEG2000的核心编码算法,虽然EBCOT编码会产生较高的压缩比、细致的码流结构和良好的稳健性等诸多优点,但是EBCOT算法是采用比特位平面算术编码,在编码时除对最高比特平面外,每个比特平面都要进行三通道扫描编码。且在编码时要为每个编码码块分配一定的存储空间,在第二级码率截取时,又会丢失掉前一级编码中产生的码率,从而造成了巨大的资源浪费,算法复杂高,硬件实现困难较大。
考虑到算法的复杂度以及硬件实现的困难性,本文提出了一种基于提升小波变换的高分辨力航测图像压缩算法。通过对原始的图像进行提升变换,依据正交小波变换的子带变换增益对变换后的图像系数进行最佳量化,利用图像进行小波分解后的系数概率分布特点,对最低频子带LL进行一种基于上下文的预测编码。对去除相关性的其他频带应用游程编码联合哥伦布指数编码进行图像压缩。实现结果表明,与目前常用的基于小波分析的图像压缩算法相比,本文方法在压缩性能指标上接近JPEG2000,明显优于SPIHT算法。但算法复杂度远比JPEG2000和SPIHT低,适合于硬件的高速实现。
1 算法简介
图像压缩目的主要是去除图像当中的诸多冗余,从而实现用较少的比特率来表示一幅图像信息。通常图像变换编码框架主要由3部分组成,即变换、量化和熵编码。变换主要是去除图像像素之间的相关冗余,量化去除视觉冗余,而熵编码是为了去除概率冗余。其中量化是实现数据压缩最主要的方式,故如何对变换数据实施最佳量化就显得至关重要(后面将会单独介绍)。图1给出了本文算法的流程框图。
首先对于输入的图像数据进行5级二维5/3小波变换,由于图像分辨力较大,采用5级变换可以较好地去除图像像素之间的相关性。然后对变换后的系数进行量化,量化准则参考后面所介绍的最佳量化准则进行。为了进一步去除LL频带系数之间的相关性,对LL频带进行一种二维预测编码方式进行编码。而由于在其他高频子带量化后的系数会出现大量0。结合小波变换的特点,按照一定的方式进行扫描,对扫描后的系数进行自适应游程编码联合哥伦布指数编码对其他高频子带进行熵编码,以较好地去除量化后像素之间的概率冗余。
2 提升小波变换与最佳量化
2.1 5/3提升小波变换
传统的基于卷积的小波变换计算复杂度高,内存需求量大,不能满足实际工程需求。提升小波的提出很大程度上克服了这些难题。提升小波变换算法的基本思想是将Mallat算法中的每一级滤波运算分解为分裂、预测和更新三大步骤,完成对信号的分解。本文算法采用的是一种适合硬件实现的5/3提升小波变换。当对一副图像进行变换时,只需对行和列进行一次提升就可以实现一级变换。式(1)和式(2)为5/3正向小波变换表达式
式中:Xext(n)表示对原始信号X进行对称边界扩展后的信号;i0,i1分别是X第一个样本和最后一个样本的序号。从上面2个表达式可以看出,5/3提升小波变换在变换中无须添加附加内存,小波系数可以直接覆盖原始数据。正反变换的提升结构对称、实现简单、便于并行计算等优点使得该提升结构成为硬件实现的主流方法。
2.2 最佳量化准则
一般认为,同一小波子带中各个系数值具有相同的概率分布,故对同一子带中所有系数采用同一量化器。文献[7]中指出小波高频子带系数符合广义高斯分布。该小波系数的概率密度函数为p(x)=aexp(- ||bxr),其中a和b是与r有关的参数,r是控制概率密度函数形状的参数,r=2时即为高斯分布。当r=0.7时,p(x)与小波高频子带系数分布最为接近[8]。将问题归一化,如果输入数据符合方差为1的r=0.7广义高斯分布,量化器层数为L时,带死区的均匀量化误差D为
式中:中Δ0为基本量化步长,通过改变Δ0可以对压缩码率和失真度进行调节。对于正交小波变换可以近似为Gb≈22b。结合式(6)得到5级小波变换系数最优化量化步长如表1所示。
3 熵编码
3.1 熵编码结构
由于小波变化后的图像像素在最低频带仍然有着很强的相关性,故本文算法选择对最低频带采用复杂度较低、准确性较高的JPEG_LS预测算法,其预测模板如图2所示,根据预测式(7)求出Ni,j
表1 5级小波变化系数最佳量化步长
在低频子带中,利用预测出的 Ni,j与真实值 Ii,j进行差值计算,对残差进行哥伦布指数编码。具体方法为在对当前像素 Ni,j进行编码时,首先判断 Ni,j与 Ni,j+1是不是相等,如果相等则进入游程编码模式。在游程编码模式中,对于中断游程的像素再进行哥伦布指数编码。而在HH,HL和LH频带由于小波变换的良好去相关性,这些频带中将会出现大量0区域。结合小波变换系数特点,按照图3的扫描方式对量化系数进行自适应游程编码。
3.2 哥伦布指数编码与自适应游程编码
指数哥伦布码字是一种可变长的前缀码,对经常出现的数据指定较少的位数表示,对不常出现的数据指定较多的位数表示,故而得到的码长不是固定的,总体来说节省了存储空间。此外由于编码时无需事先建立和存储码表,可以通过比访问存储码字快的多的硬件计算产生码字,故硬件实现起来更加简单。正是由于哥伦布编码的诸多优点,其已被JVT的H.264和中国的音视频编码标准AVS所采用。哥伦布编码时需要选定一个参数b,对于样本n的码字主要包含两部分,n/b的整数部分一元码字和n mod m的二进制表示。这些码字对于呈几何分布的整数n(即n的概率是(1-r)rn,其中0<r<1)是理想的。对任何这样的几何分布存在一个m值,使得基于它的哥伦布码字可能的平均码长最短。
以上所有讨论的哥伦布编码样本都是非负的,但是由于小波变化后的系数不可能都为负数,故算法采用式(8)将量化后的小波系数value映射成非负值mvalue。
小波变换有效地去除了像素之间的相关性,使得在高频子带出现许多区域为全零,如果直接编码样本系数,则码率必然大于系数的一阶熵[10],为提高编码效率,本文在对高频子带编码时,采用了自适应游程编码联合哥伦布指数编码方式。具体方式可描述如下:编码时首先对输入的样本进行连续相同样本个数统计,但是该统计只限于在一行中进行,对于统计后的样本个数和样本值进行哥伦布指数编码。文献[11]中实验结果表明对于量化后的图像小波系数,游程编码可以有效地减少样本个数,提高压缩比。随着量化步长的的增加,游程编码后的样本数也成倍的减少,但其信息熵几乎不变。这样的话,采用哥伦布指数算法对这些量化后样本编码就可以快速高效地实现图像数据的压缩。
4 实验结果与分析
为了检验上述算法的效果,笔者在VC6.0环境下开发了编解码仿真程序。实验图像大部分采用自行研制开发的航测相机外在场实验拍摄的航测图像(除常用测试图像机场外)来检验本文算法。这些图像包括航测图像城市(City1,City2)、海洋(Ocean)、农田(Farmland)、山丘(Mountain)和机场(Air station),测试图像见图4。图像分辨力大小为2048×2048,深度为8 bit。并与常用的基于小波变换的SPIHT压缩算法和最新的JPEG2000标准在压缩性能上进行了比较。实验结果数据采用最小二乘拟合得到3种算法的PSNR(Power Signal Noise Ratio)-压缩比曲线如图5所示。从实验结果可以看出:
1)本文算法在压缩性能上完全优于常见的SPIHT算法,略低于JPEG2000标准。相对于JPEG2000和SPI⁃HT算法来说,本文算法编码更加简单,既没有SPIHT算法中的3个链表LSP,LIP和LIS,也不需要像JPEG2000标准算法那样为每个码块分配一个较大的存储单元,这样节省了硬件实现时大量的存储容量。
2)本文算法在压缩性能上(PSNR)稍逊于JPEG2000标准,这是因为JPEG2000采用了高复杂度的EBCOT编码算法。该算法在编码时对每个码块的每一个位平面都采用三通道扫描编码方式。熵编码效率要优于本文所提算法。虽然JPEG2000的压缩算法性能优越,应用较广,但是若将其应用到空间飞行器上则具有很大的局限性。首先,JPEG2000本身是基于最佳率失真的,内部必然会有一些反馈操作[6],这不利于硬件的并行实现;其次,它的编码核心算法EBCOT相当复杂,采用硬件实现十分困难。该算法硬件实现的不易性导致它不可能广泛应用于数据量相当大的高空航测遥感领域数据的压缩。
3)支持无损压缩,如果不对变换后的小波系数进行量化,直接按照上述扫描方式进行编码,则可以完全解码出原始图像,而不丢失任何信息。仿真结果表明本文无损压缩效果要好于JPEG2000算法,和JPEG_LS算法相当。
由此可见,本文算法在算法的复杂度和压缩性能上进行了较好的平衡。当然在压缩性能上也明显优与传统的一些图像压缩算法。
5 小结
针对航测图像数据量庞大,难以实时存储和传输的问题。本文提出了一种基于小波分析的低复杂图像压缩算法。该算法首先将图像进行5级5/3小波变换,基于统计意义对变换后的图像数据进行了最优量化。针对低频子带的数据相关性,引入了JPEG_LS预测编码。而对于高频子带采用了复杂度低,易于硬件实现的自适应游程编码联合哥伦布指数编码对量化后的数据进行编码。本文算法具有以下优点:1)复杂度低;2)无需建立链表,没有复杂的上下文关系;3)整个算法过程中无需存储大量数据,大大地节省了硬件实现的存储器需要;4)最佳量化准则的引入使得整个算法在编码过程中,无需涉及过多的乘法和小数运算;5)支持无损到有损的图像压缩,适应范围广。实验结果表明本文算法针对不同的航测图像都具有较好的压缩效果,从而验证了算法的可行性,为研制高性能、高速的VLSI图像压缩芯片提供算法基础。
[1]徐康兴.低码率场内预测DPCM图象编码及其图象质量评价[J].电视技术,1987,11(10):2-6.
[2]吴乐南.数据压缩[M].2版.北京:电子工业出版社,2005.
[3]徐欣锋,黄廉卿,徐抒岩,等.高空间分辨率遥感图像实时压缩进展[J].光学精密工程,2004,12(3):266-271.
[4]SHAPIRO J M.Embedded image coding using zerotree of wavelet coeffieients[J].IEEE Transactions on Signal Proeessing,1993,42(12):3445-3462.
[5]SAID A,PEARLMAN W A.A new fast and efficient image codec based on set partitioning in hierarchical trees[J].IEEE Transactions on Circuits and Systems for Video Technology,1996,6(6):243-250.
[6]TAUBMAN D S,MARCELLIN M W.JPEG2000 image compression fundamentals,standards and pracyice[M].[S.l]:Kluwer Academic Publishers,2001.
[7]ANTONINI M,BARLAUD M,MATHIEU P,et al.Image coding using wavelet transform[J].IEEE Transactions on Image Processing,1992,1(2):205-220.
[8]LAZAR D,AVERBUCH A,ISRAELI M.Image compression using vector quantization on wavelet coefficients[J].IEEE Transactions on Image Processing,1996,5(1):4-15.
[9]谭毅华,王振华,田金文,等.率失真最优的多分辨率小波图像压缩方法[J].中国图象图形学报,2004,8(9):927-933.
[10]姜丹.信息论与编码[M].合肥:中科学技术大学出版社,2004.
[11]徐勇,徐智勇,张启衡,等.适合硬件实现的低复杂度图像压缩[J].光学精密工程,2009,9(17):2262-2268.