APP下载

一种高精度的自适应码率控制图像压缩算法

2022-03-02宋蓓蓓何帆马穗娜孙文方

西安交通大学学报 2022年2期
关键词:压缩比编码平面

宋蓓蓓,何帆,马穗娜,孙文方

(1.长安大学信息工程学院,710064,西安;2.西安电子科技大学空间科学与技术学院,710126,西安)

通信带宽是在多媒体信息传输中影响获得高质量数字图像的重要因素。在传输带宽受限的情况下,图像的码率控制压缩可以实现最佳的带宽利用[1]。因此,如何实现精确的码率控制是图像压缩领域研究的热点。

目前针对码率控制图像压缩算法的研究主要分为3类。第一类是基于变换编码压缩的码率控制图像压缩算法,其中最经典的是JPEG2000标准采用的压缩后率失真优化(post compression rate-distortion optimization,PCRD-opt)算法[2]。PCRD-opt算法可实现在最小失真下的最优码率分配策略,但由于需要编码所有编码通道,因此该算法的复杂度较高且运行效率较低。为了解决这一问题,Yeugn等提出了基于预扫描的最优截断算法[3],虽然有效减少了编码通道数量,但在高倍压缩时仍然存在较大的编码冗余。王超等提出了最小斜率截断的压缩后率控制算法[4],其利用率失真斜率的两个特性来获得最佳的截断点,虽然减少了存储空间,但图像的峰值信噪比略有降低。Li等提出了根据各子带对图像重建的重要性原理和最优率失真理论分配所有小波子带码率的算法[5],有效降低了编码冗余。第二类是基于预测编码压缩的码率控制图像压缩算法,该类算法主要是将量化步长作为变量建立码率控制的数学模型。Valsesia等通过对非重叠编码块建立预测码率与失真的数学模型实现了有效的码率控制[6]。在此基础上,Conoscenti等实现了在保证码率控制精度的同时也降低算法复杂度的算法[7]。Valsesia等通过动态估计残差信息更新量化步长实现了更精确的码率控制和更高的算法吞吐量[8]。然而,这种动态调整可能导致量化步长的突变,从而在解压图像上引入较大的误差。Joan等提出了一种重复编码的码率控制图像压缩算法[9],该算法首先设置某一量化步长对图像进行编码,在未达到目标码率时,重新调整量化步长并重复该过程。尽管以上算法都获得了有效的码率控制,但在低码率时码率控制精度仍存在0.4%的误差。第三类是基于深度学习压缩的码率控制图像压缩算法,该类算法主要解决深度学习压缩模型只能输出单一码率的问题[10-11],不适用于传统压缩算法的码率控制。

JPEG2000标准由于质量和分辨率的可伸缩性、ROI编码以及高效率压缩等特性受到了广泛应用,但其核心算法的高复杂度严重影响了其在低延迟应用上的实现。虽然目前的码率控制算法对JPEG2000的码率控制进行了优化,但没有从根本上解决码率控制复杂度高的难题。HTJ2K是建立在JPEG2000标准基础上的一种实现高吞吐率的图像压缩标准,其改变了JPEG2000的块编码算法,从根本上降低了JPEG2000的编码复杂度[12],但在很大程度上损失了JPEG2000核心算法EBCOT[13]所具有的精细的渐进传输特性,其非完全的嵌入编码方式导致难以实现精确的码率控制。作为可选项,虽然HTJ2K提供了码率控制框架,但没有给出具体的实现方法。为了解决这一问题,本文根据HTJ2K算法本身的特点,提出了一种结合码率预测和压缩后率失真优化的高精度自适应码率控制的图像压缩(HTJ2K-RPRD)算法,实现了低复杂度的精确码率控制图像压缩。

1 HTJ2K图像压缩框架

HTJ2K是JPEG委员会标准制定组于2019年公布的新的图像压缩标准[14],该标准采用了最优截断的快速块编码算法(fast block coding with optimized truncation,FBCOT)[15],解决了JPEG2000复杂度高的难题。HTJ2K图像压缩框架主要包含多分量变换、离散二维小波变换、量化、块编码和码流包生成5个部分,如图1所示。其中,多分量变换用于去除彩色图像分量间的相关性,离散二维小波变换用于去除图像空间内的相关性[16],量化用以调节小波变换数据的有效位深,若为无损压缩则无需进行量化处理。随后的块编码器则是HTJ2K的关键环节,块编码器采用3种编码通道进行编码:清理(cleanup,CUP)通道、显著性传播(significance propagation,SP)通道和幅值细化(magnitude refinement,MR)通道[17]。当进行定码率压缩时,则需要进行码率控制处理。编码的最后部分是对每个编码块的输出码流打包为一个完整的压缩码流包。

图1 HTJ2K编解码系统框架Fig.1 Framework of HTJ2K codec system

