基于能量泄露和放大的改进SPIHT图像编码和解码方法与流程

文档序号:16323327发布日期:2018-12-19 05:47阅读:207来源:国知局
基于能量泄露和放大的改进SPIHT图像编码和解码方法与流程

本发明涉及图像处理领域,尤其是一种基于能量泄露和放大的改进spiht图像编码和解码方法。

背景技术

随着网络多媒体技术及其应用的不断发展,人们对图像编码的要求不断提高,不仅要求解码图像具有较高的重构质量,同时要求其能够适应网络异构特性及终端计算能力不同等应用需求。这就需要一种好的解决方法来实现在保证图像质量的前提下去除各种冗余,用尽量少的比特数来表征图像信息,同时使图像编码码流能很好的适应网络带宽的波动及不同计算能力终端的解码需求。一个图像的编码码流具有可分级性是指利用该码流的一部分(或子集)可以产生对该图像一个有用表示的能力,即解码器能够根据分辨率的实际情况对码流的一部分进行解码。图像编码码流的这种可分级特性可以满足图像的渐进传输、多质量服务以及图像数据库浏览等应用要求。

关于静态图像的编码主要需要考虑两个问题:一是如何能有效地表示重要系数的位置信息,同时尽量占用少的比特来编码同步信息;二是如何能有效地编码重要系数的幅值。近年来,基于小波变换的图像可分级编码方法出现了一些经典的算法,如ezw、spiht、k-阶零树、mrwd、ebcot、speck和spacs等,获得了较好的主观质量效果。

对于第一个问题,利用系数分布相似特性,ezw提出采用“零树”结构来定位重要系数;spiht利用“空间方向树”来定位重要系数;k-阶零树算法则在零树和空间方向树的基础上,抽象出了k-阶零树结构;而利用系数的聚集特性,speck采用分裂块结构定位重要系数;spacs则综合考虑小波变换系数的尺度间传递性和尺度内聚集性,将空间方向树和分裂块相结合,进一步提出基于集合分裂编码系统;mrwd利用数学形态学的膨胀操作,对重要系数的聚簇进行提取和编码;而bsp树(binaryspacepartitiontree)和gw(geometricwavelets)方法则通过二值空间分割树确定图像中具有相同系数特性的一致性区域进行编码。

对于第二个问题,ebcot利用分数位平面编码重要系数,而其他方法大都采用基于位平面的逐次逼近量化saq(successiveapproximationquantization)来编码重要系数。宋传鸣等人则设计了一种基于二分查找思路的系数逼近策略,适用于阈值不等于2的整数幂时的逐次逼近量化。

然而,现有方法大多忽视了小波变换并非2d图像的最优稀疏表示工具这一不足,图像经过小波变换后,高频子带仍然包含大量具有较大幅值的小波系数,无法实现对复杂边缘奇异的最佳逼近和能量集中。在这种情况下,就不可避免地出现了两方面问题:一方面,ezw、spiht、k-阶零树、mrwd、speck和spacs等算法所采用的从低频到高频逐层处理的机制,使得低码率下高频系数无法获得有效解码,信息损失严重,重构图像在边缘轮廓处产生明显的“振铃”效应。而关于结构相似度ssim(structuralsimilarity)指标的研究表明,人眼视觉系统对于边缘、轮廓区域的像素值比对平坦区域的像素值更为敏感,这样不利于保证解码图像的主观质量。另一方面,小波变换在滤波过程中,所采用的低通滤波器和高通滤波器均不是理想的滤波器,低于截止频率的高频能量会向低频子带泄露,高于截止频率的低频能量同样也会向高频子带泄露。若能合理地发掘这部分泄露的能量,则能借助解码出的低频系数重构那些丢失的高频系数,实现高频信息的修复和增强,进而改善低码率下解码图像的主观质量。



技术实现要素:

本发明是为了解决现有技术所存在的上述技术问题,提供一种基于能量泄露和放大的、边缘质量高的改进spiht图像编码和解码方法。

本发明的技术解决方案是:一种基于能量泄露和放大的改进spiht图像编码方法,其特征在于按照如下步骤进行:

步骤1.输入待编码图像和目标码率,设图像大小为像素,根据码率计算编码所需的比特数bit_budget=,并将hw各用1个字节传输至解码端;

步骤2.对图像进行级daubechies双正交9/7小波变换;

步骤3.判断最低频子带是否存在负系数,若包含负系数,则令标志变量havingnegative=1,否则令havingnegative=0,然后将havingnegative的值用1bit传输至解码端;

步骤4.计算最低频子带系数的绝对值最大的幅值,进而得出最大位平面数,并将的值用4bit传输至解码端;

