H.263实时编码器的优化

发布时间:2005-03-03 作者:方红波Fang Hongbo/刘涛Liu Tao/朱秀昌/Zhu Xiuchang 阅读量:

为适应图像通信的发展,国际电联?穴ITU?雪和国际标准化组织?穴ISO?雪先后颁布了一系列重要的视频压缩国际标准建议,如ITU-T H.261、ITU-T H.263、ISO MPEGⅠ/Ⅱ等建议。为实现这些建议,可以针对某种具体的标准开发专用电路,也可以采用可编程的视频信号处理器来实现这些功能。后一种方法具有很大的灵活性,并可在同一硬件平台上开发出不同的应用程序。在这种实现方案中或是采用PC机实现的方案中,为了实时地实现建议中的算法,需要对其中的编解码器进行有效的优化,以达到实时编解码的目的。本文针对H.263编码器进行耗时分析,同时相应提出了卓有成效的优化方案,并对优化前后的结果进行了分析和比较。

 

1 H.263编码器运算耗时分析

    为了实现程序的优化,对程序的运行性能进行分析是首要的一步。表1是以基于PC的H.263编解码器为例进行的耗时分析。

    从表1可看出,4个序列读文件所花的平均时间相同。对于1/4公用中间格式?(QCIF)序列来说,平均每帧图像的显示和解码时间几乎一样,而编码所花的时间是解码的2倍以上,且图像序列的运动量越大,编解码所花的时间越多?穴表中4个QCIF序列,Claire的运动最小,Carphone的运动最大?雪。故关键要优化编码和显示部分。具体分析可以发现,帧间编码函数所占的CPU时间最多,帧内编码函数其次;而在帧间编码中,运动估计和预测所花的时间最多,离散余弦变换?(DCT)和反离散余弦变换(IDCT)其次,在帧内编码中DCT所花的时间最多。

 

2 H.263编码器的优化

    对H.263编码器的优化可以采用不同级别:框架级优化、局部算法优化、代码级优化。其中,框架级优化主要是对程序总体框架和算法的全局的优化;局部算法优化主要是对耗时较多的一些算法如DCT、运动估计等算法进行优化;代码级优化主要是采用高效的语言来实现一些程序代码如汇编等。

 

2.1 H.263编码器的框架级优化

    在H.263编码器的实现中,最重要的是帧内和帧间编码函数。帧间编码所花的时间最多,而从全局的角度对其优化是很有必要的,可避免大量不必要的运算。

    在帧间编码中,图像序列的运动较小时,预测误差块中会出现“全零块”或如下一种情况:预测误差块经过DCT和量化后,量化系数块全零,为方便论述,我们称这些预测误差块为“准全零块”。对于运动较小的可视电话序列,出现“全零块”或“准全零块”的机率是比较高的,可以利用这一现象在保证图像质量的前提下减少帧间编码所需的时间。

     在帧间编码中,DCT和量化也比较费时。若在DCT和量化之前就知道当前预测误差块是“全零块”或“准全零块”,则不必进行DCT、量化及图像重建中的反量化和IDCT,只需对H.263码流中相关的码字如MCBPC或CBPY进行相关的比特赋值即可。充分利用此方法来减少帧间编码的运算量可提高编码速度。故改进后的帧间编码算法,只需在DCT前加一“全零块”或“准全零块”的判断,若条件不满足,则进行普通的帧间编码,反之则只进行相关的比特赋值和简单的宏块头编码。

    利用100帧Claire序列和现场捕获的100帧带噪声的背景序列Quiet进行比较测试实验,在这里主要比较编码速度。可见,经过框架级优化后,对于运动较小的可视电话序列可大大减少H.263编码器的运算量,将其编码速度提高近3倍。

    加全零块判决前后的效果,PSNR_Y指的是重建图像与原始图像的亮度信号的平均峰值信噪比。

    加了全零块判断后,对于运动较小的Miss、Claire和Salesman序列,其PSNR—Y略有下降,但压缩比提高,其编码速度可提高50%以上,且全零块判决门限越大,压缩比和速度提高越多;对于运动较大的Carphone序列,由于所用的运动估计算法对它不是很适合,相应所得的预测误差较大,故出现全零块的机率较小,因而使用全零块判决后,压缩比和速度提高不多。由此可得出一个一般性的结论:对于运动较小的可视电话序列,采用全零块判决后,可在保证图像质量的前提下显著提高编码速度,略微提高压缩比。

 

2.2 局部算法级优化

    局部算法级优化包括对帧内、帧间编码中所涉及的DCT/IDCT、运动估计算法及一些选项中所涉及的算法进行改进。

