JPEG2000新型码率控制算法及其DSP实现

2011-03-20 03:50曾勇
电子科技 2011年7期
关键词:码流码率控制算法

曾勇

(西安电子科技大学电子工程学院,陕西西安710071)

JPEG2000标准[1]采用DWT(离散小波变换)和EBCOT(EmbeddedBlockCodingwithOptimized Truncation)率失真优化截断的嵌入式块编码算法,而其中的截断算法称为PCRD(Post-Compression Rate Distortion)。这种码率控制算法可以确保在给定的码率下使压缩图像的质量最好。图1为JPEG2000标准算法的流程图[2],T2编码器是在T1编码器对整个Tile块进行编码后,再采用率失真优化的原则,按照各个码块的码流对恢复图像的质量贡献,完成对码流的率控制和组织。显然,在低码率时,绝大多数被截断的码流也进行了编码,同时由于T1编码耗费的时间在软件上占JPEG2000标准编码时间的45%~60%[3],大大增加了系统不必要的资源消耗,同时也使系统的实时性降低。因此,对于JPEG2000压缩算法的DSP或是FPGA实现而言,若能做到实时码流控制或“按需编码”,在保证图像压缩质量的前提下,将较大程度地提升图像压缩编码速度。

图1 JPEG2000编码流程图

自JPEG2000标准公布以来,已有不少学者致力于T1编码器的研究和硬件实现,使其处理速度得到了较大地提升,但T2编码器的率控制硬件方案却没有得到很好地解决,或计算复杂度高,或性能质量较差[5]。文中提出了一种适合高速实时图像压缩硬件实现的率控制方案,即基于渐进位平面截断算法+逐层位平面截断算法的混合算法,不仅保证了图像的压缩质量,而且基本实现了按需编码,减少了压缩冗余,从而提升图像压缩编码速度且便于硬件实现。

1 截断算法简介

1.1 JPEG2000标准率控制算法

根据JPEG2000标准,EBCOT把经DWT后的各子带分为较小且互不重叠的编码块,然后对每个小编码块进行独立编码,按照从最高位平面(MSB)至最低位平面(LSB)的顺序依次进行,而每个位平面又分解为重要性通道(SPP)、幅值精炼通道(MRP)和清除通道(CUP)3个编码通道依次编码。而在PCRD-opt算法中,每个编码通道的结束点都可能是该编码块的截断点,该算法则是在给定码率的要求下找到一组最优的截取点,使得失真最小。设码块Bi在T1部分产生的内嵌比特流的码率截止到Rnii,ni是某个截取点,Rmax为给定的码率,则图像总的码率为

设码块Bi的截取点ni产生的失真为Dnii,D为整幅图像的失真大小,且假设码块小波系数的失真测度为加性,即

率失真优化就是选择最优的截断点{ni},对于这种条件极值问题可以用通过Lagrange乘积法解决。

从以上分析可得,PCRD算法是一个全局优化过程,它必须在整幅图像所有码块的所有编码通道完成之后,才进行截取点的搜索,这需要大量存储器存储将要被截断的码流和每个编码通道的RD斜率,而且这个分层截断点的搜索过程每次都需要遍历每个编码块的每个通道,且需要多次搜索才能完成。因此,虽然PCRD算法拥有最优性能,但它的存储器开销大,系统实时性较差,硬件可实现性较低。

1.2 渐进过程数截断编码算法

根据文献[4]可知,对于8~32倍的图像压缩而言,在对小波变换后的图像进行3个通道扫描压缩时,图像编码块各个编码通道的率失真斜率基本满足随编码通道数的减小而减小,而且图像的不同编码块在这些相同的编码通道都有相近的率失真斜率,故用率失真优化的截断算法也会截止到相近的过程数。由于JPEG2000标准压缩算法是逐个码块进行编码的,对已编码过的码块进行截止到当前位平面的编码字节数进行统计,如果当前的字节数已大于目标字节数,根据上述理论,则最终的截断位平面必然大于等于当前位平面,则该图像当前编码块之后的下一码块只需编码至当前位平面的上一位平面即可。当图像的所有码块编码结束之后,就可以得到一个较粗略的截断位平面,而且截止至此位平面的编码字节数是小于等于目标字节数,故仍需要从Z型扫描方式中靠前的码块中截取下一个位平面的编码字节,当然此时是逐个编码通道进行截取。该算法在T1编码器编码的同时对码流完成率控制,进行实时截断,并通过反馈渐进提升编码的最低位平面,使T1编码器不必编码低于更低通道的数据。这种截断算法就称为渐进过程数截断编码算法。