步骤5.采用前向差分算子计算最高频子带在每个系数处的梯度,然后分别统计3个最高频子带的梯度方向直方图,进而为每个最高频子带选取一个主要梯度方向,并按照lh、hl和hh的顺序,将3个最高频子带的主要梯度方向各用8bit传输至解码端;

步骤6.对3个最高频子带分别沿着其主要梯度方向进行级一维5/3提升小波变换;

步骤7.初始化非重要系数表、重要系数表、非重要子集表和比特位流表

步骤8.采用类似spiht的扫描方式编码所有小波变换系数;

所述类似spiht的扫描方式包括如下步骤:

步骤8.1初始化扫描阈值t=2n,将最低频子带的所有系数放入lip表,将存在孩子系数的最低频系数加入lis表,并将其扫描类型设置为d型;

步骤8.2若或比特位流表中的待输出比特数大于bit_budget,则转入步骤9;否则,转入步骤8.3;

步骤8.3扫描lip表:顺序取出lip表中的每个待处理系数,执行步骤8.3.1~步骤8.3.5;若lip表中的所有系数均已处理完毕,则转入步骤8.4;

步骤8.3.1若,则在比特位流表e的末尾添加比特“0”,则返回步骤8.3;

步骤8.3.2若,则在比特位流表e的末尾添加比特“1”,把该系数lip表中删除并添加到lsp表末尾;

步骤8.3.4若是最低频系数且havingnegative=0,则返回步骤8.3;否则,转入步骤8.3.5;

步骤8.3.5如果系数是正数,则在比特位流表e的末尾添加比特“1”,否则,在比特位流表e的末尾添加比特“0”,返回步骤8.3;

步骤8.4扫描lis表:顺序取出lis表中的每个待处理元素,执行步骤8.4.1~步骤8.4.3;若lis表中的所有元素均已处理完毕,则转入步骤8.5;

步骤8.4.1若其扫描类型为d型,则转入步骤8.4.2,否则转入步骤8.4.3;

步骤8.4.2判断的d型子集是否为重要集合:

a.若的d型子集是重要集合,则在比特位流表e的末尾添加比特“1”,再执行4次步骤a.1~步骤a.3来依次判断的4个d型孩子系数的重要性;

a.1若某个孩子系数是重要的,则在比特位流表e的末尾添加比特“1”,并且把该孩子系数加到lsp表末尾,进一步,若该孩子系数是正数,则在比特位流表e的末尾添加比特“1”,否则在比特位流表e的末尾添加比特“0”;

a.2判断的l型子集是否为空集,如果不为空集,则把的扫描类型由d型转换成l型后添加到lis表尾部,如果的l型子集为空集,则从lis表中删除元素

a.3如果某个孩子系数不是重要系数,则把该孩子系数添加到lip表末尾,并且在比特位流表末尾添加比特“0”;

b.如果的d型子集是不重要集合,则在比特位流表末尾添加字符“0”;

步骤8.4.2判断的l型子集是否为重要集合:

a.如果的l型子集是重要集合,则在比特位流表末尾添加比特“1”,并且把的4个直接孩子系数添加到lis表尾部,将其扫描类型设置为d型;返回步骤8.4;

b.如果的l型子集不是重要集合,则在比特位流表末尾添加比特“0”;返回步骤8.4;

步骤8.5精细扫描:顺序扫描lsp表,除了本轮扫描增加的那些系数以外,将表中其余系数的第个位平面输出到比特位流表e中;

步骤8.6令,转入步骤8.2;

步骤9.将比特位流表e传输至解码端,编码过程结束。

一种与上述基于能量泄露和放大的改进spiht图像编码方法对应的解码方法,其特征在于按照如下步骤进行:

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

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

步骤1.2从比特位流中读取5bit,解码出havingnegative和最大位平面数

步骤1.3从比特位流中读取24bit,按照lh、hl和hh的顺序,解码出3个最高频子带的主要梯度方向

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

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

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

所述类似spiht的扫描方式包括如下步骤:

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

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

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