HTJ2K与JPEG2000系统架构相似,最主要的区别在于块编码器部分。HTJ2K与JPEG2000的块编码通道产生方式对比如图2所示。在JPEG2000中,除编码块的最高位平面只生成一个清理通道外,其他的每一个位平面都要生成3个编码通道[18]。假设最高位平面为pmax(0为最低位平面),则每个编码块最多可以生成3pmax+1个编码通道,这样便对小波系数进行了精细的分数位平面划分。而在HTJ2K中,对于给定的位平面p,每个编码块仅生成一个清理通道,进而生成一个显著性传播通道和一个幅值细化通道,因此每个编码块仅生成3个编码通道[19]。特别地,当给定的位平面p=0时,则只需要一个清理通道即可完成对该编码块的编码。HTJ2K极大地降低了算法复杂度,非常有利于并行实现,是实现高吞吐率的关键,但是HTJ2K对编码通道的粗分方式只能生成极少的质量层,给精确的定码率图像压缩带来困难。

pmax—最高位平面;p—设定的位平面;CUP—清理通道;SP—显著性传播通道;MR—幅值细化通道。图2 HTJ2K与JPEG2000的块编码通道产生方式对比 Fig.2 A comparison of block coding passes generation methods between HTJ2K and JPEG2000

2 自适应码率控制方法

码率控制问题实质是一种有约束条件的率失真优化问题[20]。JPEG2000采用压缩后率失真优化算法实现最优码率控制,首先通过计算每个编码通道的重建损失和输出码流长度来获得下凸的率失真函数曲线,然后通过计算率失真曲线的斜率寻找定码率输出要求的最优码流截断点。JPEG2000的每个编码通道的终止点就是一个候选截断点,因此每个编码块都能形成精细的率失真曲线,这非常有利于获得最优截断点,而HTJ2K能产生的待截断点数量非常有限,难以构成精细的率失真曲线。文献[21]对JPEG2000率失真优化的各编码块的编码通道截断点进行了分析,通过观察大量的图像实验后发现,每幅图像中每个编码块的码流是在邻近的编码通道结束点被截断。在标准测试图像lena和barb上分别进行4倍、8倍和16倍的JPEG2000压缩,可得到每个编码块的截断位平面曲线,如图3所示。对于既定的压缩倍数,即使每个编码块数据互相差异较大,但是截断位平面的差异并不大,一般仅相差1个位平面,即使在高倍压缩时也仅相差2~3个位平面。这表明在既定的压缩倍数下,编码块间会存在一个基础的截断位平面,如lena图像4倍、8倍和16倍压缩的基础截断位平面分别为2、3和4。

(a)lena图像

基于以上小波编码的特点,提出了一种结合码率预测和压缩后率失真优化的高精度自适应码率控制的图像压缩(HTJ2K-RPRD)算法。该算法的主要思想是:首先根据图像小波变换域编码块数据统计模型预测编码的基础截断位平面;然后从基础截断位平面编码产生多个编码通道,采用PCRD-opt算法获得每个编码块的编码通道截断点以实现精确的码率控制。

2.1 基于高斯统计模型的小波高频子带数据码率预测

(1)

(2)

式中:σi为第i个码块的标准差;e为自然常数。

根据最优率失真理论,当使得式(3)最小时,可获得最优的编码参数

(3)

(4)

设基础的截断位平面为p,当量化步长Δ为2的整数次幂时,根据Δ=2p则高频子带数据在截断位平面p的平均输出码率RH(p)如下

(5)

2.2 基于清理通道编码规则的小波低频子带数据码率预测

由于小波低频子带数据分布与图像内容紧密相关,往往不满足高斯分布,因此不能用上节方法进行码率估计。由图2可见,清理通道是HTJ2K中最主要的编码部分,承担了大部分码流输出。而清理通道的码流由MagSgn比特流、MEL比特流和VLC比特流组成,各个部分比特流由其对应的编码器产生[25]。清理通道码流结构如图4所示。清理通道以2×2结构的数据为一个最小编码单元,称为四元组。清理通道的四元组处理样本如图5所示。因此,本文以四元组为基本单元,根据3个码字段的编码规则进行低频子带小波数据码率预测。

图4 清理通道码流结构Fig.4 Stream structure of Cleanup passes

Q0—第0个四元组;Q1—第1个四元组;Qwq-1—第wq-1个四元组;wq—码块中每行四元组的个数。图5 清理通道的四元组处理样本Fig.5 Quad processing samples of cleanup passes

在MagSgn编码器中,对于第i个四元组Qi,其中每个样本数据在不同位平面p嵌入MagSgn码流的比特数为mi,n(p),n=0,1,2,3。mi,n(p)满足如下关系式

(6)

