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

文档序号:19814859发布日期:2020-01-31 18:57阅读:168来源:国知局
基于小波模极大值重建的改进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等人则在集合分裂过程中增加了一个结构类型,将4个直接子系数作为一个集合来判断,若4个直接子系数均为不重要系数,则用1位比特“0”来表示,从而提出了一种mspiht-ica算法,可为每个d型集合节省3位同步比特,有效地优化了输出比特流的编码效率;liu等人也采用类似的原理实现了一种改进的spiht编码算法mspiht。与上述工作的角度不同,rema对传统spiht的空间方向树进行了重新排序,将最低频子带中的那些没有子结点的低频系数作为3个相邻系数的父结点,其目的是通过增加零树的高度来增加系数链表中的重要系数比例,减少低频系数的同步比特数量,改善低码率下的编码性能;brahimi等人提出了一种基于小波系数分解特性的多模压缩方法,将小波低频系数嵌入到高频系数中,从而提高编码码流的利用率,并成功将该方法应用于三种成熟的多模压缩系统中;ma等人提出了一种包含静态码的四叉树搜索模型,利用系数的显著性来区分重要系数,并利用常量代码替代了传统spiht中的等概率假设代码,在提高解码质量的同时,可有效提高解码效率;在四叉树模型的基础上,song等人将spiht算法推广到三维空间,提出了一种基于八叉树的数据结构,并利用二进制编码来处理小波系数的小数部分,提高了解码效率和重建精度;zaineldin等人提出了一种无链表零树结构,使用提升小波变换代替卷积小波变换,并引进了基于条带的编码策略,无需等待整体图像的小波变换就可以进行系数的编解码;li等人则采用“广义树”结构来定位大幅值系数,树中的每个节点都是一个系数块,很好地兼顾了传统零树和零块结构的特点。

基于量化方式的改进spiht算法和基于系数扫描组织方式的改进spiht算法均是从信号保真和能量保持的角度,以提高解码图像的峰值信噪比为根本出发点,却忽略了重构图像在低码率下所存在的边缘模糊不清、振铃效应明显等问题。而结构相似度ssim指标的相关研究表明,人眼视觉系统对于图像中的结构差异较之亮度差异敏感得多,这显然不利于保证解码图像的视觉质量。若能充分利用人眼视觉系统的这一特性,在保持现有方法的客观解码质量的前提下,进一步发掘小波变换的奇异点和非奇异点的能量关系,有效增强边缘和纹理等细节结构特征,则有助于提高图像可分级编码的效率。尽管基于变换方式的改进spiht算法已关注了边缘解码质量,可是此类算法依旧囿于其基函数的非线性逼近效率的限制,基函数对直线、曲线奇异的稀疏表示效率决定了该类算法编码性能的上界,却没能发掘多尺度变换系数的奇异点之间、奇异点与非奇异点之间的相关关系。因此未充分利用这种相关关系来修复细尺度下那些没有得到充分解码或者完全没有被解码的奇异系数和非奇异系数,边缘、轮廓、纹理区域的主观解码质量以及平滑区域的客观解码精度有待提高。



技术实现要素:

本发明是为了解决现有技术所存在的上述技术问题,提供一种边缘解码精度高、主观质量好的基于小波模极大值重建的改进spiht图像编码和解码方法。

本发明的技术解决方案是:一种基于小波模极大值重建的改进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=[log2max],并将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传输至解码端,编码过程结束。

一种与上述基于小波模极大值重建的改进spiht图像编码方法对应的解码方法,按照如下步骤进行:

步骤1.初始化待解码图像i的基本信息;

步骤1.1输入待解码比特流和目标码率r,从比特位流的前2个字节中解码出图像的高度h和宽度w,进而确定解码图像i所需的比特数bit_budget=h×w×r;

步骤1.2从比特位流中读取1bit,解码出havingnegative;

步骤1.3从比特位流中读取4bit,解码出最大位平面数n,并令nmax←n;

步骤1.4从比特位流中读取24bit,按照lh、hl和hh的顺序,解码出3个最高频子带的平均梯度模长θlh、θhl、θhh;

步骤1.5选取θlh、θhl和θhh中的最大者所对应的子带,作为需用小波模极大值重构的子带b;

步骤1.6令l←h×w/4,并从比特位流中读取l个bit,暂存到一个缓冲区m中;