步骤4.1.3若,表明lip表中当前坐标(i,j)所对应的系数为重要系数,则将该重要系数的值更新为,然后把坐标(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从比特位流中读取1bit

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

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

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

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

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

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

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

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

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

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

步骤4.4令,若目前从比特位流中读取的比特位数量已达到bit_budget,则转入步骤5,否则转入步骤4.1;

步骤5.对3个最高频子带lh、hl和hh,分别沿着其主要梯度方向进行级一维5/3提升小波逆变换,得到小波系数矩阵t1,并将t1复制到矩阵t2;

步骤6.将t1进行级daubechies双正交9/7小波逆变换,得到解码出的图像

步骤7.利用canny算子对进行边缘检测,得到边缘像素的二值掩码矩阵e:若图像的像素x位于边缘上,则令e(x)←1,否则令e(x)←0;

步骤8.将t2的最低频子带系数全部置为0,但保留高频子带系数不变;

步骤9.对低频置0后的t2进行级daubechies双正交9/7小波逆变换,得到图像

步骤10.对进行迭代式高频能量增强,令i←1;

步骤10.1将r进行高通滤波,得到高通系数矩阵c;

步骤10.2对于r中的每个像素x,利用高通系数矩阵c和二值掩码矩阵e,根据公式的定义计算增强后的像素值r(x):

所述a表示预设的权重系数,c(x)表示矩阵c中坐标x处的元素值,表示解码图像中坐标x处的像素值;

步骤10.3令ii+1,若ititeration,所述titeration表示预设的迭代次数,则转入步骤11,否则转入步骤10.1;

步骤11.输出r,作为最终的解码图像。

与现有技术相比,本发明具有以下特点:第一,小波变换仅能稀疏表示图像中沿着水平、竖直和对角线方向的点奇异和直线奇异,而图像存在的更加复杂的线奇异则表现为高频子带中大量呈现聚集性和幅值相关性的高幅值小波系数,本发明沿着最高频子带的主要梯度方向施加二次小波变换,既能将那些具有幅值相关性的高幅值系数的能量进一步集中到少量系数上,又可增加空间方向树的高度,进而提高传统spiht方法的编码效率;第二,为缓解理想频率截断产生的振铃效应,小波变换的高通滤波器会保留少量的中、低频信息,而这些中、低频信息往往对应图像的宽阔边缘和主要轮廓,利用这一特点,本发明反复应用具有平滑下降沿的高通滤波器迭代地向低频泄露和放大这些能量,从而增强解码图像的边缘和轮廓,改善其人眼主观质量。实验表明本发明可有效改善解码图像在低码率下的主客观质量。

附图说明

图1是本发明实施例在不同码率下解码lena图像的效果图。

图2是本发明实施例在不同码率下解码barbara图像的效果图。

图3是本发明实施例在不同码率下解码goldhill图像的效果图。

具体实施方式

一种基于能量泄露和放大的改进spiht图像编码方法,其特征在于按照如下步骤进行:

步骤1.输入待编码图像和目标码率,设图像大小为像素,根据码率计算编码所需的比特数bit_budget=,并将hw各用1个字节传输至解码端;

步骤2.对图像进行级daubechies双正交9/7小波变换;

步骤3.判断最低频子带是否存在负系数,若包含负系数,则令标志变量havingnegative=1,否则令havingnegative=0,然后将havingnegative的值用1bit传输至解码端;

步骤4.计算最低频子带系数的绝对值最大的幅值,进而得出最大位平面数,并将的值用4bit传输至解码端;

步骤5.采用前向差分算子计算最高频子带在每个系数处的梯度,然后分别统计3个最高频子带的梯度方向直方图,进而为每个最高频子带选取一个主要梯度方向,并按照lh、hl和hh的顺序,将3个最高频子带的主要梯度方向各用8bit传输至解码端;

步骤6.对3个最高频子带分别沿着其主要梯度方向进行级一维5/3提升小波变换;

步骤7.初始化非重要系数表、重要系数表、非重要子集表和比特位流表

步骤8.采用类似spiht的扫描方式编码所有小波变换系数;

所述类似spiht的扫描方式包括如下步骤:

步骤8.1初始化扫描阈值t=2n,将最低频子带的所有系数放入lip表,将存在孩子系数的最低频系数加入lis表,并将其扫描类型设置为d型;

步骤8.2若或比特位流表中的待输出比特数大于bit_budget,则转入步骤9;否则,转入步骤8.3;

步骤8.3扫描lip表:顺序取出lip表中的每个待处理系数,执行步骤8.3.1~步骤8.3.5;若lip表中的所有系数均已处理完毕,则转入步骤8.4;

步骤8.3.1若,则在比特位流表e的末尾添加比特“0”,则返回步骤8.3;

步骤8.3.2若,则在比特位流表e的末尾添加比特“1”,把该系数lip表中删除并添加到lsp表末尾;

步骤8.3.4若是最低频系数且havingnegative=0,则返回步骤8.3;否则,转入步骤8.3.5;

步骤8.3.5如果系数是正数,则在比特位流表e的末尾添加比特“1”,否则,在比特位流表e的末尾添加比特“0”,返回步骤8.3;

步骤8.4扫描lis表:顺序取出lis表中的每个待处理元素,执行步骤8.4.1~步骤8.4.3;若lis表中的所有元素均已处理完毕,则转入步骤8.5;

步骤8.4.1若其扫描类型为d型,则转入步骤8.4.2,否则转入步骤8.4.3;

步骤8.4.2判断的d型子集是否为重要集合:

a.若的d型子集是重要集合,则在比特位流表e的末尾添加比特“1”,再执行4次步骤a.1~步骤a.3来依次判断的4个d型孩子系数的重要性;

a.1若某个孩子系数是重要的,则在比特位流表e的末尾添加比特“1”,并且把该孩子系数加到lsp表末尾,进一步,若该孩子系数是正数,则在比特位流表e的末尾添加比特“1”,否则在比特位流表e的末尾添加比特“0”;

a.2判断的l型子集是否为空集,如果不为空集,则把的扫描类型由d型转换成l型后添加到lis表尾部,如果的l型子集为空集,则从lis表中删除元素

a.3如果某个孩子系数不是重要系数,则把该孩子系数添加到lip表末尾,并且在比特位流表末尾添加比特“0”;

b.如果的d型子集是不重要集合,则在比特位流表末尾添加字符“0”;

步骤8.4.2判断的l型子集是否为重要集合:

a.如果的l型子集是重要集合,则在比特位流表末尾添加比特“1”,并且把的4个直接孩子系数添加到lis表尾部,将其扫描类型设置为d型;返回步骤8.4;

b.如果的l型子集不是重要集合,则在比特位流表末尾添加比特“0”;返回步骤8.4;

步骤8.5精细扫描:顺序扫描lsp表,除了本轮扫描增加的那些系数以外,将表中其余系数的第个位平面输出到比特位流表e中;

步骤8.6令,转入步骤8.2;

步骤9.将比特位流表e传输至解码端,编码过程结束。

一种与上述基于能量泄露和放大的改进spiht图像编码方法对应的解码方法,其特征在于按照如下步骤进行:

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

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

步骤1.2从比特位流中读取5bit,解码出havingnegative和最大位平面数

步骤1.3从比特位流中读取24bit,按照lh、hl和hh的顺序,解码出3个最高频子带的主要梯度方向

步骤2.初始化非重要系数表、重要系数表、非重要子集表,将待解码图像的级小波变换系数全部初始化为0,令扫描阈值

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

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

所述类似spiht的扫描方式包括如下步骤:

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

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

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

步骤4.1.3若,表明lip表中当前坐标(i,j)所对应的系数为重要系数,则将该重要系数的值更新为,然后把坐标(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从比特位流中读取1bit

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

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

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

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

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

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

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

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

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

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

步骤4.4令,若目前从比特位流中读取的比特位数量已达到bit_budget,则转入步骤5,否则转入步骤4.1;

步骤5.对3个最高频子带lh、hl和hh,分别沿着其主要梯度方向进行级一维5/3提升小波逆变换,得到小波系数矩阵t1,并将t1复制到矩阵t2;

步骤6.将t1进行级daubechies双正交9/7小波逆变换,得到解码出的图像

步骤7.利用canny算子对进行边缘检测,得到边缘像素的二值掩码矩阵e:若图像的像素x位于边缘上,则令e(x)←1,否则令e(x)←0;

步骤8.将t2的最低频子带系数全部置为0,但保留高频子带系数不变;

步骤9.对低频置0后的t2进行级daubechies双正交9/7小波逆变换,得到图像

步骤10.对进行迭代式高频能量增强,令i←1;

步骤10.1将r进行高通滤波,得到高通系数矩阵c;

步骤10.2对于r中的每个像素x,利用高通系数矩阵c和二值掩码矩阵e,根据公式的定义计算增强后的像素值r(x):

所述a表示预设的权重系数,c(x)表示矩阵c中坐标x处的元素值,表示解码图像中坐标x处的像素值,本实施例中,令a=0.12;

步骤10.3令ii+1,若ititeration,所述titeration表示预设的迭代次数,则转入步骤11,否则转入步骤10.1,本实施例中,令titeration=100;

步骤11.输出r,作为最终的解码图像。

本发明实施例与传统spiht方法、基于改进空间方向树的spiht编码和解码方法(2015)的对比如表1~表3。

本发明实施例在不同码率下解码lena图像的效果图如图1所示;

本发明实施例在不同码率下解码lena图像的效果图如图2所示。

本发明实施例在不同码率下解码goldhill图像的效果图如图3所示。

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

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

表3在不同码率下goldhill图像(512×512像素)的解码质量比较

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