一种改进的H.264/AVC帧层码率控制算法
2013-01-31刘海英
陈 晓,刘海英
(南京信息工程大学 电子与信息工程学院,江苏 南京210044)
随着国际互联网和移动通信技术的发展,3G网络逐渐普及,基于多媒体的各种海量视频数据如何在网络带宽和存储空间有限的情况下进行传输,使得视频压缩编码技术显得尤为重要,而码率控制是视频编码中最为重要的部分之一,码率控制的好坏直接影响图像的编码质量。码率控制就是调整视频编码输出的码率,使之与预设的码率即传输带宽相匹配,同时获得最小的解码失真。在不影响视觉的情况下,输出码率越接近预设码率越好。
视频压缩编码H.264是图像通信领域的一个热点。目前,针对H.264/AVC的JVT-G012码率控制算法中的不足已经有相当多的研究。文献[1]利用MADratio来表征图像复杂度进行帧层目标比特分配;文献[2]提出了一种基于PSNR的帧复杂度估计码率控制算法;文献[3]提出一种基于拉格朗日的量化参数调整的码率控制算法;文献[4]提出一种基于感兴趣区域的目标比特分配方法;文献[5]提出了一种利用帧复杂度系数来调节帧层目标比特分配;文献[6]利用一种新的率失真模型来进行码率控制;文献[7]引入了一种内容复杂度因子来分配目标比特;文献[8]综合了MAD(mean absolute difference)和MV(motion vector)提出一种新的参数MADMV,来反映图像复杂度;文献[9]提出一种ρ域线性率失真模型码率控制算法;文献[10]采用MAD加权的模型,并结合位置权对基本单元层的目标比特进行分配;文献[11]是提出了一种基于纹理的帧内预测算法;文献[12]提出了一种适合硬件实现的宏块级码率控制算法。
上述方法都给编码器带来很多额外的开销,本文提出一种利用帧差法来表征图像复杂度的方法,并利用缓冲区充盈度来调整量化参数的方法,简单有效,并且该算法基本没有给编码器带来额外的开销,在实时通信中更能显示出其优势。
1 JVT-G012帧层码率控制算法
计算P帧的目标比特数,见公式(1)
式中:β是一个常数,当无B帧时,β的值为0.5,否则为0.9;f'(ni,j)为考虑缓冲区反馈得到的比特数ni,j)是由当前GOP中剩余的比特数,图像相对复杂度Wb,Wp和P,B帧的数目Np,Nb共同决定的,Tr表示剩余比特数,公式为
当编码中无B帧时,公式(2)变为
由公式(3)可以得出,剩余比特平均分配给了每一帧,并没有考虑图像的复杂度。但事实上,每一帧的图像复杂度是不同的,平均分配会导致图像内容变化不大,理论上需要较少比特的时候,反而分配了相对多的比特,致使比特浪费;当图像内容变化大理论上需要较多的比特的时,反而分配了较少的比特,致使编码效果不好,导致图像失真,影响视频图像的质量。
2 改进的帧层码率控制算法
2.1 考虑图像复杂度的目标比特分配
根据上述对JVT-G012在帧层对P帧目标比特平均分配的问题,本文充分考虑了图像复杂度,利用一种简单有效的帧差法来衡量图像的复杂度,图像复杂度因子α计算公式为
其中
式中:β1,β2是可以经过实验来确定的两个常系数;YC(x,y)和YP(x,y)分别表示当前帧和前一帧的重构帧在位置(x,y)上的亮度值;Frm_diff(i)表示第i帧的帧差值。因此用图像复杂度因子α来整理公式(3),得
2.2 调整量化参数
本文采用一种新的量化参数因子adjust_qp进行量化参数的调整,它是当前缓冲区的充盈度和目标缓冲大小的比值,见公式(7)
式中:QP是JVT-G012算法中利用二次模型得出的量化参数。
3 实验仿真结果
为了验证本文算法的有效性,所有的实验都是在JVT的校验模型JM10.1上进行的,并和JVT-G012算法进行了对比,表1、表2是测试序列的峰值信噪比的比较。实验在目标码率为48 kbit/s和64 kbit/s,对QCIF 4∶2∶0格式的测试序列highway,carphone,foreman,mother,silent,akiyo进行测试。图1和图2分别是测试序列akiyo和foreman在JVT-G012算法和本文算法下得出的峰值信噪比PSNR和缓冲区充盈度CurrentBufferFullness的曲线比较;图3和图4是测试序列foreman和mother的主观质量比较图。实验中所有序列按IPPP结构编码,GOP长度为20,帧率为30 f/s(帧/秒),共编码200帧。
表1 JVT-G012和本文算法的PSNR比较
表2 JVT-G012和本文算法的码率比较
图1 akiyo的PSNR比较图
为了更好地说明两种算法控制码率的精确能力,定义码率偏差E_bit_rate为
式中:ractual是实际产生的码率;rtarget是设定的目标码率。E_bit_rate越小,说明码率控制得越精确,越接近目标码率;反之,同理。
从表1和表2的实验结果可以清楚地看出,本文算法不仅能够使实际产生的码率更接近目标码率,而且PSNR也有所提高。尤其是在目标码率为64 kbit/s的情况下,测试序列carphone的码率偏差减小了2.37%。在目标码率为64 kbit/s时,测试序列akiyo的PSNR提高了0.23 dB,码率误差减小了0.67%。
由图1可以看出本文算法得到的PSNR波动较小,不会造成视频质量的突然下降,这都是由于在帧层考虑了图像复杂度的结果。由图2可以看出,本文提出的算法使缓冲区充盈度更稳定,不会出现较大的波动,能够有效地避免缓冲区的上溢,不会出现跳帧现象,而引起图像太大的失真。图3和图4中,左边为JVT-G012的到的主观质量图,右边为本文算法得到的主观质量图,从图中可以看出,本文算法得到的视频质量更好,这是由于本文根据图像复杂度的不同而相应地对每一帧分配不同的比特,而JVTG012是平均分配比特。
4 结束语
通过分析JVT-G012算法在帧层目标比特分配的不足,本文考虑了图像复杂度,利用图像复杂度因子对帧层进行合理的目标比特分配,并利用缓冲区充盈度来调整量化参数。经过实验证明,本文算法优于JVT-G012算法,不仅能够精确地控制码率,而且PSNR也有所提高。在一定带宽的情况下,本文算法能够呈现更好的视频质量。本算法相比其他算法简单,易于硬件实现,有良好的应用前景。
[1]JIANG M Q,YI X Q,LING N.Improved frame-layer rate control for H.264 using MAD ratio[C]//Proc.ISCAS 2004.[S.l.]:IEEE Press,2004:813-816.
[2]JIANG M Q,LING N.On enhancing H.264/AVC video rate control by PSNR-based frame complexity estimation[J].IEEE Trans.Consumer Electronics,2005,51(1):281-286.
[3]JIANG M Q,LING N.On lagrange multiplier and quantize adjustment for H.264 frame-layer video rate control[J].IEEE Trans.Circuits and Systems for Video Technology,2006,16(5):663-669.
[4]LIU Y,LI Z G,YENG C S.Region-of-interest based resource allocation for conversational video communication of H.264/AVC[J].IEEE Trans.Circuits and Systems for Video Technology,2008,18(1):134-139.
[5]CHEN Xiao,LU Feifei.A reformative frame layer rate control algorithm for H.264[J].IEEE Trans.Consumer Electronics,2010,56(4):2806-2811.
[6]CHEN F C,HSU Y P.Rate-distortion optimization of H.264/AVC rate control with novel distortion prediction equation[J].IEEE Trans.Consumer Electronic,2011,57(3):1264-1270.
[7]韩峥,唐昆,崔慧娟.基于H.264的码率控制算法[J].清华大学学报:自然科学版,2008,48(1):59-61.
[8]刘吉邦,朱浩,刘伟.一种改进比特分配的H.264/AVC码率控制算法[J].通信技术,2009,42(5):80-82.
[9]陈庆德,胡栋.基于ρ域线性率失真模型的H.264帧级码率控制算法[J].信号处理,2009,25(2):251-255.
[10]吕振斌,王惠南.一种H.264基本单元层的码率控制算法[J].电视技术,2009,33(1):45-47.
[11]杨会云,张有会,王志巍,等.一种基于块纹理特性的H.264/AVC帧内预测算法[J].电视技术,2010,34(7):28-31.
[12]王佳,殷海兵,周冰倩.一种适合硬件实现的H.264/AVC宏块级码率控制算法[J].电视技术,2012,36(1):19-22.