在预测时用max{Ei,0(p),Ei,1(p),Ei,2(p),Ei,3(p)}近似估计mi,n(p),则四元组Qi嵌入MagSgn码流的比特数预测值为4max{Ei,0(p),Ei,1(p),Ei,2(p),Ei,3(p)}bit。

VLC编码器采用查找表的方法进行编码,即对每个四元组通过查找表产生一个不超过7 bit的码字段直接嵌入VLC码流。预测每个四元组嵌入VLC码流的比特数为7 bit。

MEL编码器主要对零上下文四元组的重要性编码。相对于MagSgn和VLC编码器,MEL编码器产生极少的码流。由于在对MagSgn和VLC码流的预测中均按照上限进行了超量的码流估计,因此在这里可忽略对每个四元组嵌入MEL码流的长度。

综上,假若二维小波低频子带有N个四元组,则在不同位平面p嵌入清理通道码流的码率表示如下

Ej,3(p)]+7}/4N

(7)

2.3 码率控制

由以上两节可知,当图像二维小波变换的低频子带数据数量占比为aL,高频子带数据数量占比为aH,有aL+aH=1,则编码到位平面p截止时输出码率R(p)可估计如下

R(p)=aHRH(p)+aLRL(p)

(8)

式中:RH和RL分别为二维小波系数在高、低频子带数据的平均输出码率。

假设目标码率为RT,则预测的基础截断位平面如下

ppre=min{p∈{0,1,…,pmax}|RT≥R(p)}

(9)

式中:pmax为图像小波变换数据的最高位平面;R(p)为截断位平面为p时CUP通道编码的预测码率。

式(9)获得的基础截断位平面表示为清理编码后的码率不超过目标码率的最高位平面,而在实际编码中,每个编码块的截断位平面略有偏差。为了获得更精确的码率控制结果,分别将位平面ppre及ppre-1作为截断位平面对每个编码块进行两次编码。这样,每个编码块将共产生6个编码通道,于是有较多的截断点可以保证PCRD-opt算法的执行。码率控制的主要步骤描述如下。

(1)按照截断位平面从下向上的顺序逐个位平面进行码率预测。首先令p=0,根据编码块所属的小波子带采用相应的预测方法进行编码块的码率输出估计,然后采用式(8)计算整个图像压缩的输出码率估计值。

(2)判断码率估计值是否超出目标码率。当估计值超过目标码率时,令p=p+1跳转到步骤(1);否则停止码率估计,记预测的基础截断位平面ppre=p。

(3)将ppre及ppre-1分别作为截断位平面对每个编码块进行HTJ2K编码。

(4)对每个编码块进行统一的PCRD-opt率失真优化、码流截断及码流组织。

3 实验与结果分析

为了验证本文高精度自适应码率控制的图像压缩(HTJ2K-RPRD)算法的码率控制性能、压缩性能以及计算复杂度,首先,采用本文HTJ2K-RPRD算法对4幅测试图像在压缩比分别为4∶1、8∶1和16∶1时进行码率控制性能测试实验;然后,采用4种算法对4幅测试图像在压缩比分别为4∶1、8∶1和16∶1时进行压缩性能测试实验,采用的4种算法分别为JPEG2000、CCSDS-IDC[27]、本文算法,以及HTJ2K -PCRD。其中,HTJ2K-PCRD是对每个位平面均进行3个通道编码,然后采用PCRD-opt进行码率控制的算法;最后,采用本文算法对4幅测试图像在压缩比为8∶1时进行压缩耗时实验。

3.1 测试图像

实验所用到的4幅测试图像均为单通道灰度图像,由自然场景标准测试图像以及空间系统数据咨询委员会(CCSDS)提供的遥感测试图像组成。4幅测试图像如图6所示。其中,lena图像为自然场景标准测试图,像素深度为8 bit;mars、ice、和solar为CCSDS提供的遥感测试图像,像素深度分别为8 bit、10 bit和12 bit。

(a)lena图(512×512像素,8 bit)

3.2 实验结果

3.2.1 码率控制

采用本文算法对4幅测试图像在压缩比分别为4∶1、8∶1和16∶1进行码率控制性能测试的结果如表1所示。计算了按照上式(9)对基础截断位平面ppre的估计值,当截断位平面为ppre时CUP通道编码的预测码率及实际码率,以及码率控制后的最终实际压缩码率。结果显示,当截断位平面为ppre时,对比CUP通道编码的预测码率及实际码率,平均预测误差仅13.18%。对比目标压缩码率与码率控制后的最终实际压缩码率,平均码率控制精度达到99.997%,本文算法获得精确的码率控制结果。

3.2.2 压缩图像质量

采用峰值信噪比(peak signal to noise ratio,PSNR)和结构相似度(structural similarity,SSIM)作为图像压缩质量客观评价指标。