步骤2.初始化非重要系数表重要系数表非重要子集表将待解码图像的log2min{h,w}-3级小波变换系数全部初始化为0,令扫描阈值t=2n

步骤3.将最低频子带的所有系数坐标放入lip表,将存在孩子系数的最低频系数的坐标添加到lis表中,并将其扫描类型设置为d型;

步骤4.采用类似spiht的扫描方式处理lip表、lis表和lsp表:

步骤4.1扫描lip表:对于lip表中的每个待处理元素,执行步骤4.1.1~步骤4.1.5;若lip表中的所有元素均已处理完毕,则转入步骤4.2;

步骤4.1.1从比特位流中读取1bitc;

步骤4.1.2若c=0,则表明lip表中当前坐标(i,j)所对应的系数为不重要系数,返回步骤4.1;

步骤4.1.3若c=1,表明lip表中当前坐标(i,j)所对应的系数为重要系数,则将该重要系数的值更新为1.5×t,然后把坐标(i,j)从lip表中删除并添加到lsp表末尾;

步骤4.1.4若当前坐标(i,j)处于最低频子带且havingnegative=0,则返回步骤4.1;否则,转入步骤4.1.5;

步骤4.1.5从比特位流中读取1bit,如果该比特为“0”,则将当前坐标(i,j)所对应的系数值取相反数;否则,保持其系数值不变;

步骤4.2扫描lis表:对于lis表中的每个待处理元素p,执行步骤4.2.1~步骤4.2.3;若lis表中的所有元素均已处理完毕,则转入步骤4.3;

步骤4.2.1如果当前待处理元素p的扫描类型为d型,则转入步骤4.2.2,否则转入步骤4.2.3;

步骤4.2.2从比特位流中读取1bite;

a如果e=1,表明p对应的d型子集是重要集合,执行4次步骤a.1~a.4依次判断其4个d型孩子系数的重要性;

a.1从比特位流中读取1bit,如果该比特为“1”,则转入a.2,否则转入a.4;

a.2把p的直接孩子系数的坐标加到lsp表末尾,并进一步从比特流中读取1bit,若该比特为“1”,则将相应孩子系数的值更新为1.5×t,否则将相应孩子系数的值更新为-1.5×t;

a.3判断p的l型子集是否为空集,若不为空集,则把p的扫描类型由d型转换成l型后添加到lis表尾部;若p的l型子集为空集,则将元素p从lis表中删除;转入步骤4.2.2;

a.4把孩子系数的坐标添加到lip表末尾;

b如果e=0,表明p对应的是不重要集合,返回步骤4.2;

步骤4.2.3从比特位流中读取1bitf,判断p的l型子集是否为重要集合;

a如果f=1,表明p的l型子集是重要集合,则把p的4个直接孩子系数的坐标添加到lis表尾部,将其扫描类型设置为d型;返回步骤4.2;

b如果f=0,表明p的l型子集不是重要集合;返回步骤4.2;

步骤4.3精细扫描:顺序扫描lsp表,对于除本轮扫描增加的那些元素以外的每个元素,从比特位流中读取1bit,若该比特为“1”,则将该元素所对应的小波系数绝对值增加t/2,否则将该元素所对应的小波系数绝对值减小t/2;

步骤4.4令t←t/2,n←n-1,若目前从比特位流中读取的比特位数量已达到bit_budget或t<1,则转入步骤5,否则转入步骤4.1;

步骤5.对子带b进行小波模极大值重建;

步骤5.1按照光栅扫描顺序,将子带b的已解码系数重新组织成一个长度为l的一维系数序列s,并令index←1,num←1,并建立一个长度为l的一维数组loca,将其初始化为零数组,用于保存局部模极大值的位置;

步骤5.2从缓冲区m中读取1bitf,若f=1,则令一维数组loca的第num个元素等于index,即loca(num)←index,并令index←index+1,num←num+1;

步骤5.3若index>l,则转入步骤5.4,否则转入步骤5.2;

步骤5.4根据一维系数序列s和局部模极大值的位置数组loca,利用包含iter次迭代的交替投影法进行小波模极大值重建,得到重建后的一维系数序列;

步骤5.5对重建后的一维系数序列进行1阶一维小波逆变换,得到s′;

步骤5.6按照光栅扫描顺序,将s′的系数重新组织成大小为(h/2)×(w/2)的二维矩阵b′,并用b′的各个系数替代子带b中处于相同空间位置的已解码系数,得到小波模极大值重建后的子带b;