从以上论述可知,渐进过程数截断编码算法较JPEG2000标准率失真控制算法而言,图像的PSNR值减小约0.05~0.1 dB,但是其减少了很多不必要的编码字节,同时算法的复杂度和计算量也减小了很多,便于硬件实现,系统实时性较好。

虽然渐进过程数截断算法已经减小了很多,但其编码的字节数仍是目标码流长度的2~3倍,也就是说仍旧没有做到“按需编码”。而且,渐进过程数截断编码算法指出,JPEG2000标准编码算法的各个码块的截断通道又是较为相近的,利用这一点,提出了逐层位平面截断算法。

2 新型码率控制算法及其DSP实现

2.1 新型码率控制算法

所谓逐层位平面截断算法是指,其不按标准算法的逐个码块从最高位平面至低位平面的方式进行编码,而是对整幅图像从最高位平面至低位平面进行编码,即标准算法是先码块,后位平面的扫描方式,而后者是先位平面,再码块的扫描方式。这种算法的好处就是可以实时监控已编码的字节数,基本做到按需编码。当编码完某个位平面时,如果当前的编码字节数小于目标码流字节数,则继续编码下一个位平面;否则,在编码某个位平面的某个码块时,如果当前的编码字节数大于目标码流字节数,则截止位平面一定是当前位平面,而且当前码块之后码块的截断通道一定大于当前码块的编码通道,故而这些后续的码块只需编码当前通道的上一通道即可;否则,仍需编码至当前通道。对于编码结束之后,为满足最终的目标码流字节数,需要在截断位平面的截断通道上,对某个码块进行细截断。但这种算法的不足在于编码完一个位平面之后,需要保存这个位平面的编码状态信息,这就存在存储空间的问题。对于硬件实现而言,即使是将这些编码状态信息放于SDRAM中,然后再进行读入,这种频繁地数据导入和导出,依旧会消耗较多的时间。

考虑到对于8~32倍的图像压缩,大多数图像的截断位平面都在位平面4以下,所以可以利用渐进位平面截断算法与逐层位平面截断算法相结合的方式进行位平面截断,即在大于等于位平面4的位平面实行渐进位平面截断,当编码完位平面4时,如果当前的编码字节数仍小于目标码流字节数,再在低4个位平面实行逐层位平面截断算法;否则,利用渐进位平面截断算法即可,流程图如图2所示。这种新型码率控制算法充分利用了渐进过程数截断编码算法和逐层位平面截断算法的优点,避免了各自的缺点,基本实现了按需编码,算法复杂度较低,便于硬件实现,同时系统实时性较好。

图2 新型截断编码算法流程图

2.2 新型码率控制算法的DSP实现

针对工程项目的实际需要,采用ADI公司Blackfin系列的561芯片开发了一套JPEG2000编码系统,该系统充分发挥了DSP超强的数据吞吐能力及运算速度的优点,使其在1 s内能对30帧512×512的灰度图像实现16∶1的压缩。该硬件结构图如图3所示。

图3 JPEG2000编码系统硬件结构框图

小波变换使用DB9/7提升小波,量化仅作了四舍五入的简单处理,对T1编码器中的位平面扫描和自适应二进制算术编码也做了较多的改进。因为BF561是定点处理器,运行浮点算法十分耗时,所以将小波变换及其他涉及浮点运算的模块全部定点化。同时还结合具体的硬件环境对代码本身做出了大量优化,使得编译器能够充分地使用硬件循环、软件流水化、矢量化等技术。Blackfin561存储器采用分层结构,所以对图像数据进行了合理的存储器资源分配,采用DMA双缓冲乒乓操作,使绝大多数操作都集中在L1存储器。

