H.263视频编码的码率控制算法及硬件实现

出处:h218 发布于:2007-12-24 10:40:57

  摘 要:提出了一种H.263低码率视频压缩编码的自适应码率控制方法,这种方法可以用FPGA来实现,为了达到实时性的要求,对硬件实现的具体方法进行了优化。所提出的码率控制优化方法已在H.263标准的硬件系统中实现。

  关键词:FPGA;H.263标准;码率控制;视频压缩;帧层

1 引言

  输出比特速率的控制是影响H.263低速率视频编码的一个重要问题,控制的好坏直接关系到解码图像的质量与编码器输出比特速率的稳定性。ITU-TH.263[1]建议本身对这部分算法是开放的。到目前为止,已提出了若干种比特速率的控制算法[2~4]。这些算法可以分为两类,一类为前馈比特速率控制,另一类为反馈比特速率控制。前馈控制算法通过对各编码单位编码输出比特数的预测,或用试验迭代的方法,来确定相应的量化步长,其主要弱点是常常需要很大的计算量,使得其应用受到明显的限制,因而很少被采用。相对来说,反馈控制算法的计算量是可以接受的,并已被广泛应用。ITU-T相继推出的TMN5模型和TMN8[2]模型就是一种反馈比特速率算法。TMN8是在TMN5的基础上提出的,具有优异的控制效果,很多试验表明,以TMN8实现的系统可以稳定地锁定在既定码率上,码率的上下波动小于10%,并且TMN8模型的算法实现起来也不复杂。

  本文针对H.263视频编码器的结构,根据ITU-T视频编码模型TMN-8中标准的码率控制算法,提出了一种采用FPGA实现码率控制的硬件方法,码率控制分别在宏块层和图像层进行。首先阐述了H.263的码率控制算法,然后介绍了硬件实现及优化方法,给出了仿真的结果。

2 码率控制算法

  H.263系统的码率控制分2个层次实现,一是改变量化步长,二是跳帧。码率控制的过程可以用图1来形象地说明。当控制器检测到发送缓冲器中存放的码流高于或者低于一定的门,控制器根据相应的算法改变量化步长,使发送缓冲器中的码流稳定在一定的数量。当编码器产生码流的码率很大,超出了量化器的控制范围,将采用跳帧的方法来解决。

  改变量化步长,是微观的宏块级控制,控制量是量化步长因子Q。H.263标准规定:Q分为32级,其值分别为0~31。Q越小,量化越精细,图像质量就越高,而产生的码流也越长。一个宏块内具有相同的Q,所以对于Q来说的变化单位是宏块。当一个宏块编码结束时,如果截至到目前编码器所产生的码流小于一个门限,那么码率控制模块就根据一定的算法减少Q;而对于量化器来说,Q变小则量化后的系数中非零系数增多,编码器输出的码流就增加。如果截至到目前编码器所产生的码流大于一个门限,那么码率控制模块就增加Q,Q变大则量化后的系数中非零系数减少,编码器输出的码流就减少。按照这种方法,在一定程度上使发送给发送缓冲器的码流维持恒定,也就达到了控制码率的目的。改变量化步长实现起来比较复杂。根据统计的码流比特数,通过复杂的计算,在每个宏块结束时,计算下一个宏块的量化步长因子Q(qp)。用ptype表示帧类型,帧类型为帧内帧时用I帧表示,否则用P帧表示。

 
  其中,Mean_qp为上一帧每个宏块平均的量化步长;Bits_prev_pic为上一帧产生的比特数;Target_bpf为上一帧结束时计算出来的本帧应该产生的比特数;Target_bpf_prev为上一个Target_bpf;Bits_prev_macro为本帧截至当前宏块所产生的比特数;Mbnum为已编码宏块在本帧所有宏块中所占的比例,用小数表示;Target_bps是设定的发送码率。

  对于跳帧算法,是实现宏观的帧级控制,控制量是TR。TR以跳帧或不跳帧来达到减少或增加码流的目的。一帧编码结束时,根据当前发送缓冲器内的比特数与跳帧的门限进行比较,判断是否需要跳帧。如果发送缓冲器内的比特数大于跳帧的门,说明发送缓冲器已经不能接受更多的码流了,所以接下来的帧不用编码,发送缓冲器用空出的时间来发送码流,减少库存,这样就发生了跳帧;反之,则不需要跳帧。值得注意的是在整个过程中,从发送缓冲器发出的码流一直是按照一定的速率发出的,也就是说码率是恒定的,改变的是发送缓冲器的库存。

  跳帧的控制量是H.263标准码流中帧头的TR。TR是一个8位的指示位,表明了本帧的序号,范围是0~255,当超过255时,从0重新开始。在一般没有跳帧的情况下,TR是连续地从0~255变化。但当发生跳帧时,TR将发生不连续地跳变。如:当前帧的TR是112,在当前帧结束时计算得出下一帧要跳帧,那么等待跳帧结束后的下一帧的TR是115。这样译码器可以知道ΔTR是3(ΔTR代表译码器对当前帧的显示次数),那么译码器就将本帧图像显示3次,即跳了2帧。

  跳帧是在每一帧编码结束时发生的。这时,统计完这一帧共产生的比特数(用bits_prev_pic表示)、上一帧结束时发送缓冲器的比特数(用bits_in_buffer表示)。跳帧门限用threshold表示,threshold等于设定的发送码率(target_bps)除以设定的帧频(target_fps)的商,threshold必须是个整数。
 
  可见H.263系统的码率控制是通过跳帧与改变量化步长一起工作来实现的,跳帧解决大方向的控制与调整,改变量化步长进行精细的调整,二者就像粗调与微调。