步骤5.7对于子带b中的每个系数,若其幅值大于则将该系数的幅值设置为其父亲系数幅值的1/2;

步骤6.对所有子带的已解码系数进行log2min{h,w}-3级daubechies双正交9/7小波逆变换,得到解码图像i′,输出i′。

本发明与现有技术相比具有以下优点:第一,将小波模极大值重建引进图像可分级编码中,通过发掘小波变换系数的奇异点之间、奇异点与非奇异点之间的相关性,增强了图像的主要边缘和轮廓在中、低码率下的解码效果;第二,利用最高频子带系数的平均方向梯度的模长,自适应地确定适合模极大值重建的子带,从而实现对纹理较为复杂、局部极值点较多的子带进行模极大值重建,有利于更加有效地解码出丰富的边缘和纹理细节区域;第三,利用父子系数间的幅值衰减规律,对模极大值重建后的小波系数幅值进行约束,可缓解在中、低码率下,由于局部模极大值的解码精度不足所导致的“伪边缘”现象。因此,本发明具有边缘解码精度高、主观质量好的特点。

附图说明

图1是本发明实施例与传统spiht方法在不同码率下解码lena图像的效果对比图。

图2是本发明实施例与传统spiht方法在不同码率下解码barbara图像的效果对比图。

表1是本发明与现有技术在不同码率下lena图像(512×512像素)的解码峰值信噪比比较。

表2是本发明与现有技术在不同码率下barbara图像(512×512像素)的解码峰值信噪比比较。

具体实施方式

本发明的一种基于小波模极大值重建的改进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传输至解码端,编码过程结束。

与上述基于小波模极大值重建的改进spiht图像编码方法对应的解码方法,按照如下步骤进行:

步骤1.初始化待解码图像i的基本信息;

步骤1.1输入待解码比特流和目标码率r,从比特位流的前2个字节中解码出图像的高度h和宽度w,进而确定解码图像i所需的比特数bit_budget=h×w×r;

步骤1.2从比特位流中读取1bit,解码出havingnegative;

步骤1.3从比特位流中读取4bit,解码出最大位平面数n,并令nmax←n;

步骤1.4从比特位流中读取24bit,按照lh、hl和hh的顺序,解码出3个最高频子带的平均梯度模长θlh、θhl、θhh;

步骤1.5选取θlh、θhl和θhh中的最大者所对应的子带,作为需用小波模极大值重构的子带b;

步骤1.6令l←h×w/4,并从比特位流中读取l个bit,暂存到一个缓冲区m中;

步骤2.初始化非重要系数表重要系数表非重要子集表将待解码图像的log2min{h,w}-3级小波变换系数全部初始化为0,令扫描阈值t=2n

步骤3.将最低频子带的所有系数坐标放入lip表,将存在孩子系数的最低频系数的坐标添加到lis表中,并将其扫描类型设置为d型;

步骤4.采用类似spiht的扫描方式处理lip表、lis表和lsp表:

步骤4.1扫描lip表:对于lip表中的每个待处理元素,执行步骤4.1.1~步骤4.1.5;若lip表中的所有元素均已处理完毕,则转入步骤4.2;

步骤4.1.1从比特位流中读取1bitc;

步骤4.1.2若c=0,则表明lip表中当前坐标(i,j)所对应的系数为不重要系数,返回步骤4.1;

步骤4.1.3若c=1,表明lip表中当前坐标(i,j)所对应的系数为重要系数,则将该重要系数的值更新为1.5×t,然后把坐标(i,j)从lip表中删除并添加到lsp表末尾;

步骤4.1.4若当前坐标(i,j)处于最低频子带且havingnegative=0,则返回步骤4.1;否则,转入步骤4.1.5;

步骤4.1.5从比特位流中读取1bit,如果该比特为“0”,则将当前坐标(i,j)所对应的系数值取相反数;否则,保持其系数值不变;

步骤4.2扫描lis表:对于lis表中的每个待处理元素p,执行步骤4.2.1~步骤4.2.3;若lis表中的所有元素均已处理完毕,则转入步骤4.3;

步骤4.2.1如果当前待处理元素p的扫描类型为d型,则转入步骤4.2.2,否则转入步骤4.2.3;

步骤4.2.2从比特位流中读取1bite;

