新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > H.264/AVC码率控制中量化参数设置的改进

H.264/AVC码率控制中量化参数设置的改进

作者:时间:2011-01-19来源:网络收藏

快速增长的视频通信需求刺激着视频压缩技术的发展。与已有的其他视频压缩标准相比,最新的标准因采用多参考帧、运动补偿等新的编码技术,在编码效率上提供了重要的改进。目前,(RC)作为视频编码的重要组成部分也变得越来越完善,并且得到了学者们的高度关注。

为了在码率和失真之间实现最好的折中性能,在H.264标准中提出了率失真优化(RDO)。然而,RDO使得H.264更加复杂并且导致了蛋鸡悖论[1],这就对H.264的算法提出了新的挑战,也是一个非常热门的研究课题。

为了解决蛋鸡悖论的问题,一些码率控制算法已经开发出来[1-3]。LI等人提出了一次编码码率控制算法JVT-G012。鉴于其效率,它已在的参考软件中被采用。然而在此方案中仍然存在着一些不足之处:(1)不精确的初始QP估计:在JVT-G012中,初始QP的估计仅仅取决于每像素的比特数(bpp),然而,这种初始化方案没有考虑帧的复杂度,不够精确;(2)缓存控制能力不足:可以看到,缓存器有时会失控导致跳帧,尤其是在低比特率的情况下;(3)不精确的帧层比特控制:有时,一帧的目标比特和它实际产生的编码比特偏差相当大。

所有这些不足都可能引起跳帧、平均PSNR值下降及不良的PSNR波动,特别是对于复杂的视频序列和低目标比特率的情况。本文主要针对第一个不足进行改进。

1 对初始QP设置的改进

1.1 H.264中初始QP设置

在JVT-G012中,码率控制开始时,第一个GOP的第一个I帧的初始QP值是根据经验预先设定的,在没预先设定时采用如下方法计算:

由bpp的表达式不难看出,对于不同的视频序列,在已设定的目标比特率、帧率及同一图像格式的情况下,计算出来的bpp的值是一样的,再通过式(1)计算就得到相同的初始QP值。即不同视频序列的第一个I帧均采用相同的初始QP值编码。但不同视频序列的复杂度是不同的,其需求的目标比特数也不相同,若采用统一的初始QP值编码,势必会导致码率控制不精确。

1.2 本文的改进算法

  目前已有很多针对QP初始化设置的算法研究[4-7],但为了减少算法及编码的复杂度,本文采用基于bpp和I帧复杂度的算法来设置QP的初始值。参考文献[6]提到采用梯度来衡量图像复杂度的方法性能较好,因此本文采用基于梯度的方法来衡量I帧复杂度。梯度G的定义如下:

其中,W和H分别是一帧图像的宽度和高度,Pi,j表示(i,j)处的像素值。

为了更好地看出每个视频序列的第一个I帧复杂度与最佳初始QP的关系,选择foreman、football、news、mobile等视频序列进行试验。使用的参考软件JM8.6,测试序列为标准QCIF格式,目标码率为64 kb/s,帧率为15 S/s,编码50 S,采用IPPP编码模式。实验结果如图1所示。

图中QP=25的直线是在上述给定的实验条件下通过式(1)计算出来的初始QP值,再次说明了JVT-G012中不同视频采用相同初始QP值。从图中不难看出,在一定的条件下,复杂度低的图像初始QP值应较小,而复杂度高的图像初始QP值应较大。同时也发现G与最佳初始QP的关系比较难拟合。因此根据参考文献[7]定义F(G)函数如下:

对QCIF 和CIF 格式的图像编码时,e1、e2、e3的取值分别为{0.68,-7.21,12.29}和{-0.76,18.87,-91.42}。

本文算法是在式(1)计算出的qp的基础上结合G对初始QP的影响,来确定最终的初始QP值,经大量数据统计,最终的算法如下:

3 实验结果

为了验证本文改进算法的有效性,本文使用了H.264/AVC的参考软件JM8.6并与其码率控制算法进行比较。实验条件:测试序列为标准QCIF格式,目标码率为64 kb/s,帧率为15帧/s,GOP长度为25,编码100帧, 采用IPPP编码格式。结果如表1所示。

本文对JVT-G012算法中初始QP的设置进行改进,尽管表达式(4)不够精确,计算出的初始QP值可能不是最佳值,但相对于式(1)仅利用bpp计算得出的初始QP却比较合理。从表1可以看出本文算法可以选择较优的初始QP值,使编码效果在PSNR值及码率控制准确度两方面均优于原算法,尤其对于运动较剧烈的football、mobile序列效果明显。而且从图2和图3中可以看到,本文算法得到的PSNR曲线的波动范围更小。此外,与目前很多相关算法相比,本文算法简单,相对于JVT-G012算法,引入的编码复杂度也较小。



评论


相关推荐

技术专区

关闭