自适应改变GOP长度的码率控制算法的研究分析

描述

  作者:余成伟,陆建华,郑君里

在H.264/AVC编码器中,由于采用了固定长度的图像组(GOP)结构,不能有效地处理视频序列中的场景切换,导致场景切换帧后续各帧编码质量严重下降。为了有效解决该问题。提出一种自适应的码率控制算法,通过场景切换的快速检测方法检测视频序列中的场景切换,在场景切换帧处终止当前COP并对GOP层的码率分配算法做出修正。仿真结果表明:采用该算法可以有效地降低场景切换对后续帖编码质量的影响,而且合理地分配码率资源,提高了整个视频序列的编码质量。在相同码率条件下,整体编码质量可以提高0.3~O.5 dB。

码率控制技术在带宽受限的多媒体通信系统中具有重要的作用。传统的视频通信码率控制算法,如H.264/AVC编码器中采用的码率控制算法,在将码率资源分配到图像组(GOP)中各帧图像时,仅仅考虑了各帧图像自身的复杂度,而忽视了同GOP中各帧图像之间的相关性,如对含有频繁场景切换的视频序列进行编码时,GOP中某帧图像可能因出现场景切换而与其参考帧之间毫无相关性,如果仍然采用传统的码率控制方法,将导致图像编码资源浪费和编码质量的下降。

本文提出一种自适应改变GOP长度的码率控制算法,可以有效地节省码率资源,并且能够有效地提高场景切换帧后续各帧的编码质量和序列整体的编码质量。

1 码率控制技术与视频场景切换

由于视频序列中I、P及B帧编码后产生的比特数不一样,为了使输出码流速率与信道速率相匹配,提高信道利用率,一般在编码器和信道之间加一个缓冲区,而缓冲区容量大小与通信时延的要求构成了一对新的矛盾,码率控制的目的就是为了解决这一矛盾。对于编码器来说,一个鲁棒的码率控制算法应该在充分利用带宽资源和保证缓冲区不溢出的前提下,将有限的码率资源进行合理分配,获得尽可能好的编码质量。

当视频序列中出现场景切换时,其编码质量将受到影响,影响程度取决于场景切换帧在其所处GOP中的位置。当场景切换发生在I帧时,由于I帧采用帧内编码模式,场景切换对于I帧本身不会产生任何影响,同时也不会对后续帧的预测编码产生影响;由于B帧为双向预测,只要其前后2个参考帧有1帧与其处于同一场景中(假设序列中没有连续2帧同时发生场景切换),其预测编码的精度仍然能够得到保证,编码质量不会受到很大影响。不同于I帧和B帧,当场景切换发生在P帧,对当前GOP编码质量的影响相当大:首先,由于当前P帧与其参考帧处于不同的场景中,帧间预测编码将完全失效,宏块必须通过RDO(rate-distortion optimiza-tion)模式选择后才采取帧内编码,优化过程极大浪费了编码时间;其次,由于绝大多数宏块采用帧内编码模式,占用了大量的码率资源,使得后续各帧由于码率资源缺乏而编码质量下降,此影响还会延续至后续的GOP。

图1给出了一个有5处场景切换的测试序列(详见2.3节)在80 kb/s码率条件下各帧编码比特曲线和Y分量PSNR(峰值信噪比)曲线。同时,表1也给出了场景切换帧前10帧和后10帧Y分量平均PSNR值数据及其变化值。由图中(虚线表示场景切换帧位置)可以看出,在场景切换时,当前帧将占用较多编码比特资源,从而导致后续帧由于码率资源缺乏而PSNR值下降,详细数据可见表1。

编码器

现实中的视频序列,不可避免存在场景切换。如果编码器不考虑场景切换的影响,就会浪费有限的码率资源,从而导致编码质量下降。目前,针对场景切换提出了很多码率控制算法,其中常用的方法是通过改变GOP的结构和长度来重新分配码率资源。如在文的算法中,当检测到场景切换时,当前GOP剩余帧和下一个GOP的所有帧合并为一个GOP,因此,GOP长度要比默认长度N大,最糟的情况下为2N-1。由于GOP过长容易导致缓冲区的溢出,并且导致GOP中后面部分帧的编码性能下降。在文提出的算法中,采取将过长的GOP拆分成2个新的GOP来解决这个问题,但这样做的后果是导致增加一个I帧,造成码率资源的浪费。本文算法与文相比,不额外增加I帧的数量,可以有效地节省码率资源,同时有效地提高场景切换帧后续各帧的编码质量和序列整体的编码质量。

2 针对场景切换的自适应码率控制算法

2.1 自适应码率控制算法

在该算法中,当前GOP的长度将随着场景切换帧的出现自适应地改变,并且同时对码率资源进行重新分配。假设默认的GOP长度为N,分配给每个GOP的码率资源为

其中:B表示带宽;F表示帧速率;Rprev表示前一个GOP编码剩余比特或超支比特。对于第1个GOP来说,Rprev=0。每编码一帧图像,R更新如下:

其中Sipb为刚编码帧(可能为I帧、P帧或B帧)所用的比特数。当GOP所有帧编码完毕后,Rprev=R。

假设当前GOP在编码M(M<N)帧后,第M+1帧检测出场景切换,在H.264编码算法中,此帧内绝大多数宏块经过RDO优化之后均采用帧内预测模式编码,当前GOP也在编完所有N帧之后结束。采用本文的算法,当检测到第M+1帧有场景切换时,当前GOP即提前终止,并提前进入下一个GOP的编码。由上述分析可知,发生场景切换时当前GOP的实际长度为M帧,因此,其预分配的码率按

