基于小波模极大值重建的改进SPIHT图像编码和解码方法技术

技术编号:23215343 阅读:23 留言:0更新日期:2020-01-31 22:48
本发明专利技术公开一种基于小波模极大值重建的改进SPIHT图像编码和解码方法,将小波模极大值重建引入到图像可分级编码中,发现对小波变换后的最高频子带进行模极大值重建能取得较高的重构质量,并利用最高频子带系数的方向梯度模长,选取适合模极大值重建的子带;对需要进行模极大值重建的子带施加二次小波变换,将那些具有幅值相关性的高幅值系数的能量进一步集中到少量系数上,在增加了空间方向树高度的同时,增大了局部模极大值的幅值,有利于改善局部模极大值在中、低码率下的解码精度和交替投影的重建质量;利用父子系数间的幅值衰减规律,对模极大值重建后的小波系数幅值进行约束。

【技术实现步骤摘要】
基于小波模极大值重建的改进SPIHT图像编码和解码方法
本专利技术涉及图像处理领域,尤其是一种边缘解码精度高、主观质量好的基于小波模极大值重建的改进SPIHT图像编码和解码方法。
技术介绍
图像可分级编码方法能够根据空间分辨率、网络带宽或终端计算能力的实际情况对码流的一部分进行解码且解码图像具有较高的重构质量,能够很好地适应网络的异构特性、带宽的动态波动及终端计算能力的多样性,并满足图像的渐进传输、多质量服务以及图像数据库浏览等应用要求。由于其优良的执行效率和压缩比,被广泛应用在高光谱图像压缩、视频压缩、指纹图像压缩、医学图像压缩和图像加密等领域。图像可分级编码由三个阶段组成,即变换、量化扫描和熵编码。其中,量化扫描阶段是可分级编码的核心步骤,决定了其整体编码效率和渐进逼近效率,其目的是在可接受的数据失真范围内,通过减少像素值或变换系数的值域区间,降低待编码图像的信息熵,进而实现图像压缩。国内外的研究人员提出了多种有效的量化扫描方法,如嵌入式零树方法(EmbeddedZerotreeWavelet,EZW)、多级树集合分裂方法(SetPartitioninginHierarchicalTrees,SPIHT)、集合分裂嵌入块方法(SetPartitionedEmbeddedBlock,SPECK)和优化截断的嵌入块方法(EmbeddedBlockCodingwithOptimizedTruncation,EBCOT)等。在面向静态图像的众多可分级编码方法中,SPIHT是应用范围最广泛、受到关注最多、改进最全面的方法之一。目前,关于SPIHT的研究和改进主要集中在以下三个方面。第一,基于变换方式改进的SPIHT算法。研究表明,小波变换并非2D图像的最优稀疏表示工具,高频子带仍然包含大量具有较大幅值的变换系数,无法实现对复杂边缘奇异的最佳逼近和能量集中。于是,有研究人员将脊波、曲波和轮廓波(Contourlet)等新一代多尺度变换引进可分级编码,进而使变换系数具有更好的各向异性、更快的尺度间衰减性、更突出的能量聚集性等特征。刘晓山等人讨论了脊波变换系数之间的相关性,并结合SPIHT编码算法设计出一种基于脊波变换的图像可分级编码算法;Mansoor等人提出对曲波变换系数进行阈值化处理,将其前p%个幅值最小的系数清零,再选择不同的量化曲线对剩余系数进行有损压缩和熵编码,其重构质量在低码率下优于基于小波变换的编码算法;Lqbal等人将曲波变换与SPIHT相结合,采用一种基于阈值选择的处理方式对不同尺度的重要系数分别进行量化,再利用多级树集合分裂的方式对量化后的系数完成扫描和编码。与之类似,Manikandan等人则对量化后的系数进行零树扫描编码。实验结果表明,基于曲波变换的可分级编码可以获得与小波变换相当的PSNR值,尤其对图像边缘系数的还原更加准确。肖羽等人提出了一种基于轮廓波变换的空间方向树结构,并据此实现了一种基于轮廓波变换的可分级编码算法CSPIHT,它在低码率下的重构PSNR要高于传统的SPIHT算法;而在中等码率下,尽管它的PSNR略低于SPIHT,可是重构图像在纹理和边缘区域的视觉效果要优于SPIHT,具有更优秀的方向性和各向异性,对边缘信息和纹理信息的非线性逼近效率更高。进一步地,肖羽等人提出一种多尺度量化方案,采取不同的阈值分别对各个子带进行量化,提高了CSPIHT算法的编码效率;Inouri等人通过分析和比较轮廓波和小波的系数分布来寻找重要子带,再根据子带的重要性级别重新排列这些子带的顺序,用更多的二进制位来编码重要子带以减少编码失真,从而提出了一种轮廓波域的多级树集合分裂编码方法;Eslami等人则联合小波变换和曲波变换,对经哈尔小波变换得到的低频子带进行SPIHT编码,而采用曲波变换处理剩余的高频子带,并且仅对中、低频的曲波系数分别进行差分脉冲编码调制(DPCM)和SPIHT编码,取得了不错的效果。总体地讲,由于脊波、轮廓波等多尺度几何变换对边缘和纹理细节的非线性逼近效率高于小波变换,该类编码方法在低码率下的主观解码质量往往优于传统的SPIHT算法。不过,脊波、曲波和轮廓波均为冗余变换,导致高码率下的客观解码质量甚至低于SPIHT。而且,这些多尺度变换的计算复杂度亦明显高于小波变换。为此,Zhang等人提出了一种二维自适应提升小波变换,能有效利用图像的方向特征,进一步降低高频能量以提高压缩效率。第二,基于量化方式改进的SPIHT算法。传统的SPIHT算法针对所有系数均采用统一的量化。虽然这种处理方式较为简捷,计算复杂度也较低,但是由于各个尺度下的小波变换子带呈现不同的分布特性,均匀量化无法很好地适应这种规律。在这种情况下,Wang等人采用多标量量化方法处理最低频系数,而使用均匀标量量化来编码其它子带,进而提出一种复合量化方案的SPIHT图像可分级编码算法;针对提升方案的整数小波变换具有较小系数分布范围的特点,宋传鸣等人将奇数的平方作为量化阈值,并提出了一种基于二分法的量化逼近方案。与传统基于位平面的量化方法相比,该量化方案能用更少的比特来完全重构各个变换系数;而刘伟等人则从小波系数的分布特点出发,在零树结构与人眼视觉系统特性的基础上,引进了新的系数扫描顺序,有助于改善图像重构的主观质量;Vargic等人通过连续显著性映射对图像的感兴趣区域进行独立量化编码,并嵌入到原始码流中,提高了图像的主观质量;Agarwal等人则研究了通过一维、二维和三维数据的不同数据组合来改善图像可分级编码效率的策略。从专利技术人所掌握的文献来看,尚鲜见对变换系数的逐次逼近量化策略的相关研究。第三,基于系数扫描组织方式改进的SPIHT算法。传统SPIHT的分级扫描方式是在EZW的零树基础上演变而来的,其目的是克服EZW算法产生大量孤立零而浪费编码码流的不足。然而,SPIHT的扫描编码方式亦存在着冗余输出和重复扫描等问题。故此,有部分研究人员专门对SPIHT的扫描方式进行改进,进而提高SPIHT的编解码效率。Huang等人认为在一个重要系数的周围存在其它重要系数的概率较大,于是按照周围重要系数的个数对每个待编码的系数或系数集合进行统计排序,一旦发现含有重要周围系数的集合,就开始对重要系数进行细化扫描,提出了一种改进的SPIHT算法ASPIHT,有助于实现图像边缘系数的高效率重构;Rema等人发现,SPIHT经过多级树集合分裂后得到的直接系数中,重要系数的概率并不高,若用4个二进制位依次判断每个直接子系数的重要性,则会浪费宝贵的码流带宽。针对这一现象,出现了三项改进工作。其中,Rema等人先判断L型集合的重要性,进而利用尺度间系数的衰减性来确定其父系数的重要性,提出一种基于二叉树结构的TSPIHT算法,减少了系数重要性扫描过程所需的同步信息量;类似地,Huang等人也提出了一种具有自适应扫描顺序的二叉树编码,若该方法发现某个系数块是重要的,则将其分裂为2个子块而不是4个,并预先扫描重要系数的邻居系数,从而有利于发掘重要系数的聚集性来提高同步信息的表示效率;而Wang等人则在集合分裂过程中增加了一个结构类型,本文档来自技高网...