a如果e=1,表明p对应的d型子集是重要集合,执行4次步骤a.1~a.4依次判断其4个d型孩子系数的重要性;

a.1从比特位流中读取1bit,如果该比特为“1”,则转入a.2,否则转入a.4;

a.2把p的直接孩子系数的坐标加到lsp表末尾,并进一步从比特流中读取1bit,若该比特为“1”,则将相应孩子系数的值更新为1.5×t,否则将相应孩子系数的值更新为-1.5×t;

a.3判断p的l型子集是否为空集,若不为空集,则把p的扫描类型由d型转换成l型后添加到lis表尾部;若p的l型子集为空集,则将元素p从lis表中删除;转入步骤4.2.2;

a.4把孩子系数的坐标添加到lip表末尾;

b如果e=0,表明p对应的是不重要集合,返回步骤4.2;

步骤4.2.3从比特位流中读取1bitf,判断p的l型子集是否为重要集合;

a如果f=1,表明p的l型子集是重要集合,则把p的4个直接孩子系数的坐标添加到lis表尾部,将其扫描类型设置为d型;返回步骤4.2;

b如果f=0,表明p的l型子集不是重要集合;返回步骤4.2;

步骤4.3精细扫描:顺序扫描lsp表,对于除本轮扫描增加的那些元素以外的每个元素,从比特位流中读取1bit,若该比特为“1”,则将该元素所对应的小波系数绝对值增加t/2,否则将该元素所对应的小波系数绝对值减小t/2;

步骤4.4令t←t/2,n←n-1,若目前从比特位流中读取的比特位数量已达到bit_budget或t<1,则转入步骤5,否则转入步骤4.1;

步骤5.对子带b进行小波模极大值重建;

步骤5.1按照光栅扫描顺序,将子带b的已解码系数重新组织成一个长度为l的一维系数序列s,并令index←1,num←1,并建立一个长度为l的一维数组loca,将其初始化为零数组,用于保存局部模极大值的位置;

步骤5.2从缓冲区m中读取1bitf,若f=1,则令一维数组loca的第num个元素等于index,即loca(num)←index,并令index←index+1,num←num+1;

步骤5.3若index>l,则转入步骤5.4,否则转入步骤5.2;

步骤5.4根据一维系数序列s和局部模极大值的位置数组loca,利用包含iter次迭代的交替投影法进行小波模极大值重建,得到重建后的一维系数序列;

步骤5.5对重建后的一维系数序列进行1阶一维小波逆变换,得到s′;

步骤5.6按照光栅扫描顺序,将s′的系数重新组织成大小为(h/2)×(w/2)的二维矩阵b′,并用b′的各个系数替代子带b中处于相同空间位置的已解码系数,得到小波模极大值重建后的子带b;

步骤5.7对于子带b中的每个系数,若其幅值大于则将该系数的幅值设置为其父亲系数幅值的1/2;

步骤6.对所有子带的已解码系数进行log2min{h,w}-3级daubechies双正交9/7小波逆变换,得到解码图像i′,输出i′。

本发明实施例与传统spiht方法、基于改进空间方向树的spiht编码方法(2015)和spacs算法(2016)在不同码率下的解码峰值信噪比如表1~表2所示。

本发明实施例与传统spiht方法在不同码率下解码lena图像的对比结果如图1所示。其中(a)~(c)为传统spiht方法的解码图像;(d)~(f)为本发明的解码图像。

本发明实施例与传统spiht方法在不同码率下解码barbara图像的对比结果如图2所示。其中(a)~(c)为传统spiht方法的解码图像;(d)~(f)为本发明的解码图像。

表1在不同码率下lena图像(512×512像素)的解码峰值信噪比比较(单位:db)

表2在不同码率下barbara图像(512×512像素)的解码峰值信噪比比较(单位:db)

从表1~表2、图1~图2可见,本发明解码图像的峰值信噪比较之传统spiht算法平均要高出2.25db,在中低码率下比基于空间方向空间树的改进spiht算法平均提高2.40db,在中高码率下则比spacs算法平均提高0.48db。特别地,本发明在码率高于0.2bpp时,能够取得明显高于现有技术的主观解码质量。本发明不仅明显提高了解码图像的峰值信噪比,而且能够在中、低码率下更加准确地重建原始图像中的边缘和纹理信息,保证了解码图像的主客观质量。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1