当前位置: IC37首页 > 技术资料 > 通信网络 > 一种基于3维SPECK编码的超光谱图像压缩算法
一种基于3维SPECK编码的超光谱图像压缩算法
类别:通信网络
摘要:提出一种针对超光谱图像压缩的基于小波变换的、嵌入式的3维块分割编码算法。通过3维小波变换,将超光谱图像的空间冗余和谱间冗余同时去除。针对变换域内的小波系数,将集合分割嵌入式块SPECK编码算法扩展为3维,构造一种3维SPECK编码算法,对小波系数进行量化编码。实验证明,3维SPECK编码算法具有良好的率失真性能,其压缩效果优于采用SPECK方法对每一波段图像做压缩编码的效果,并具有计算复杂度低和嵌入式的特性。 关键词:超光谱图像压缩 3维小波变换 3维SPECK(Set Partitioned Embedded bloCK)算法 随着空间遥感技术的发展,超光谱成像技术在资源勘测、环境调查、灾害预报、军事侦察等领域得到越来越广泛的应用。并且,随着光谱层板技术与电子技术的不断成熟,成像光谱仪的空间分辨越来越高,波段数越来越多,产生的数据量也越来越大,给存储和传输带来了很多困难。因此,必须对超光谱遥感图像进行有效的压缩,以满足卫星遥感平台的应用需要。 从其成像原理看,超光谱图像像素之间存在两种相关性:同一波段内像素之间的空间相关性和不同波段像素之间的谱间相关性。同时,与自然图像相比,超光谱图像含有丰富的纹理信息,空间相关性较差,而谱间相关性很强。在对超光谱图像进行压缩时,要有效地去除这两种相关性。 近年来,小波变换方法在图像压缩领域得到了广泛的应用。小波变换具有空间——频率域内的局部化特性,能对图像进行多分辨率分解,较好地去除像素间的相关性,同时保持图像在各个分辨率下的精细结构,有利于图像的压缩编码。目前,出现了很多基于小波变换的图像压缩算法,比较有代表性的有Shapiro提出的EZW算法、Said和Pearlman提出的SPIHT算法、Islam等提出的SPECK算法以及Taubman提出的被采纳为JPEG2000标准核心压缩算法的压缩中,并针对超光谱图像的特点,研究了适合超光谱图像压缩的方法,例如Dragotti等使用KL变换去除光谱维的谱间相关性,使用2D DWT去除空间相关性,随后用一种3维SPIHT算法对变换系数进行量化编码。另外,WANG Qi等使用1+2维小波变换去除超光谱图像的空间相关性和谱间相关性,对每一波段图像的小波系数采用EBCOT方法进行压缩编码。
本文在这些研究成果的基础上,提出一种基于小波变换的3维SPECK编码算法。该算法首先对超光谱图像序列进行3维小波变换,同时去除空间相关性和谱间相关性,然后将SPECK算法扩展到3维,构造一种3维SPECK算法对小波系数进行压缩编码。实验证明,3DSPECK算法具有良好的率失真性能,其压缩效果远远优于采用SPECK方法对每一波段图像小波系数做压缩编码的效果。同时,与3维SPIHT算法相比较,此算法具有更低的运算复杂度,并具有嵌入式的特性,能够满足不同压缩应用。 1 SPECK编码算法 图像经过小波变换后,低频子带上集中了大部分的重要性小波系数,而各个高频子带上分散着大部分的不重要小波系数。在渐进传输的嵌入式图像压缩系统中,重要性系数要优先进行编码传输,以便解码时首先得到图像的概貌部分,然后对不重要系数进行编码传输,进行而得到图像的细节部分。在EZW和SPIHT算法中,主要利用零树结构来对这些不重要系数进行编码,虽然利用了子带之间不重要系数的相关性,但没有充分利用同一子带中不重要系统的相关性,而SPECK算法将子带中的小波系数组织成矩形的块,对系数块进行分割排序,充分利用了同一子带中系数的相关性。 SPECK算法中,程序处理的基本单元是系数块,块分为两种类型:S类型的块和I类型的块。算法初始时,将图像的所有小波系数,I块包含除去S块中系数以后剩余的系数。定义一个判决块重要与否的符号函数Sn为: 若Sn(S)=1或Sn(I)=1,则认为S块或I块是重要的,并对重要的S块或I块进行分割,分割为更小的子块,S块和I块的分割如图1所示。 算法中,还用到两个存储系数块的列表:LIS和LSP。LIS为不重要集合表,存放 当前阈值下不重要的系数块,以便在下一阈值对这些块进行处理,LIS初始化为初始S块中的系数;LSP是重要系数表,存放重要的且只饱含一个系数的系数块,以便对这些系数做精细量化,LSP初始化为空表。 编码过程中,算法在不同的阈值下对S块和I块分别进行处理,确定重要性小波系数,对重要的小波系数优先进行量化编码。针对S块和I块,算法的处理过程分别为:对S块,如果S块是不重要的,将S块放入LIS中;如果S块是重要的,采用四叉树分割方法,将S块分割为4个大小相等(或近似相等)的子块,对每一子块重复相同的过程,直到找到重要性系数,将重要性系数放入LSP中以待精细量化。对I块,如果I块是不重要的,将I块保留,在下一阈值对I块做重新处理;如果I块是重要的,按照分割策略,将I块分割为3个S块和1个较小的I块,并对分割得到的S块和I块分别做相应的处理。 2 超光谱图像的3维SPECK编码 超光谱图像是利用光谱仪对同一地物目标在多个离散光谱波段上成像的结果,因此在2维空间信息的基础上增加了1维光谱信息,而像素之间的相关性除了同一波段内的空间相关性以外,还增加了不同波段之间的谱间相关性。在对超光谱图像做小波变换时,应在空间维和光谱维分割做小波变换,即采用3维小波变换,同时去除像素数据间的空间相关性和谱间相关性。 为了分析和计算的方便,小波变换通常采用可分离的方式。本文在对超光谱图像做3维小波变换时,采用可分离的金字塔分解方式,在图像的行、列、光谱方向分别做1维小波变换,并且只对低频子带做小波分解,使图像能量集中在最低频子带的小波系数上。在对图像做小波变换时,小波基的选取会对变换后的压缩产生很大的影响。好的小波基能最大限度地去除图像的相关性,同时能较好地保持图像的纹理、避免较大的边界失真,利用图像的编码和重构。文献证明,由B样条小波基构成的9/7双正交小波具有良好的正则性和紧支性,并具有线性相关的特点,滤波器长度适中,变换后对图像的影响不大,最利于压缩应用。因此,本文在对超光谱图像做3维小波变换时,即采用9/7双正交小波滤波器。
超光谱图像经过3维小波变换后,重要性小波系数大部分集中到最低频子带的3维系数块中,而不重要系数分散到各个高频子带的3维系数块中。在用SPECK算法对系数进行编码时,程序处理的系数块将是3维的。相应地,算法也将扩展到3维,构造出一种3维SPECK算法,对这些系数块进行分割排序。在3维SPECK算法中,小波系数用坐标(x,y,z)标识,x表示系数在水平方向的位置,y表示系数在垂直方向的位置,z表示系数在光谱方向的位置,系数的值用C(x,y,z)表示。系数块分类两种类型:S类型和I类型块。初始时,将所有小波系数分割为一个3维的S块和一个3维的I块。S块包含最低频子带的系数,例如经过2级小波分解后对应于LLL2子带中的系数。I块则包含除去S块系数以后剩余的系数,例如经过2级小波分解后对应于HLL2、LHL2、HHL2、LLH2、HLH2、LHH2、HHH2、HLL1、LHL1、HHL1、LLH1、HLH1、LHH1、HHH1子带中的系数。算法对3维S块和3维I块的分割处理如图2所示。 对3维S块的处理过程:对重要的S块,将其分割为8个大小相等(或近似相等)的子块,对每一个子块,测试其重要性,对重要的子块进行再次分割,直至定位到重要性系数,将重要性系数放入LSP中;对不重要的S块,放入LIS中,在下一阈值重新处理。在分割过程中,如果S块的第3维即光谱维的大小为1时,则S块只在空间进行分割,分割为4个大小相等的子块。对3维I块的处理过程:对重要的I块,将其分割为7个S块(如图2示)和一个较小的I块,每个S块包含相应尺度下一个子带的系数,对分割后得到的S块和I块分别做相相的分割处理;对不重要的I块,将其保留,不做分割,在下一阈值重新处理。算法详细描述如下: 第一步:初始化 ·将小波系数分割为S块和I块,S={(x,y,z)|(x,y,z)∈Root},Root为最低频子带系数集合,I块包含除去S块中系数后的剩余系数; ·不重要集合表:LIS={S};重要性系数表:LSP={}; 第二步:分割排序过程 ·按块从小到大的顺序,对每一个S∈LIS,执行processS(S),对S块进行分割; ·执行processI(),对I块进行分割; processS(S) { 输出Sn(S); if Sn(S)=1 ——if S是单个系数,输出S的符号并将S放入LSP中; ——else执行cdeS(S); ——if S∈LIS,将S从LIS中删除; else ——if S∈LIS,将S放入LIS中; } codeS(S) { 将S分割为8个大小相等(或近似相等)的子块O(S),如果S块的第3维即光谱维的大小为1,则S块只在空间维进行分割,分别为4个大小相等的子块; 对每一个子块O(S) ——输出Sn(O(S)); ——if O(S)是单个系数,输出O(S)的符号并将O(S)放入LSP中; ——else执行codeS(O(S)); ——else ——将O(S)放入LIS中; } processI() { 输出Sn(I); if Sn(I)=1 ——执行codeI(); } codeI() { 将I分割为7个S块和1个较小的I块(如图2示); 对每一个S块,执行processS(S); 对I块,执行processI(); } 第三步,精细量化过程 ·对每一个(x,y,z)∈LSP,除了最后一次排序过程放入的系数外,输出|C(x,y,z)|的第n个最重要位; 第四步:阈值更新 ·n=n-1;转移到第二步; 3 仿真实验结果 本文采用224波段AVIRIS超光谱成像仪拍摄的山地图像来验证提出的基于3维SPECK编码的超光谱图像压缩算法。每一波段图像为256×256的灰度图,每个像素数据8bit,选择172~187波段作为验证算法的实验数据。 对此16个波段的图像序列,采用由B样条小波基构成的9/7双正交小波滤波器,做4级3维小波变换,将图像序列分解为29个子带的小波系数。对这些子带的小波系数块,用本文提出的3维SPECK算法进行压缩编码。 为了客观评价图像压缩的质量,本文采用两个失真评价准则:平均均方误差MSE和平均峰值信噪比PSNR,定义为: 式中,f(x,y,z)为原始图像序列的灰度函数,f'(x,y,z)为解码图像的灰度函数。 为了与零树编码方法做压缩性能比较,本文除了采用3维SPECK算法对小波系数编码外,还采用3维SPIHT算法对小波系数做压缩编码。同时,还使用2维SPECK编码算法对每一波段图像的小波系数做压缩编码,与3维SPECK算法的压缩结果做比较。压缩结果如表1所示。
表1 AVIRIS超光谱图像172~187波段压缩结果 编码算法 MSE PSNR(dB) 0.1bpp 0.2bpp 0.5bpp 0.8bpp 1.0bpp 0.1bpp 0.2bpp 0.5bpp 0.8bpp 1.0bpp 3D SPECK 69.04 32.14 14.52 9.89 7.50 29.74 33.06 36.51 38.18 39.38 3D SPIHT 67.93 31.41 14.56 9.60 7.21 29.81 33.16 36.53 38.31 39.56 2D SPECK 734.60 303.45 158.52 102.58 80.18 21.72 23.31 26.13 28.02 29.09 从实验结果可以看出:对整体图像序列采用3维SPECK方法的压缩效果远远优于对每一波段图像采用2维SPECK方法的压缩效果。这主要是因为超光谱图像的空间相关性较差,图像的纹理细节非常丰富,而不同波段图像的纹理和边缘非常近似,图像之间存在纹理结构上的相关性,3维SPECK方法很好地利用了这种结构相关性,因此取得了较2维SPECK方法更好的压缩性能。 另外,为了与基于波波零树的编码方法做性能比较,本文采用了3维SPIHT方法对小波系数进行编码。从实验结果可以看出,在相同码率下,此算法的峰值信噪比较3维SPIHT方法有很微小的降低。然而,SPECK方法处理的是小波系数块,不需要像SPIHT方法那样在整个小波系数域内搜索零树,因此,计算复杂性和资源需求比SPIHT方法低。这一点对卫星遥感平台的应用很重要。 ImgLoad(document.getElementById("BodyLabel"));