在L3(SDRAM)中,主要放置的数据包括原始图像、小波变换后的系数、整帧图像的重要性系数Fc、压缩码流;在L1中,主要有编码块图像数据、编码块重要性系数Fc、编码块重要性暂存系数v、编码字节数Plan_pass_byte等。

在位平面扫描过程中,需要将编码块图像数据通过DMA从L3传入L1中,同时将编码码流从L1传出到L3中。在T1编码器中,使用了一种生成上下文的改进方法[6],尽管PSNR值有小许损失,但是却大大的简化了清除通道模型,使系统更具有实时性。

在渐进过程数截断编码时,由于预先设定的最低位平面为4,在T1编码器编码时,只对≥T2编码器反馈回来的过程数的数据进行编码。当然,在编码位平面4时,如果统计的编码字节数小于目标码流长度,则需要保存Fc;一旦大于,则不需要保存。在所有编码块编码结束之后,统计当前的编码字节数,如果小于,则进入逐层位平面截断编码,这时需要重新导入之前保存的Fc,而非重新初始化。这样向低位平面方向逐层的编码,直至满足所需的编码字节数。在编码字节数大于目标码流字节数且编码完所有码块后,率控制模块就会把每个编码块的截断通道的码流数再依次搜索一遍,确定最终的码流截断点,然后就可由码流组织模块组织和发送数据。

3 仿真结果和分析

该编码系统使用Visual DSP++5.0仿真验证,通过对几幅典型的图像进行仿真测试,统计在16倍压缩下所处理的码流和目标码流长度、PSNR值以及时间周期数,仿真图像大小为512×512,经过3层小波变换,分块大小为64×64。结果如表1所示。

表1 JPEG2000PCRD算法和本文的新型码率控制算法硬件仿真比较

比较表1中的3种截断编码算法可得,新型码率控制算法的编码字节较前两种算法少了很多,且非常接近于目标码流字长,同时其时间周期数也是最少的,此外,其PSNR值与渐进过程数截断编码算法相同,且只比标准算法略低了0.05~0.1 dB。

4 结束语

针对多媒体应用和通信的要求,提出了一种适合于高速实时图像压缩硬件实现的率控制方案。该方案通过渐进提升最低编码通道和逐层截断编码的方法,使T1编码器避免对那些产生将被丢弃码流的通道进行编码,从而使编码效率大大提升。经过仿真验证,该实时压缩系统每秒能处理30帧512×512的灰度图像。

[1] ISO.JPEG2000 part1:final committee draft(ISO/IEC FCD15441-1)[S].USA:ISO/IEC JTC1/SC29/WG1 N11855,2000.

[2] TAUBMAN D.High performance scalable image compression with EBCOT[J].IEEE Trans on Image Process,2000,9(7):1158-1170.

[3] CHEN Kuanfu,LIAN Chung Jr.Analysis and architecture design of EBCOT for JPEG2000[C].Sydney,Australia:IEEE ISCAS 2001,2001.

[4] 孙文方,赵亦工,石自民,等.基于JPEG2000渐进过程截断数编码算法[J].计算机工程,2006,32(20):213-216.

[5] Taekon K,Hyun M K,Ping S T,et al.Memory efficient progressive rate-distortion algorithm for JPEG2000[J].IEEE Transactions on Circuits and Systems for Video Technology,2005,15(1):181-187.

[6] 田东庚,赵亦工,孙文方.基于JPEG2000一种上下文生成的改进方法[J].遥感遥测,2006,27(2):37-41.

猜你喜欢
码流码率控制算法
数字电视TS码流协议简要分析
一种基于HEVC 和AVC 改进的码率控制算法
基于FPGA的多码率卷积编码器设计与实现
基于状态机的视频码率自适应算法
基于ARM+FPGA的模块化同步控制算法研究
一种优化的基于ARM Cortex-M3电池组均衡控制算法应用
多光谱图像压缩的联合码率分配—码率控制方法
一种比较ASN.1码流差异的方法
滑模控制算法在在线式大功率UPS高频整流器中的应用
基于梯度的CCSDS压缩码流控制算法研究