技术中心
 
 

嵌入式设备的静止图像编码

   日期:2006-06-03     作者:管理员    

  摘 要:降低多媒体算法的复杂性和存储器需求对于存储器资源和运算能力都很有限的嵌入式设备是十分重要的。在极低码率应用时,JPEG存在严重的方块效应,JPEG2000具有极高的运算复杂性和存储器需求。分析了H.264 INTRA帧编码的运算复杂性和存储器需求,并提出了一种减小运算复杂性的有效方法。结果显示,H.264 INTRA帧编码具有极低的运算量和存储器需求,非常适合嵌入式设备的静止图像编码。
 
  关键词:静止图像编码 H.264 JPEG2000 零块检测
 
       嵌入式多媒体设备的静止图像编码有着广泛的应用,如照片的拍摄与传输。设备处理的图像越来越大,存储容量和传能力都相当有?因而静止图像编解码要求具有较低的运算复杂性、较少的存储器需求和极好的压缩性能。目前已经制定的静止图像压缩标准主要有JPEG和JPEG2000。JPEG标准在中高速率上压缩效果较好, 对于细节分量多的灰度图像, 当编码压缩率低于每像素0.25比特时,视觉失真大,重构图像存在严重的方块效应,不能很好地适应网络传输图像的需要

。JPEG2000为了降低运算中的存储器需求,使用分块技术,对每个小块进行处理,但采用较小的块在低码率时存在与JPEG一样的方块效应。因而JPEG2000 在低比特率应用时, 建议不分块或者分成较大的块,以保证良好的率失真性能, 但运算复杂性和存储器需求都极高。


  视频编码新标准H.264代表着继MPEG1/2和MPEG4后的第三代视频编码标准。H.264比以前的标准提供了更高的编码增益。H.264的INTRA帧编码算法充分利用图像中的空间相关和变换域的相关性,提供了极高的编码增益,可以用来对静止图像进行编码。在文献[1]中H.264采用JM73代码,JPEG2000 采用Jasper 1.700.5,对标准静止测试图像和视频序列进行测试。测试结果表明:与JPEG2000相比,H.264 INTRA帧具有更高的客观质量和主观质量,但译码器的运算复杂性却比JPEG2000低50%左右。在嵌入式设备上,多媒体应用的实时性不仅取决于算法的运算次数,还取决于可得到的存储器带宽。CPU的工作频率越来越高,存储器的频率却增加缓慢,很多算法的瓶颈在于数据输入输出。有效减小算法的存储器需求,减少中间结果的存储需求,可缩减片外存储器访问次数,提高应用的实时性能。下面主要讨论降低H.264 INTRA帧编码的运算复杂性和存储器需求的方法。
 

嵌入式设备的静止图像编码如图


图1 H.264编码器的结构流程图
 H264INTRA16x16predictionmodesallpredictedfrompixelsHandV图2INTRA4×4和INTRA16×16预测
H.264 INTRA 16x16 prediction modes (all predicted from pixels H and V)
 
图2 INTRA 4×4和INTRA 16×16预测


     1 减少运算复杂性
  H.264 INTRA帧具有比JPEG2000更高的客观质量,这主要是由于INTRA帧采用的多种帧内预测模式较好地去掉了空间冗余。对于平滑的背景区域采用16×16大小的粗糙预测,共有4种可能的预测方向。对于快速变化的图像区域,采用4×4的块,共有9种预测模式。在预测后,对残差信号进行整型变换消除频谱相关性。高效的去方块效应滤波器改善了图像的信噪比和主观质量。图1是H.264编码器的结构流程图。从图1可以看出,在整帧图像的熵编码后,对逆整型变换后的重建数据进行去方块效应,去方块效应后的重建图像数据用作下一帧预测图像的编码,或者用于编码同时显示重建图像。编码器的作用主要是压缩原始数据产生输出码流,若不需要在本地编码器中显示重建图像(例如卫星照片的拍摄),则编码器中的整帧图像的去方块效应可以省去,节省大约30%的运算。宏块的帧内预测包含9种4×4模式和4种16×16模式如图2。INTRA 16×16 预测仅仅采用左边16个像素和上边16个像素作参考;INTRA 4×4 预测仅仅采用左边4个像素和上边9个像素作参考,因而在逆整型变换和重建(逆变换结果与预测值相加)时,仅仅需要计算16×16宏块的第16行与第16列像素、4×4块的第4行与第4列像素,没有必要计算所有的像素。对于16×16的块,减少224个重建像素的计算。对于4×4的块,减少8个重建像素的计算。整型变换、量化、逆量化、扫描以及逆变换消耗比较多的编码时间,可利用在模式选择时计算的绝对差值和(SAD),提前判断整型变换后量化系数全0块,从而省去全0块的整型变换、量化、逆量化、扫描以及逆变换这一系列操作。若SAD小于某个