【技术保护点】
1.一种基于小波模极大值重建的改进SPIHT图像编码方法,其特征在于按照如下步骤进行:/n步骤1.输入待编码图像I和目标码率R,设待编码图像I大小为H×W像素,根据目标码率R计算编码图像I所需的比特数Bit_Budget=H×W×R,并将H和W各用1个字节传输至解码端;/n步骤2.对待编码图像I进行log

【技术特征摘要】
20190801 CN 20191070718141.一种基于小波模极大值重建的改进SPIHT图像编码方法,其特征在于按照如下步骤进行:
步骤1.输入待编码图像I和目标码率R,设待编码图像I大小为H×W像素,根据目标码率R计算编码图像I所需的比特数Bit_Budget=H×W×R,并将H和W各用1个字节传输至解码端;
步骤2.对待编码图像I进行log2min{H,W}-3级Daubechies双正交9/7小波变换;
步骤3.判断最低频子带是否存在负系数,若包含负系数,则令标志变量HavingNegative=1,否则令HavingNegative=0,然后将HavingNegative的值用1bit传输至解码端;
步骤4.计算最低频子带系数的绝对值最大的幅值Max,进而得出最大位平面数并将n的值用4bit传输至解码端;
步骤5.采用前向差分算子,计算最高频的LH、HL和HH子带在每个系数处的梯度,然后分别统计这三个子带的平均梯度模长,令其分别为ΘLH、ΘHL和ΘHH,并将其各用8bit传输至解码端;
步骤6.选取ΘLH、ΘHL和ΘHH中的最大者所对应的子带B,并提取子带B的模极大值序列:
步骤6.1按照光栅扫描顺序,将子带B的二维小波系数重新组织成一个长度为l的一维系数序列S,且l=H×W/4;
步骤6.2对一维系数序列S进行1阶一维小波变换,从而将系数能量进一步集中;
步骤6.3令SMax表示小波系数的模极大值序列,并将SMax初始化为空集;
步骤6.4将一维系数序列S的第1个系数加入到SMax中,向解码端传输一个比特“1”,并令index←2;
步骤6.5令S(index)、S(index-1)和S(index+1)分别表示一维系数序列S的第index个系数、第(index-1)个系数和第(index+1)个系数,若|S(index)|>|S(index-1)|且|S(index)|>|S(index+1)|,则S(index)为一个局部模极大值,将其加入到SMax中,并向解码端传输一个比特“1”,否则将“0”加入到SMax中,向解码端传输一个比特“0”;
步骤6.6令index←index+1,若index=l,则转入步骤6.7,否则转入步骤6.5;
步骤6.7将一维系数序列S的第l个系数加入到SMax中,并向解码端传输一个比特“1”;
步骤6.8舍弃子带B的全部原始小波系数,并用模极大值序列SMax中的系数代替子带B的小波系数,转入步骤7;
步骤7.初始化非重要系数表重要系数表非重要子集表和比特位流表
步骤8.采用类似SPIHT的扫描方式编码所有小波变换系数:
步骤8.1初始化扫描阈值T=2n,将最低频子带的所有系数放入LIP表,将存在孩子系数的最低频系数加入LIS表,并将其扫描类型设置为D型;
步骤8.2若T<1或比特位流表中的待输出比特数大于Bit_Budget,则转入步骤9;否则,转入步骤8.3;
步骤8.3扫描LIP表:顺序取出LIP表中的每个待处理系数c,执行步骤8.3.1~步骤8.3.5;若LIP表中的所有系数均已处理完毕,则转入步骤8.4;
步骤8.3.1若|c|<T,则在位流表E的末尾添加比特“0”,返回步骤8.3;
步骤8.3.2若|c|≥T,则在位流表E的末尾添加比特“1”,把该系数c从LIP表中删除并添加到LSP表末尾;
步骤8.3.4若c是最低频系数且HavingNegative=0,则返回步骤8.3;否则,转入步骤8.3.5;
步骤8.3.5如果系数c是正数,则在位流表E的末尾添加比特“1”,否则,在位流表E的末尾添加比特“0”,返回步骤8.3;
步骤8.4扫描LIS表:顺序取出LIS表中的每个待处理元素e,执行步骤8.4.1~步骤8.4.3;若LIS表中的所有元素均已处理完毕,则转入步骤8.5;
步骤8.4.1若其扫描类型为D型,则转入步骤8.4.2,否则转入步骤8.4.3;
步骤8.4.2判断e的D型子集是否为重要集合:
a若e的D型子集是重要集合,则在比特位流表E的末尾添加比特“1”,再执行4次步骤a.1~步骤a.3来依次判断e的4个D型孩子系数的重要性;
a.1若某个孩子系数是重要的,则在比特位流表E的末尾添加比特“1”,并且把该孩子系数加到LSP表末尾,进一步,若该孩子系数是正数,则在比特位流表E的末尾添加比特“1”,否则在比特位流表E的末尾添加比特“0”;
a.2判断e的L型子集是否为空集,如果不为空集,则把e的扫描类型由D型转换成L型后添加到LIS表尾部,如果e的L型子集为空集,则从LIS表中删除元素e;
a.3如果某个孩子系数不是重要系数,则把该孩子系数添加到LIP表末尾,并且在比特位流表末尾添加比特“0”;
b如果e的D型子集是不重要集合,则在位流表末尾添加字符“0”;
步骤8.4.2判断e的L型子集是否为重要集合:
a如果e的L型子集是重要集合,则在比特位流表末尾添加比特“1”,并且把e的4个直接孩子系数添加到LIS表尾部,将其扫描类型设置为D型;返回步骤8.4;
b如果e的L型子集不是重要集合,则在比特位流表末尾添加比特“0”;返回步骤8.4;
步骤8.5精细扫描:顺序扫描LSP表,除了本轮扫描增加的那些系数以外,将表中其余系数的第n个位平面输出到比特位流表E中;
步骤8.6令T←T/2,n←n-1,转入步骤8.2。
步骤9.将比特位流表E传输至解码端,编码过程结束。
<...

【专利技术属性】
技术研发人员:宋传鸣谢维冬张晋豪王相海
申请(专利权)人:辽宁师范大学
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1