3 码率控制的硬件实现

  码率控制模块是一个复杂的系统工程,所涉及的方面很广,终的结果要控制量化器和运动估计/补偿模块,并且整个编码器要根据跳帧指示信号来工作,当跳帧指示有效时,编码器不工作,空出时间让发送缓冲器减少库存压力。

  其中,编码器和发送缓冲器不属于码率控制模块。从功能上说,码率控制模块是由初始化模块、统计模块、延迟模块、求TR模块、跳帧指示模块、求QP的平均值模块、帧22级QP因子、宏块级QP因子、求QP模块、TR和QP的修正模块等组成。

  在初始化模块中,需设定码率控制的参数,如目标比特率、目标帧率、延时发送时间等整个系统要用到的参数。还产生一些触发信号,如帧结束、宏块结束信号等。在统计模块中,需设定统计编码器送给发送缓冲器的码流比特数,包括帧级的码流比特数统计和宏块级的码流比特数统计。在延迟模块中,需根据初始化模块设定的延时发送时间参数来产生延时发送信号给发送缓冲器,使其容纳的码流维持在一定数量上。求TR模块根据帧级的码流比特统计数,求得TR的值。TR和QP的修正模块将求得的TR和QP的值截短,以防越界,经过这样处理的TR和QP值才是终送给编码器的值。跳帧指示模块根据修正后TR值来产生跳帧指示信号。求QP模块根据帧级QP因子、宏块级QP因子和上帧QP的平均值,求得当前宏块的QP。

3.1 对硬件实现方法的优化

  由码率控制算法可见,需要的计算过程很多。由于计算模块要消耗很多的FPGA系统资源,并且会带来几十个时钟的时延,造成设计上控制复杂,甚至无法实现给定的算法。例如,一个典型应用的除法器(Pipelined Divider),被除数16位,除数16位,商用无符号表示,余数用无符号整数表示,共消耗449个基本单元(SLICE),占用了总共SLICE资源的6%,时延18个时钟。而在码率控制模块中要用到的一个除法器,被除数21位,除数21位,商用有符号表示,余数用有符号小数表示,共要消耗1463个SLICE,占用了总共SLICE资源高达21%,时延更是有44个时钟。为了节省资源的消耗,易于实现,应该尽量减少运算单元的使用。

  本文采用的方法是将乘法、除法计算用ROM查表来代替。以Mbnum值的获取为例。如果这个模块要用除法器来实现的话,被除数9位,除数9位,都是无符号表示,余数用二进制16位小数表示,每个除法1个时钟,共要消耗319个SLICE,占总共SLICE的4%,并且还造成了18个时钟的时延。而用ROM查表来实现的话,同样的功能,所消耗的SLICE只有19个,所造成的时延只有1个时钟。当然这种方法也有缺点,由于用了FPGA库所产生的BLOCKROM,所以会额外消耗2%的BLOCKROM资源。不过,对于BLOCKROM资源比较丰富的FPGA来说,影响不会很大,并用相对较小的资源消耗较简便地达到了硬件实现码率控制的目的。

4 码率控制模块的效果

  在计算机模拟中预先设定编码 器输出目标码率(TargetBitRate)为384 kb/s,输入图像的格式为QCIF,亮色之比是4∶1∶1,除了第1帧的帧类型为帧内(INTRA),其他帧的帧类型都为帧间(INTER)。当输入图像序列为Table Tennis和Football时,从图3和图4可以看出,5帧之后,不论输入序列是否平稳,运动是否剧烈,输出的码流速率被控制在目标值附近,满足了信道要求。

  这是因为第1帧的帧类型为帧内(INTRA),所有的宏块都按照帧内编码,码流数自然很大。还有个别帧产生的码流数是0,这是因为他的前一帧发生的跳帧,所以本帧不编码,产生的码流数是0。

  通过对大量图像序列的仿真测试,采用本文提出的算法得到的解码输出图像峰值信噪比(PSNR)为35 dB,压缩后的码率可以在64~384 kb/s范围内输出,帧速率可为20 fps,25 fps,30 fps等,证明该算法能有效地控制输出码率。

5 结语

  本文介绍了H.263编码输出数据流速率的控制方法,按分帧层和宏块层2个层次分析并给出了其主要算法,所提出的硬件实现优化方法大大节省了硬件资源的消耗,降低了硬件设计的复杂度。仿真结果和硬件测试结果表明,该算法可保证H.263的标准编码器的正常工作,控制效果良好。

 



  

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!