关 闭

新闻中心

EEPW首页 > 安全与国防 > 设计应用 > 基于场景切换的H.264码率控制技术

基于场景切换的H.264码率控制技术

作者:时间:2008-03-18来源:网络收藏

  摘 要:在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帧,当场景切换发生在,对当前GOP编码质量的影响相当大:首先,由于当前与其参考帧处于不同的场景中,编码将完全失效,宏块必须通过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帧、或B帧)所用的比特数。当GOP所有帧编码完毕后,Rprev=R。

  假设当前GOP在编码M(MN)帧后,第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个分量的均值,非常低,很适合于码率控


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