2.2.1 DCT/IDCT的改进

    由于快速DCT算法发展到今天已经很成熟,故作者没有将重点放在改进算法本身,而是力图通过利用可视电话序列的特点、DCT/IDCT行列变换的规律及人眼的视觉特性来减少DCT/IDCT的运算量。一维DCT变换具有以下规律:若输入的一维数组的元素全等,则经变换后交流(AC)系数全为零,直流(DC)系数为输入的各元素的累加和。利用此规律,在行?穴或列?雪作反余弦变换时,可首先判断AC系数是否为全零,若是,则不用运算,只需将DC系数除以元素个数再赋给输出的各个元素即可。同样,可在行?穴或列?雪DCT时进行该行中元素是否全等判决。考虑到人眼视觉特性,将两个元素A、B是否相等的条件改为|A-B|<Th(0<Th<10),这样可使出现AC系数为全零的概率多一些,从而减少了运算量。另外从前述可知,在可视电话序列的帧间编码中,是对预测误差进行DCT,而一般预测误差较小,在预测误差块中,同一行或同一列中各元素“全等”或“全零”的机率较大,因而可以利用此规律来减少DCT的运算量。通过QCIF 序列作实验表明采用上述判决处理后可将DCT的速度大大提高。

2.2.2 运动估计的算法改进

     在帧间编码中,为了减少帧间预测误差,需要进行运动估计,而运动估计的计算量较大,如何减少运动估计的运算量很关键。H.263中的运动估计包括整像素和半像素运动估计,在这里,只讨论整像素运动估计算法的改进。改进主要包括利用可视电话序列的规律和改进搜索算法两方面。

(1)利用可视电话序列的规律

    一般的可视电话序列具有如下规律:背景静止不动和运动较小(主要是头肩运动及细微的表情运动)。

     利用上述规律可在运动估计中加一静止块判决,若判为静止后就可省掉运算量的搜索运算。为便于程序的实现,所取的静止块判决条件相当简单,将直接相减所得的帧差宏块的总和同一门限比较,若帧差总和小于该门限则判为静止(也可采用较复杂的判决,如判断最大绝对值误差是否小于某个门限)。

    实验表明,该门限的取值是很重要的,它直接影响到运动估计所花的运算量和图像质量。是加门限前后的效果比较(PⅡ266PC机,采用TSS算法)。表中PSNR_Y的含义同上表。由表4可看出,加了静止块门限判决后可减小运动估计所需的运算时间。若门限取得恰当,则不会影响图像质量和压缩比。这里门限因取1 024而对运动大的图像序列Carphone的效果不是很明显。

     此外,还可根据可视电话运动小的规律,将搜索范围减小,或根据图像序列的运动大小来动态调整搜索范围,以达到既减小运算量又保证估计较准确。

(2)改进搜索算法在研究和实现三步搜索法(TSS)、新三步搜索法(NTSS)、简单高效搜索法(SES)、基于块的梯度搜索法(BBGDS)等快速搜索算法的基础上,发现这些算法都是通过如下方式来减少搜索所需的计算量的:

     利用可视电话运动基本上是中心分布的规律(NTSS、BBGDS);

     在搜索过程中采用半途停止技术来减少搜索步骤(NTSS、BBGDS);

    去除不必要的搜索点(SES)。

    综合利用这些方法,将SES和BBGDS结合起来,即将SES的方法用于BBGDS的第一步,将第一步分为两步来实现,这样可去除9个搜索点中不必要的点,至于BBGDS第一步以后的搜索步骤因已经去除了不必要的搜索点,故仍按原步骤进行,我们称这种搜索算法为SES_BBGDS。采用这种算法可将搜索点数减少3~5个。

    实验表明,这种方法可在BBGDS的基础上进一步减少运算量。

为了比较各搜索算法的估计准确度,给出几种搜索算法的性能比较。可看出,对于Claire序列,FS的性能最好,NTSS其次,TSS较好,BBGDS和SES_BBGDS比起其它搜索算法的性能要差些;如果将上述5种搜索算法用于Salesman序列,其性能相差不大。

 

2.3 代码级优化

代码级优化包括:

(1)利用编程的技巧,如将一些短循环语句解开、定义恰当的函数参数以减少参数传递所花的时间、避免重复的指针地址运算等技巧以减少运算量和程序运行所花的时间。

(2)将部分程序代码采用MMX汇编指令来实现,从而提高程序运行的速度。

 

3 总结

    本文提出了H.263实时编码器的几个级别的优化方法,并对其结果与未优化前进行了比较和分析。文中提出的方法主要是利用可视电话图像序列的特点进行的。在优化过程中还可以利用其它的特点和方式,使得编码器能达到更好的效果。

[摘要] 编码器的优化是实时高效实现信源编码的关键。文章针对H.263建议的实现提出H.263编码器的几种优化方法,并对结果进行了分析。

[关键词] H.263 编码器 优化

[Abstract] ABSTRACT:
The optimization of coder is the key to realize signal encod-ing effectively and in real time.Several ways for optimiz-ing the coder H.263,to realize recommendation H.263,are proposed,and their results are also analyzed.

[Keywords] H.263 Coder Opti-mization