王 林,杨 红,卿粼波,滕奇志,何小海,陈洪刚
(四川大学 电子信息学院,四川 成都 610065)
随着高光谱成像技术的发展,高光谱图像具有越来越高的光谱分辨率和空间分辨率,给数据的存储和传输带来了严峻的挑战[1]。由于高光谱图像需要由遥感平台传输到地面,面临着内存资源、计算能力有限等问题,因此设计一种简单高效的压缩方案是高光谱领域需要解决的重要问题。考虑到无损压缩只能提供有限的压缩比,有损压缩更加适合硬件资源、下行带宽有限的遥感平台,因此本文对高光谱图像的有损压缩进行深入研究和分析。
传统的高光谱图像有损压缩方法,可分为2类:① 采用独立编码独立解码的方式,如静态图像压缩编码标准JPEG2000[2],这种方式只能去除高光谱图像的空间冗余,无法去除光谱冗余,因此不能获得有效的压缩性能;② 采用联合编码联合解码的方式,如文献[3]将JPEG2000与一维光谱去相关方法DWT(Discrete Wavelet Transform)、DCT(Discrete Cosine Transform)和 KLT( Karhunen-Loeve Transform)相结合。虽然这种传统类型的算法可以有效地利用消除相邻波段图像之间的冗余,然而编码复杂度高,需要大量的存储空间,并且无错误恢复能力。分布式信源编码(Distributed Source Coding,DSC),采用独立编码联合解码的方式。这种思想的无损压缩理论基础是Slepian-Wolf[4]理论,有损压缩理论基础是Wyner-Ziv[5]理论。DSC的主要应用领域有无线传感器网络[6]和图像[7]、视频编码[8-9]等。近年来DSC在高光谱图像压缩中得到了广泛的应用,因为它将复杂度从编码器转移到解码器[10],并且在 DSC中利用了信道编码技术,抗误码能力强,从而满足星载压缩的要求[11]。文献[12-13]提出基于DCT的高光谱图像分布式编码方案,利用SPHIT(Set Partitioning in Hierarchical Trees)算法重组每个编码块的DCT系数,进而提取位平面,但基于块的操作会导致方块效应。文献[14]提出一种基于三维小波变换的高光谱图像分布式编码方案,通过不同的传输通道对变换后的高频部分和低频部分实现独立的SPIHT编码,该方案虽能有效提升编码效率,但三维小波变换增加了计算复杂度和内存需求。同时,文献[15]提出了基于像素域的高光谱图像分布式编码方案,采用基于块单元的线性预测方法去除谱间相关性,但基于块的预测方案不仅会产生大量附加信息和方块效应,并且使用当前块在前面2个波段中的同位块构造边信息会造成误码在光谱方向的扩散。针对上述问题,本文利用二维DWT的高低频分离以及多尺度分析的特点,将高光谱图像的空间能量集中起来,借助高光谱具有谱间相关性的特点设计了分层预测结构,可获得边信息(Side Information,SI)质量的提升。
本文对1997年机载可见光红外成像光谱仪(Airborne Visible/Infrared Imaging Spectrometer,AVIRIS)获取的高光谱图像进行了仿真实验。实验结果表明,与传统的高光谱图像有损压缩算法以及文献[15]提出的分布式有损压缩边信息生成算法相比,该算法具有较好的率失真性能。
本文提出了一种基于分层预测的高光谱图像有损压缩方案,算法整体框架如图 1所示。图1中用灰色显示的模块是本方案的核心模块,其中分层预测和边信息生成模块在后续进行详细介绍。
图1 算法整体框架Fig.1 Overall framework of the algorithm
本方案的工作流程可分为三步:
(1) GOP设置预处理。设高光谱图像总的波段数为M,首先将高光谱图像连续输入的N波段图像作为一个图像组(Group of Pictures,GOP),则GOP大小为N。图像分组示意图如图 2所示,每个GOP中的前N-1个波段设为WZ波段,最后一个波段设为K波段(其中第一个波段的图像即波段0作为K波段,但不属于任何GOP)。当M≠n×N+1(n为正整数)时,这些图像能构成的GOP数量为floor((M-1)/N),而余下的(M-1-floor((M-1)/N)×N)个图像不足以构成一个GOP,这时WZ波段将处于2种区域即GOP区域和non_GOP区域。GOP区域中的WZ波段采用分层预测结构生成边信息;non_GOP区域的WZ波段将进行特殊处理,只采用前向相邻的一个已解码波段来生成边信息,边信息生成方式将在1.3节进行详细描述。
图2 图像分组示意图Fig.2 Image grouping diagram
(2) 编码。K波段采用JPEG2000进行编码。WZ波段的编码首先减去该波段的均值,进行二维小波变换。图像小波变换后的低频子带可以看作原始图像的低分辨率版本,在图像压缩中具有重要意义。在对原始图像进行小波变换之前减去该图像的均值,得到的低频系数呈现零均值分布和拥有单一尖峰,符合拉普拉斯分布。而比特平面编码是一种对分布在零处有尖锐峰值的图像渐进压缩的有效方法,因此可以减小重建光谱波段的偏差,提高重建图像的质量。然后对得到的小波系数分别进行量化和比特面分解,最后对每个比特面按从高到低的顺序进行LDPC[16]信道编码,得到的校验信息被储存到缓冲器中。
(3) 解码。K波段采用JPEG2000进行解码,得到K波段的重建值。WZ波段的解码首先利用分层预测结构,由2个已解码的波段对当前波段进行加权预测,生成联合解码的SI。其次,SI和编码端传输过来的校验信息一起进行LDPC信道解码,如果解码不成功,则通过反馈信道向编码端请求更多的校验信息,直到解码成功或者达到最大解码次数。然后,将解码的比特面合并后得到的重构信息进行反量化与反变换,再加上该波段的均值,得到当前WZ波段的重建值。最后,将K波段重建值与WZ波段重建值组合起来,得到解码后的高光谱图像。
分层B帧预测结构德国HHI实验室提出,在视频编码中由于分层B帧结构的引入使得编码效率大大提高[17]。本文借鉴分层B帧的思想提出了一种分层预测结构,参考当前WZ波段相邻的2个已解码波段的重建值生成高质量的边信息,框架结构如图3所示。
图3 图像分组示意Fig.3 Layered WZ bands prediction structure
图3中,箭头代表波段图像在光谱方向上的预测关系,GOP长度为8。高光谱图像按照当前波段与其参考波段的间隔长短分成不同的预测层(Prediction Layer,PL),其中第1~8波段属于一个GOP,第0波段不属于任何GOP。可见,第0波段和第8波段为K波段,其预测层最低,设为PL=0。WZ波段分为了3层,第4波段位于PL=1层,第2波段和第6波段位于PL=2层,第1、3、5、7波段位于PL=3层。在分层的预测结构中图像解码顺序和显示顺序是独立的,处于高预测层的WZ波段可以使用低于其预测层的已解码波段作为参考。本文使用分层预测结构来确定一个GOP中图像的编解码顺序。
根据以上分析,分层预测结构确定了图像的编解码顺序以及参考波段的选取,当前波段通过多元线性回归模型[18]获得预测系数α,由已解码的波段来生成SI。1.1节描述了GOP设置预处理,当M≠n×N+1(n为正整数) 时,当前WZ波段将会处于2种区域GOP区和non_GOP区域。下面描述2种区域WZ波段的边信息生成方式。
当前WZ波段属于GOP区域,则当前WZ波段的参考波段数量P=2,α=[α1,α2]T,且与它的前后向参考波段距离都为l(l=1,2,3,4),当前波段的边信息可表示为:
(1)
当前WZ波段属于non_GOP区域,则当前WZ波段的参考波段数量为p=1,α=α1,且与它的前向参考波段距离都为l(l=1),当前波段的边信息可表示为:
(2)
为验证所提算法的有效性,本文对1997年AVIRIS传感器获取的几个高光谱图像场景进行测试。AVIRIS传感器由美国NASA(National Aeronautics and Space Administration)下属的喷气动力实验室设计,在0.4~2.5 nm波长范围内,所获取的高光谱图像共有 224 个波段,光谱分辨率为10 nm,空间分辨率为 20 m×20 m,每个像素存为16 bit。测试的高光谱场景共有3个,包括Cuprite、Low Altitude和Lunar Lake,这些高光谱图像已在许多高光谱图像压缩的论文中得到了应用。图 4显示了3幅高光谱场景的第50波段图像,图像分辨率为512 pixel×614 pixel。实验时从每个场景中提取了100个波段,每个波段裁剪为512 pixel×512 pixel。GOP的大小设置为8,空间方向上进行3级二维小波变换,K波段的固定码率为6 bpp(Bit per Pixel),利用信噪比(Signal-to-noise Ratio,SNR)作为图像质量的评价指标。
(a) Cuprite
(b) Low Altitude
(c) Lunar Lake图4 不同高光谱图像场景的第50波段Fig.4 The 50th band of different hyperspectral image scenes
2.2.1 边信息质量对比
为了验证本方案的分层预测结构能生成高质量的边信息,本文与文献[15]中边信息的率失真曲线进行了对比,如图5所示,其横坐标为编码每个像素所需的码率,单位为bpp,纵坐标为图像的质量评价指标SNR,单位为dB,在相同码率下,SNR越高,说明图像的质量越好。从图5中可以明显地看出,在低码率情况下,本文的边信息率失真曲线明显高于文献[15]。原因是,文献[15]由于之前的重构块被用来构造当前块的边信息,重构块引入的失真可能会严重影响边信息的质量,从而导致算法性能下降,并且该边信息生成算法按波段顺序工作,因此在低比特率下会造成光谱方向上的误差扩散。而本文所提出的算法,将高光谱图像分为若干个GOP,GOP中K波段和WZ波段采用了不同的编解码方式,K波段的重建完全不依赖于之前的已解码图像,因此能将误差限制在一个GOP中,而不会在整个光谱方向上持续扩散。因此,在低码率情况下,即压缩比较大时,本文能获得更高的边信息质量,从而获得更高的重建图像质量。
(a) Cuprite
(b) Low Altitude
(c) Lunar Lake图5 边信息质量对比Fig.5 Side information quality comparison
2.2.2 整体RD性能对比
为进一步验证所提算法具有良好的率失真性能,如图6所示,给出了分别采用JPEG2000[19]、DWT+JPEG2000[3]、文献[15]提出的边信息生成算法以及本文算法,AVIRIS重建图像的信噪比SNR随码率变化的率失真性能曲线。
(a) Cuprite
(b) Low Altitude
(c) Lunar Lake图6 AVIRIS图像率失真性能对比Fig.6 AVIRIS image rate distortion performance comparison
从图6可以看出,本文所提出的算法率失真性能最好,与未考虑去除光谱冗余的JPEG2000相比,Cuprite、Low Altitude和Lunar Lake的SNR平均提升了14.37,18.91,13.73 dB;与考虑了去除光谱冗余的传统编码算法DWT +JPEG2000相比,SNR平均提升了3.29,6.02,3.0 dB;与文献[15]提出的边信息生成算法相比,SNR平均提升了0.49,1.67,0.90 dB。这是因为JPEG2000对于静止图像具有良好的率失真性能,但对于高光谱图像由于没有考虑相邻波段图像的相关性,无法消除光谱冗余,因此无法实现较高的编码效率。在高光谱图像压缩中,为了提高率失真性能,去除光谱相关性是非常重要的。DWT+JPEG2000去除了光谱相关性,率失真性能优于JPEG2000,但DWT+JPEG2000需要逐像元进行谱间去相关,内存需求大,因为所有波段需要同时进行变换。文献[15]提出的边信息生成算法在低码率下,由于光谱方向上的误差扩散,与本文所提算法有着明显差距。因此,本文相对于JPEG2000、DWT+JPEG2000以及文献[15]提出的边信息生成算法,均具有更好的率失真性能。
图7 信源编码复杂度比较Fig.7 Source coding complexity comparison
2.2.3 时间复杂度对比
使用编码时间来评估每个算法的复杂度,由于JPEG2000以及DWT+JPEG2000不包含信道编码,因此文中将编码复杂度分为两部分来比较,首先比较的是信源编码的时间,各个算法信源编码复杂度的比较结果如图7所示;其次比较了文献[15]和本文所提算法的信道编码时间,比较结果如图8所示。
图8 信道编码复杂度比较Fig.8 Channel coding complexity comparison
如图7所示,纵坐标表示每波段图像的平均信源编码时间,单位为s,信源编码时间按从多到少排序为DWT+JPEG2000>PROPOSED>JPEG2000>文献[15]。DWT+JPEG2000信源编码在JPEG2000的基础上要进行光谱方向的一维小波变换,因此时间复杂度最高。文献[15]在像素域进行编码,不需要进行图像变换,因此编码时间最少,但本文算法整体率失真性能略高于文献[15],并在低码率情况下优势明显。本文所提算法在率失真性能方面相较于JPEG2000以及DWT+JPEG2000有着较大优势,同时信源编码复杂度与JPEG2000相当,并低于DWT+JPEG2000。
如图8所示,纵坐标表示每波段图像的平均信道编码时间,单位为s,对比了文献[15]和本文的信道编码时间,本文算法所需要的信道编码时间低于文献[15]所需的信道编码时间。这是因为本文算法将图像变换到小波域,能量集中到了低频子带,低频子带数值较大,高频子带数值较小,因此按照每个子带对每个比特面进行编码时增大了连续0、1出现的概率,提高了信道编码的效率,由于文献[15]在像素域上进行编码,没有将图像能量集中起来,因此在对每个比特面进行编码时需要耗费较多的时间。
针对高光谱图像星载压缩存在内存资源、计算能力有限等问题,本文提出了一种基于分布式信源编码的高光谱图像有损压缩算法,将高光谱图像分为若干个GOP,避免了误差在光谱方向上的扩散,利用高光谱图像的谱间相关性,引入分层预测结构生成高质量的WZ波段边信息,节约了解码所需的码率。由于本文是将量化后的小波系数进行比特面分解得到二进制数据流,高位比特面的重要性要高于低位比特面,因此下一步的研究方向是将码率分配方法引入到本文所提框架中,为不同比特面分配不同的码率,当比特面较高时,分配较多比特以保证高位比特能够正确解码,可以进一步提升编码性能。