JPEG自适应量化参数选择算法
2022-03-15陈晓妹王向文
陈晓妹,王向文
(上海电力大学电子与信息工程学院,上海 200090)
1 引言
随着计算机技术的迅猛发展,大量数据产生并被传输交换。为了便于传输,需要对数据进行一定程度的压缩[1]。压缩分为有损和无损两种,无损可以完全恢复出信息,但是压缩效率不高,而有损可以很大程度的压缩数据,同时能够一定程度上保证数据的真实性。对于图像而言,需要将原始位图压缩成JPEG格式。
JPEG算法广泛应用在数码相机和互联网中,网络中80%的图片都采用了JPEG压缩。JPEG压缩算法的关键在量化,量化是压缩中唯一的信息损失来源,通过降低整数精度以减少存储需要的位数,从而达到压缩数据的目的。而JPEG编码的其它过程,如DCT,熵编码则是无损的。JPEG算法提供了两张标准的量化系数矩阵,分别用于处理亮度数据Y和色差数据Cr以及Cb。用固定的量化表对具有不同细节内容的图像进行固定量化步长的量化,致使图像细节的丢失,而这些细节可能恰是原始图像的关键信息,是其最重要的部分。
如何在同等压缩比的情况下保留更多的图像细节是图像压缩的重要问题。根据原图像的频域分布,自适应地改变量化级数,是在一定的压缩比下保留更多图像细节的可行思路。文献[5]在JPEG压缩的基础上,利用高频分量在8*8的子块出现的位置和63个交流系数的平均值,提出了基于JPEG的自适应量化算法,但并未进一步优化。文献[6]利用0.98缩放近似原图像的方法解决原始量化步长多值问题,提出了一种双重压缩估计原始量化步长的方法,该方法根据两次量化步长间的大小提出了直接利用直方图计算的新方法,但多次量化一定程度上会对结果的精确程度造成影响,同时使得计算的复杂度增加。JPEG算法用于数字图像,压缩比和质量取决于64个整数的矩阵的量化表,由于不同内容图像,各频率信息不一,没有唯一的最佳量化表。文献[8]考虑利用群体智能的启发式方法解决量化表的选择,提出了将萤火虫算法应用于不同图像相似性度量的量化表选择问题的框架。文献[10]提出一种基于改进量化表的JPEG图像压缩算法(JPEG-HVS),通过对人眼亮度对比度敏感函数(CSF)运用生成新的量化表,来替代JPEG标准通用的亮度量化表。文献[12]提出了一种在JPEG压缩中自适应选择DCT量化参数的新算法。量化参数是根据对比度超过阈值视觉敏感度的精细细节的合成,其中采用块分类来量化参数,可能引起块效应。
本文在信息论反注水理论的基础上,充分考虑各8*8子块中关键信息占的比例,提出了基于反注水模型的JPEG自适应量化算法。主要思想是给每个频率分配相同的失真d,根据信源包含同一个频率位置上DCT系数的方差与失真d的关系,重新估计量化步长,并进行优化,使得量化步长更接近最优,再将所有8*8子块的相应DCT系数重新量化,达到了优化量化的效果。
本文结构如下:第一部分叙述了JPEG算法;第二部分简述了反注水模型;第三部分是反注水自适应算法的提出和实现步骤;第四部分是实验结果,根据优化的参数表达式,本文提出了一种反注水自适应量化参数选择算法,该算法能够根据图像内容不同更新量化参数。最后,实验表明新算法能够有效的提升图像编码质量。
2 反注水模型
根据数据分布特征,把需要量化的一个信源拆分成多组具有不同分布特征的子信源,并分别对每组进行优化量化设计则可以达到比对单一信源进行优化量化性能更优的效果。在研究图像的DCT系数量化编码应用中利用多信源的优化量化参数选择量化方案可以较大程度提高编码压缩效率。对于率失真函数这一线性约束问题的最佳分配方案是让各个随机变量具有相等的失真d*,如(1)式所示
Di=d*
(1)
另外,要求各个随机变量的失真和不超过给定的最大目标失真Dc。因此,当允许的总目标失真增大时,各随机变量失真也随之增大。由于方差是量化失真的最大值,即一个量化策略所对应的量化失真一定不大于方差值,在这种情况下,有以下表示方法
(2)
根据随机变量的目标失真d*与最大失真和Dc之间的关系,目标失真可以通过(3)求解
(3)
这种优化方法,在信息论中也被称为反注水法,如图1所示。通过“反注水”法,复杂的率失真优化问题转换为了简单的失真最优化问题。图像各个频率编码失真重新分配,且最后的失真总和不超过最大目标失真和值,就可以得到最优的量化参数和率失真性能。
图1 反注水模型图
3 自适应反注水算法
3.1 自适应反注水量化参数推导
要提升图像压缩质量,则应该对量化参数进行优化。因此,提出了一种自适应反注水参数选择算法。首先进行原图像从RGB到YUV空间的转换,并将原始图像分成尺寸8*8 的子块,接着对子块进行离散余弦变换(DCT),实现由时域转频域。利用式4求得亮度分量在DCT变换后子块中64个系数的平均值,利用平均值和式5求出亮度分量在频率域方差
(4)
(5)
其中,n为子块总数,i的取值范围是1~64。
根据设定目标失真DT,由式(6)求得平均失真d
d=DT/64
(6)
利用反注水理论即7式重新分配失真,得到各频率位置失真
(7)
(8)
利用反注水理论得各频率新目标失真
(9)
由式(10)和(11)计算参数最大似然估计ηi和死区尺寸zi
(10)
(11)
(12)
(13)
(14)
利用新生成量化表进行图像压缩,生成符合JPEG格式的压缩文件。除量化表有变,压缩过程中其余步骤与JPEG标准压缩过程相同,所以用标准的JPEG解码程序能对用自适应量化算法压缩的JPEG文件进行解压缩,可知自适应量化算法与JPEG 标准是兼容的。
新算法的创新处在于量化表的自适应设计,其余部分与JPEG标准编解码过程相同。
3.2 算法描述
反注水自适应量化算法可总结如下:
1)首先对图片数据进行量化、反量化,得到初始化的失真值。
2)利用反注水模型即式(2)重新分配失真。
3)通过求解式(12),估算出优化后的量化步长。
4)利用更新后的量化步长求图像失真,由式(14)求得优化后的量化步长。
5)将所求得的量化步长更新至量化表中。
具体流程框图如图2所示。
图2 算法流程框图
本文所提出的自适应反注水算法,是基于JPEG的优化量化,能够随着图像的变化自动更新参数,同时,该算法只需对量化表中的参数进行调整,但是量化器的结构依然保持不变,不影响编码过程。
4 实验结果与分析
实验环境:MATLAB2018
为检验自适应量化算法的实际效果,利用USI-SIPI图像数据库中的图像进行了不同压缩率下的压缩实验。通常利用图像的逼真度和可懂度来评价图像质量,逼真度描述压缩图像同标准图像的偏离程度,常用峰值信噪比(PSNR)来度量;可懂度是指图像向人或机器供给信息的能力。
由于图像中的亮度分量包含了主要信息,所以实验以亮度数据为例。实验选用尺寸为512*512的图lena、mandrill、boat和peppers,采用峰值信噪比(PSNR)作为量化前后的失真度量,PSNR越高,表示量化质量越好。比特率则作为衡量编码效率的工具,比特率越小,表示编码耗费的资源越少。对于灰度图像,PSNR计算公式如下:
(15)
其中f(n,m)指原图像,f′(n,m)是压缩后的恢复图像,其图像尺寸均为N*M,MAX为f(n,m)中的像素最大值,MAX=255是8bit量化图像的最大值。
率失真曲线能够直观的表示出PSNR与比特率之间的均衡性,反映了量化前后的压缩效果。图3为改进算法与固定参数量化的RD曲线图。其中,红色线为新算法的RD曲线,蓝色线是JPEG标准压缩的RD曲线。由图可见,在相同码率时,本文提出的算法有更高的PSNR,这说明相比于固定参数量化方法,新算法率失真特性更佳,对图片质量的损失更小。
图3 自适应量化参数算法与固定参数量化率失真曲线比较图
5 结束语
量化技术在图像编码中起着重要作用,直接影响了图像的压缩效果。本文利用反注水模型,基于JPEG标准的量化算法,提出了一种自适应量化参数更新算法,该算法能根据图像内容信息自适应更新量化参数。实验结果表明,该方法相较与固定参数的量化方法,并未改变量化编码器框架,且在相同条件下可提升图像质量,并且可提升视频质量,使PSNR平均提高0.3223dB,达到优化量化的目的。