采用4种算法对4幅测试图像在压缩比分别为4∶1、8∶1和16∶1进行压缩性能测试实验的图像质量客观评价结果分别如表2、表3和表4所示。所有算法均采用9/7提升小波进行3级小波分解,编码块大小为64×64。

结果显示,压缩比为4∶1时,JPEG2000、CCSDS-IDC、HTJ2K-PCRD和HTJ2K-RPRD获得压缩图像相对原始图像的PSNR值的均值分别为52.229 7、50.444 0、51.371 6和51.359 8 dB,SSIM的均值分别为0.992 5、0.991 2、0.991 0和0.991 0。HTJ2K-RPRD算法相对JPEG2000的PSNR值下降0.8 dB左右,而相对CCSDS-IDC提高0.9 dB左右,与HTJ2K-PCRD的PSNR值相差不到0.1 dB,4种算法获得的SSIM值相当。压缩比为8∶1时,这4种算法获得PSNR值的均值分别为44.765 9、43.578 4、44.194 6和44.198 8 dB,SSIM的均值分别为0.973 4、0.970 7、0.970 8和0.971 0。HTJ2K-RPRD算法相对JPEG2000的PSNR值下降0.5 dB左右,而相对CCSDS-IDC提高了0.6 dB左右,与HTJ2K-PCRD的PSNR值相差不到0.1 dB,4种算法获得的SSIM值相当。压缩比为16∶1时,这4种算法获得PSNR值的均值分别为40.124 2、39.233 9、39.492 7和39.495 6 dB,SSIM的均值分别为0.943 1、0.936 4、0.936 4和0.936 4。HTJ2K-RPRD算法相对JPEG2000的PSNR值下降0.6 dB左右,而相对CCSDS-IDC提高0.3 dB左右,与HTJ2K-PCRD的PSNR值相差不到0.1 dB,4种算法获得的SSIM值相当。

表2 压缩比为4∶1时采用4种算法的压缩图像质量比较

表3 压缩比为8∶1时采用4种算法的压缩图像质量比较

表4 压缩比为16∶1时采用4种算法的压缩图像质量比较

综上所述,HTJ2K和CCSDS-IDC均是以牺牲部分压缩图像质量为代价以提高编解码吞吐率,整体上JPEG2000压缩图像质量最佳,其次是HTJ2K,HTJ2K的压缩性能优于CCSD-IDC算法。

3.2.3 压缩耗时

采用C语言编写的HTJ2K-RPRD压缩算法(未考虑并行加速处理)对4幅测试图像在压缩比为8∶1进行100次压缩。4幅测试图像压缩过程中截断位平面预测部分的耗时平均值和压缩总耗时的结果如表5所示。结果显示,编码总耗时与图像像素总量呈近似线性关系,图像越大耗时越长。预测部分耗时占整个压缩时间不大于3%,因此HTJ2K-RPRD算法对图像压缩算法复杂度影响极小。图像压缩算法的吞吐量可定义为单位时间内所处理的图像数据量,预测部分耗时增加了不大于3%的压缩耗时,因此整个图像压缩算法的吞吐量降低不足3%,HTJ2K-RPRD算法对图像压缩算法吞吐量影响极小。

表5 压缩比为8∶1时采用HTJ2K-RPRD算法的压缩耗时

采用本文算法和HTJ2K-PCRD分别对4幅测试图像在压缩比为8∶1进行100次压缩。采用两种算法对4幅测试图像压缩总耗时平均值的比较结果如图7所示。显然HTJ2K-PCRD算法耗时更长,平均耗时是本文算法的3倍。HTJ2K-PCRD算法耗时长的主要原因是在于对每个位平面都作为候选截断位平面进行一次编码,虽然可获得更精细的率失真曲线,但是严重降低了编码效率。

图7 采用两种算法的总耗时比较Fig.7 A comparison of total running time between two algorithms

4 结 论

提出了一种高精度的自适应码率控制图像压缩(HTJ2K-RPRD)算法。针对不同图像的不同目标压缩码率,采用基于高斯统计模型和清理通道编码规则两种预测方法分别对小波高、低频子带数据进行码率预测,从而获得基础截断位平面。基于基础截断位平面和低一位平面的编码产生多个编码通道,并采用PCRD-opt算法实现精确的码率控制。对不同位深、不同像素大小的图像上进行多种压缩比测试,结果表明提出的算法的码率控制精度可达99.997%,实现了精确码率控制的图像压缩。

猜你喜欢

压缩比编码平面
HEVC对偶编码单元划分优化算法
住院病案首页ICD编码质量在DRG付费中的应用
高压缩比射流点火天然气发动机燃烧及排放特性
VC-Turbo超变擎300
立体几何基础训练A卷参考答案
立体几何强化训练B卷参考答案
增压新玩法
参考答案
论纪录片影像中的组合编码运用
压缩解压 还有更强的——7-Zip