照式(1)计算并不合适,应由下式决定:

由于GOP提前终止,其未编码的N-M帧应分配的编码比特数为

这部分比特应该从当前GOP按照式(1)计算的预分配码率中减去,则当前GOP提前终止时,Rprev应该修正如下:

当前GOP提前终止后对Rprev做出修正,根据式(1)则可计算出下一个GOP的预分配码率,并开始下一个GOP的编码。

本算法的前提是必须能检测出场景切换,因此,快速有效地检测检测出场景切换是十分必要的。

2.2 视频场景切换快速检测算法

视频场景切换包含如下几种类型:突变场景切换、消融和淡入淡出等。目前,已有的场景切换检测算法分为3类:基于灰度值检测、基于运动搜索检测和基于边缘轮廓检测。虽然后2种检测算法具有比较好的性能,但是算法的高复杂度极大地限制了它们的应用,尤其是在对于实时性要求比较高的视频通信码率控制算法中。

通过对视频序列的统计分析发现,当有场景切换时,当前帧与其参考帧在灰度和色彩信息上有很大的区别,而没有场景切换的时候,整个序列的灰度和色彩基本处于平稳或者缓变的状态。选择mobile和grandma 2个YUV视频序列(无场景切换),其各分量(Y为亮度分量,U、V为色度分量)的均值变化缓慢,如图2所示。同时,对于有频繁场景切换的视频序列(以CNN新闻摘要片断和一个构造序列为例),可知在场景切换处,3个分量的均值全部或部分出现突变,如图3所示。

编码器

图中mean(x)为枧频序列X分量的均值,X代表视频序列的Y、U、V 3个分量。

通过以上分析可知,当图像序列的各分量的均值发生突变时,一般来说是有场景切换发生。据此,采用当前帧和参考帧3个分量均值的绝对差值作为判断当前帧图像是否有场景切换的差异函数为

编码器

其中:mean()为均值函数;Scur和Sref分别表示当前帧图像和其参考帧图像;X代表其3个分量。

根据差异函数,判断是否有场景切换可以依据式(7)和(8):

编码器

当式(7)和式(8)同时满足时,可以判定当前帧有场景切换发生。式中:mean(Y)、mean(U)和mean(V)分别为当前GOP内当前帧之前所有帧各分量均值的平均值;tTHl和tTH2为判决门限系数,分别描述当前帧和参考帧之间亮度和色度均值的相对差异和绝对差异。

显然,上述算法只需要计算各帧图像3个分量的均值,算法复杂度非常低,很适合于码率控

制等实时性要求高的应用中。通过对超过2105帧的视频序列进行仿真,超过90%的场景切换能够被检测出来,并且误检率几乎为0。

2.3 仿真结果

为了验证提出的码率控制算法,本文采用图3中两个序列进行验证。一个是CNN新闻摘要中一段序列(QCIF,277帧共9处场景切换),另一个为将23帧grandma、38帧foreman、27帧news、41帧sales、33帧silent和29帧table合成为一个测试序列(QCIF,191帧共有5处场景切换)。采用本文提出的快速场景切换检测算法,2个序列共14处场景切换可以全部被检测出,其中2个参数tTH1和tTH2分别设为0.1和10。采用JM8.6平台,测试序列编码采取IPPP结构,默认GOP长度为10。

通过对本文提出的算法和JM8.6算法进行仿真比较可知,采用本文的算法,可以有效降低场景切换对后续帧编码质量的影响,且更合理地分配码率资源,使编码后的视频图像质量更平稳,同时也可以从整体上提升了视频序列的编码质量。表1列出了

采用本文算法与JM8.6算法时,测试序列各场景切换点前后10帧Y分量PSNR均值变化情况,从中可以看出采用本文算法可以有效提高场景切换点后续帧的编码质量;图4给出了2种算法下测试序列3个分量PSNR值变化曲线,从图中可以看出,采用本文的算法,重建视频质量更加平稳,同时也提高了整个序列的平均编码质量,仿真结果表明当给定码率为80 kb/s,量化参数Qp初始值为32时,序列3个分量的PSNR值平均可以提高0.36 dB、0.42dB、0.37 dB。对CNN视频序列进行仿真,也可以得到与表1和图4相似的结果,在码率为80 kb/s,初始Qp值为32时序列编码质量可以提高0.3 dB。实验结果表明,本文的算法可以有效地将码率控制在给定码率,误差在3%以内。

编码器

在编码时间上,本文的算法避免了由于场景切换导致的无效的运动搜索,节省了场景切换帧的编码时间,而算法本身引入的额外运算量可以忽略不计,因而节省了整个序列的编码时间。仿真结果也表明,对于含有5个场景切换的P帧的测试序列(191

帧),编码时间节省了2%~3%。很显然,随着序列中场景切换的P帧数量占序列总帧数的比例增大,节省的编码时间的比例也会增大。

3 结 论

本文分析了场景切换对于视频序列编码带来的影响,并提出了一种基于快速场景切换检测的自适应码率控制算法,有效地降低了场景切换对后续帧编码质量的影响。结合H.264/AVC编码器的实验研究表明,采用本文的算法,可以更合理地分配码率资源,使编码后的视频图像质量更平稳,也可以从整体上提升视频序列的编码质量。同时,本文的算法也降低了场景切换帧的编码时间,且自身算法复杂度低,可以有效节省频繁场景切换的视频序列的编码时间。该算法可有效地应用于如新闻摘要和电视短广告等有频繁场景切换的视频序列编码,有效地提高其编码质量和降低编码时间。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分