门限T,各个变换系数绝对值小于量化步长(Qstep),该块为0块。实验中取T等于3Qstep,获得了较高的检测率和较低的检测差错率。H.264 采用整型变换,为简化门限的推导,其中的整型变换与4×4的离散余弦变换(DCT)相差较小,DCT变换为:
 

嵌入式设备的静止图像编码如图

  在INTRA帧量化中时,

 

      F(u,v)量化为0,即嵌入式设备的静止图像编码如图

时,所有变换系数量化为0。由于该式是量化系数全为零的充分条件,而不是必要条件。实验结果显示,使用该门限检测出零块的正确性为100%,大量的量化系数为全零块却检测不出来。为了大幅提高零块检出率,增大该门限T为3Qstep,测量miss.qcf 20帧编码的平均情况,测试结果见表1。从表1可以看出,零块检测率随着量化索引增大而增大,可能将部分非零块检测成零块,但这对信噪比影响不大。


表1 不同量化索引的零块检出率

嵌入式设备的静止图像编码如图

 
 
      2 缩减存储器需求
     减少

运算中的存储器需求对于嵌入式设备十分重要。宏块编码的过程包含预测、模式选择、变换量化扫描、逆量化等。从图2可以看出,在INTRA16×16的4种预测模式中,只使用上边和左边的各16个像素作为预测参考,在INTRA 4×4 的9种预测模式中,仅使用左边4个像素和上边9个像素作为预测参考,因而重建图像并不需要整帧存储,只需存储这几个参考点就可以了。假设宏块编码按照从左到右、从上到下顺序进行,则水平方向的像素需要存储一整行。在INTRA 4×4模式编码时,由于相邻的4×4块模式高度相关,采用相邻块的预测模式预测当前块的最可能模式,同样只需要存储上边一行4×4和左边一个4×4块的编码模式(如图3)。在对量化后变字长编码(VLC)系数的个数进行编码时,需要利用相邻两块的非零系数个数对该块进行预测,也只需要存储上边一行4×4和左边一个4×4块的编码模式的非零系数个数,如图3。在对整帧图像的数据比特串(SODB)添加原始字节序列载荷(RBSP)结尾比特(RBSP trailing bits,添加一比特的“1”和若干比特“0”,以便字节对齐)后,再检查RBSP 中是否存在连续的三字节“00000000 00000000 000000xx”;若存在这种连续的三字节码,在第三字节前插入一字节的“0×03”,以免与起始码竞争,形成EBSP码流,这需要将近两倍的整帧图像码流大小。为了减小存储器需求,在每个宏块编码结束后即检查该宏块SODB中的起始码竞争问题,并保留SODB最后两字节的零字节个数,以便与下一宏块的SODB的开始字节形成连续的起始码竞争检测;对一帧图像的最后一个宏块,先添加结尾停止比特,再检测起始码竞争。采用这种方法产生H.264 附录B中的字节流时,存储器需求从两帧码流大小缩小到两个宏块码流大小。通过对码流输出过程的改进,使INTRA帧编码需要的存储器大小不随图像大小的增加而增加,这时编码过程中的存储器不超过9K个整数。对于基于片上存储器的多媒体处理器,存储器需求的减少可以大量缩减中间结果的片外片上转移,减小数据转移的负担,提高程序的运行速度。


  采用H.264 INTRA帧对静止图像进行编码时,在编码器端不需要显示本地重建图像,可省掉去方块效应滤波器;利用模式选择时计算的绝对差值和,可提前判断量化后全零系数块,节省大量的计算。分阶段地对各个宏块的码流插入竞争阻止字节(emulation prevention byte),以保证原始字节序列载荷中不含起始码,有效减少存储器的需求。运算复杂性和存储器需求极低的H.264 INTRA编码模式,可代替JPEG2000,用于嵌入式设备的静止图像编码。
 

嵌入式设备的静止图像编码如图

 
图3 相邻 4×4 INTRA编码块












 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