本发明公开了一种JPEG2000编码方法,该方法在JPEG2000标准基础上,对Tier1编码进行改进,根据第一个编码块的最小率失真斜率作为门限的初始值和循环判断这两个特点,对设置为“1”状态的编码通道进行编码,而设置为“0”状态的编码通道丢弃。通过循环判断,可截断大量Tier1的冗余编码通道,同时也缩小了Tier2搜索最优率失真斜率门限值和最优截断点的范围,因此可显著地减少JPEG2000图像编码的存储量和计算时间,从而提高了编码效率。该方法包括以下步骤:步骤1、原始图像预处理;步骤2、离散小波变换;步骤3、量化处理;步骤4、Tier1编码;步骤5、Tier2编码。
1.一种JPEG2000图像编码方法,包括以下步骤:步骤1、原始图像预处理;步骤2、离散小波变换;步骤3、量化处理;步骤4、Tier1编码;步骤5、Tier2编码;其特征是:所述步骤4的Tier1编码具体包括以下步骤:a)、确定门限的初始值:对第一个编码块中的所有编码通道全部进行编码,计算相应的率失真斜率S
j;率失真斜率门限λ的初始值是第一个编码块中大于零的最小率失真斜率值;其中编码通道的率失真斜率S
j的公式如下:
S j = D j - 1 - D j R j - R j - 1 ]]> 其中,j是通道序号,R
j和R
j-1分别表示累计到j和j-1通道时的累计码率,D
j和D
j-1分别表示j和j-1通道时产生的失真;b)、筛选满足条件的编码通道:对剩余编码块进行初始化,把编码块中所有编码通道设置为“0”状态;对剩余编码块的第j个通道,计算其率失真斜率S
j和累积编码长度R;首先,比较R与R
max,如果在第一次循环中就出现R≥2R
max的情况,则停止编码,转到步骤d);接着比较S
j与λ,如果S
j<λ且S
j>0,对此编码通道设置为“1”状态,同时停止对该编码块的编码,进行下一编码块的编码;如果S
j≥λ或S
j≤0,将该编码通道设置为“1”状态,继续编码下一个编码通道,直至编码完所有编码通道,继续下一编码块中的编码通道;如果编码完所有编码通道时R≤R
max,跳转到第c)步,否则转到步骤d);c)、调整门限值:减小率失真斜率门限的值:λ′=λ/β,再回到步骤b)并以λ′的值代替步骤b)中λ的值再次筛选编码通道,直至R>R
max时,转到步骤d);其中β取为1.11;d)对筛选出来状态为“1”的编码通道送入Tier2编码。技术领域:本发明涉及图像处理技术领域,具体涉及一种JPEG2000图像编码方法。背景技术:JPEG2000是由联合图片专家组(JPEG)开发的国际标准的最新静态图像压缩标准,具有的各种出色特性,使得它的应用领域非常广泛,尤其在Internet传输、无线通信、数码相机、医疗图像等领域将具有诱人的应用前景。但是JPEG2000采用的带优化截断的嵌入式块编码(EBCOT)方法的复杂度很高,影响其在实际中的应用。EBCOT是由Tier1编码和Tier2编码两个部分组成。Tier1编码是将量化子带系数进行熵编码,其约占JPEG2000编码器45%~60%的计算时间,减少Tier1的计算量将大大减少编码系统的处理时间。Tier2编码是将输入的编码比特流进行码率控制,打包(packetization),并按一定的渐进顺序和格式组织码流输出。Tier2部分采用压缩后率失真优化方法(PCRD)进行码率控制。但这种方法需要对Tier1的所有数据进行编码,并且储存所有编码码流。而在低码率时,有大量编码扫描过的通道是不会被包含进最终码流中。针对PCRD方法存在的不足,许多学者提出了新的方法。如文献[Auli-Llinasxa0F,Serra-Sagristaxa0J,Monteagudo-Pereiraxa0J,etal.Efficientxa0ratexa0controlxa0forxa0JPEG2000coderxa0andxa0decoder[J].Proc.IEEExa0DCC,Mar.2006,1:282-291.]和文献[秦成,陈志云,俞琨,周雁.基于JPEG2000的码率控制算法的研究[J].计算机应用与软件,2011,第28卷(第2期):76-80.]提出的方法是基于隔行扫描编码通道的码率控制方法,专利号为200410026016.6的实时截断的JPEG2000速率控制方法,专利号为200710018190.x的基于码率预分配的JPEG2000自适应率控制系统及方法等,这些论文和发明都显著地提高了JPEG2000的编码效率,但是码率控制不够精确,恢复图像的PSNR有明显下降。文献[Kimxa0T.,Kimxa0H.M.,Tsaixa0P.S.,etxa0al.Memoryxa0efficientxa0progressivexa0rate-distortionxa0algorithmxa0forxa0JPEG2000[J].IEEExa0Trans.onxa0Circuitsxa0andxa0Systemsxa0forxa0Videoxa0Technology.2005,15(1):181-187.]和文献[王超,王炯.一种有效的JPEG2000压缩率控制算法[J].东华大学学报(自然科学版),2011,第37卷(第1期):76-80.]提出的方法减少了编码计算量和存储量,但是在高码率下编码冗余比较大,并且增加了最小斜率搜索运算。发明内容:本发明的目的是针对JPEG2000图像Tier1存在大量的计算冗余和存储资源浪费的问题,提出了一种JPEG2000编码方法,该方法在JPEG2000标准基础上,对Tier1编码进行改进,根据第一个编码块的最小率失真斜率作为门限的初始值和循环判断这两个特点,对设置为“1”状态的编码通道进行编码,而设置为“0”状态的编码通道丢弃。通过循环判断,可截断大量Tier1的冗余编码通道,同时也缩小了Tier2搜索最优率失真斜率门限值和最优截断点的范围,因此可显著地减少JPEG2000图像编码的存储量和计算时间,从而提高了编码效率。本发明解决其技术问题所采用的技术方案是:一种JPEG2000的编码方法,包括以下步骤:步骤1、原始图像预处理;步骤2、离散小波变换;步骤3、量化处理;步骤4、Tier1编码;步骤5、Tier2编码;其特征是:所述步骤4的Tier1编码具体包括以下步骤:a)、确定门限的初始值:对第一个编码块中的所有编码通道全部进行编码,计算相应的率失真斜率S
j。率失真斜率门限λ的初始值是第一个编码块中大于零的最小率失真斜率值;其中编码通道的率失真斜率S
j的公式如下:
S j = D j - 1 - D j R j - R j - 1 ]]> 其中,j是通道序号,R
j和R
j-1分别表示累计到j和j-1通道时的累计码率,D
j和D
j-1分别表示j和j-1通道时产生的失真;b)、筛选满足条件的编码通道:对剩余编码块进行初始化,把编码块中所有编码通道设置为“0”状态。对剩余编码块的第j个通道,计算其率失真斜率S
j和累积编码长度R。首先,比较R与R
max,如果在第一次循环中就出现R≥2R
max的情况,则停止编码,转到步骤d)。接着比较S
j与λ。如果S
j<λ且S
j>0(排除奇异点,因为奇异点的率失真斜率是小于等于零的但奇异点的下一S
j很可能大于λ),对此编码通道设置为“1”状态,同时停止对该编码块的编码,进行下一编码块的编码。如果S
j≥λ或S
j≤0,将该编码通道设置为“1”状态,继续编码下一个编码通道,直至编码完所有通道,继续下一编码块中的编码通道。如果编码完所有编码通道时R≤R
max,跳转到第c)步,否则转到步骤d)。c)、调整门限值:减小率失真斜率门限的值:λ′=λ/β,再回到步骤b)并以λ′的值代替步骤b)中λ的值再次筛选编码通道,直至R>R
max时,转到步骤d)。其中若β取得太大,则会增加许多在Tier2编码部分仍会被丢掉的编码通道;β取得太小,会增加循环次数。因此β取为1.11。d)对筛选出来状态为“1”的编码通道送入Tier2编码。本发明相比现有技术具有如下有益效果:由上述技术方案可得,本发明方法在Tier1编码时,通过第二步可以看出Tier1编码只对满足S
j≥λ的编码通道和少数奇异点处的编码通道进行编码,截断了大量冗余通道,这将大大减少了Tier1的编码时间、计算量和存储量。因Tier2编码仅对Tier1编码中被设置为“1”状态的编码通道进行率失真斜率优化,缩小了Tier2编码部分搜索最优截断点和最优率失真斜率门限值的范围。可减少图像压缩编码时计算量和存储量,降低复杂度,提高编码效率和速度。
附图说明图1是本发明方法与PCRD方法的8幅(8幅测试后时间再平均)图像的平均计算时间的百分比。图2是本发明方法与PCRD方法的8幅图像的平均存储量的百分比。图3是本发明方法与PCRD方法的主观质量比较图;图3-1、3-2是lena和peppers原始图像,;图3-3是PCRD方法,PSNR=43.357,2.0bpp码率时的图像;图3-4是本发明方法,PSNR=42.626,2.0bpp码率时的图像;图3-5是PCRD方法,PSNR=32.959,0.125bpp码率时的图像;图3-6是本发明方法,PSNR=32.959,0.125bpp码率时的图像。
具体实施方式下面结合附图对本发明的技术方案进行详细说明:本发明的目的是针对JPEG2000图像编码时Tier1存在大量的计算冗余和存储资源浪费的问题,提出了一种JPEG2000图像的编码方法,在JPEG2000标准基础上,对Tier1编码进行改进:首先根据第一个编码块的最小率失真值确定门限的初始值。然后,初始化所有编码通道为“0”状态,把大于门限值的率失真斜率的编码通道设为“1”状态,编码完所有的编码块。接着,若此时累加码率小于目标码率,根据提出的公式自适应地调整门限值继续上述筛选过程,直至累加码率大于目标码率。对最终小于门限值即“0”状态的编码通道不进行编码。最后,Tier2编码部分只需对设置为“1”状态的编码通道进行最优率失真斜率的搜索。本发明方案改进的依据:1)低频带系数LL是图像能量集中的频带,高频带系数主要是边缘、纹理和轮廓。低频带系数LL得到的率失真斜率相对高频带系数要高,而编码是从低频带系数依次向高频带系数依次编码。因此第一个编码的编码块主要包含的是低频带系数,其编码通道的率失真斜率除奇异点外都很高。2)Tier1所有编码通道的熵编码后,通过计算所有编码块截断点的率失真斜率值,找到最优斜率阈值以实现码流长度的分配。而在低码率时,只有少数编码通道会包含进最后码流中。所以PCRD方法使得Tier1进行了很多不必要的编码运算,在编码时间、计算量和存储量都有很大的冗余。因此,通过循环判断可以提前截断冗余通道,通过丢掉小于此门限值的编码通道,使得图像的信噪比略有失真的情况下,大大减少了Tier1的冗余度,同时也缩小了Tier2搜索最优率失真斜率门限值和最优截断点的范围,从而减少了图像的计算量和存储量。本发明具体包括以下步骤:1.预处理JPEG2000编码系统首先对原始图像进行一些适当的预处理,包括颜色分量的变换处理、像素值电平移位处理和图像的分片处理。2.离散小波变换小波变换是将图像分解为低频带系数LL和多个高频带系数LH、HL、HH。LL表示为水平和垂直方向都是平滑的子带系数;LH表示为水平方向是平滑,垂直方向是细节的子带系数;HL表示的与LH相反,水平方向是细节,垂直方向是平滑的子带系数;HH表示为水平和垂直方向都是细节的子带系数。因此低频带系数LL是图像能量集中的频带,高频带系数HL、LH、HH主要是边缘、纹理和轮廓,小波系数都很小。3.量化JPEG2000编码器的量化是将填充分量进行小波变换后得到的子带系数精度进行调整,即通过调整量化步长的大小来改变表示一个小波子带系数所需的比特数,以调整和控制压缩图像码率的处理过程。经过小波变换后得到的小波系数可以用下面的公式得到量化值:
![]()
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/> 其中q
b(u,v)为量化后的值,X
b(u,v)为小波子带系数,Δb为小波子带的量化步长,sign(X
b(u,v))表示输入小波子带系数X
b(u,v)的正负符号。4.Tier1编码本步骤具体包括:a)、确定门限的初始值:对第一个编码块中的所有编码通道全部进行编码,计算相应的率失真斜率S
j;率失真斜率门限λ的初始值是第一个编码块中大于零的最小率失真斜率值;其中编码通道的率失真斜率S
j的公式如下:
S j = D j - 1 - D j R j - R j - 1 ]]> 其中,j是通道序号,R
j和R
j-1分别表示累计到j和j-1通道时的累计码率,D
j和D
j-1分别表示j和j-1通道时产生的失真;b)、筛选满足条件的编码通道:对剩余编码块进行初始化,把编码块中所有编码通道设置为“0”状态。对剩余编码块的第j个通道,计算其率失真斜率S
j和累积编码长度R。首先,比较R与R
max,如果在第一次循环中就出现R≥2R
max的情况,则停止编码,转到步骤d)。接着比较S
j与λ。如果S
j<λ且S
j>0(排除奇异点,因为奇异点的率失真斜率是小于等于零的但奇异点的下一S
j很可能大于λ),对此编码通道设置为“1”状态,同时停止对该编码块的编码,进行下一编码块的编码。如果S
j≥λ或S
j≤0,将该编码通道设置为“1”状态,继续编码下一个编码通道,直至编码完所有通道,继续下一编码块中的编码通道。如果编码完所有编码通道时R≤R
max,跳转到第c)步,否则转到步骤d)。c)、调整门限值:减小率失真斜率门限的值:λ′=λ/β,再回到步骤b)并以λ′的值代替步骤b)中λ的值再次筛选编码通道(可多次调整λ′,每次调整后的λ′代替前一次的率失真斜率门限值λ),直至R>R
max时,转到步骤d)。其中若β取得太大,则会增加许多在Tier2编码部分仍会被丢掉的编码通道;β取得太小,会增加循环次数。因此β取为1.11。d)将筛选出来状态为“1”的编码通道送入下一步Tier2编码。5.Tier2编码Tier2编码阶段的输入是Tier1阶段产生的各个编码块筛选出编码通道数据的集合。Tier2负责输入码流的按质量分层和打包处理,并按一定的顺序和格式将数据包组织为最后的输出码流。为了使压缩码流具有质量上的可伸缩性,JPEG2000将各码块的所有位平面编码通道的编码码流按其对图像质量的有用性分为若干层次,称为质量层。每个层包含每个码块的贡献。Tier2编码中码率控制部分将决定在各层编码码流中应该包含各码块的哪些编码通道。由以上步骤可知,编码块在Tier1编码时,通过b步可以看出Tier1编码只对满足S
j≥λ的编码通道和少数奇异点处的编码通道进行编码,截断了大量冗余通道,这将大大减少了Tier1的编码时间、计算量和存储量。因Tier2编码仅对Tier1编码中被设置为“1”状态的编码通道进行率失真斜率优化,缩小了Tier2编码部分搜索最优截断点和最优率失真斜率门限值的范围。因此,本方法不管是编码时间还是资源的损耗等方面都要好于传统JPEG2000中推荐的PCRD方法。为了验证本发明方法的效果,使用JPEG2000标准中PART5提供的Jasper软件实现本发明方法。选用了“Lena”(512×512)、“Camera”(256×256)、“Goldhill”(512×512)、“Pepper”(512×512)、“Sail”(768×512)、“Boat”(512×512)、“Tulips”(768×512)and”Bridge”(256×256)8幅图像进行测试。实验的所有图像选用的参数是一样,是Jasper软件默认的设置,即设置6层小波分解,5/3小波变换,编码块的大小为64像素×64像素。表1本发明方法与PCRD方法的峰值信噪比(PSNR)比较
![]()
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/> (1)图像的峰值信噪比(PSNR),表1是本发明方法与PCRD方法测试图像的PSNR值比较,其中A是PCRD方法,B是本发明方法。由表1中的平均PSNR的差值可以看出本发明方法与PCRD方法的PSNR的差值相比只是略有下降,最大没超过0.4dB,所以本发明方法方法同样可以获得很好的图像质量。(2)方法的计算时间,图1是本发明方法与PCRD方法Tier1平均计算时间的百分比。从图1可以看出在不同码率的条件下,PCRD方法的编码时间是保持不变的,而本发明方法可以大大减少Tier1的编码时间,尤其在低码率下。如在1.0bpp时,就可以减少Tier1近一半的编码时间。在0.125bpp时,下降到原PCRD方法的15.80%编码时间。可见,本方法可以有效的减少Tier1的编码时间。(3)方法的存储量,本发明方法是使用Tier1编码中存储的码流字节数来衡量。图2是本发明方法与PCRD方法在Tier1部分实现码率控制后的平均存储量的百分比。在0.125bpp、0.25bpp、0.5bpp、1.0bpp和2.0bpp时,本发明方法占PCRD方法的存储量平均值为4.23%、6.22%、12.47%、24.30%和46.47%。可知随着码率的下降,Tier1编码部分的存储量也随之下降,且下降程度都大于50%。因此,本方法可极大地减少图像编码所需的内存量。(4)主观质量比较,图3分别比较了lena和peppers重构图像的主观质量。图3-1、3-2是原始图像,3-3、3-4是2.0bpp码率时的图像,3-5、3-6是0.125bpp码率时的图像。从图可以看出,本发明方法方法与PCRD方法编码比较,人眼几乎看不出任何差别。本发明方法不仅可以得到与PCRD方法一样的主观质量,而且计算时间和存储量要远远小于PCRD方法。相比现有JPEG2000编码方法,本发明方法利用第一个编码的编码块主要包含的是低频带系数,让第一个编码块的最小率失真斜率作为门限的初始值,截断后面编码通道。通过循环减小门限值,不断把满足条件的编码通道设置为“1”状态。对最终小于门限值的编码通道不进行编码,因此截断了大量的冗余编码通道。实验结果表明,本方法显著地提高了图像的编码效率,尤其是在低码率时。