首页> 中国专利> 码率控制中的虚拟缓冲区自适应控制方法

码率控制中的虚拟缓冲区自适应控制方法

摘要

本发明涉及码率控制中的虚拟缓冲区自适应控制方法。在包括复杂度分析器模块、码率量化模型R-Q、QP限制器模块、量化编码器模块、GOP层码率控制器模块、帧级码率控制模块、基本编码单元层码率控制模块和虚拟缓冲区的码率控制系统中设置一缓冲区自适应控制模块,该缓冲区自适应控制模块根据过去一段时间内帧一级编码复杂度统计分析的复杂度信息、时间辅助信息和虚拟缓冲区当前满度及当前目标平衡点向虚拟缓冲区反馈该缓冲区当前目标平衡点c、向帧级码率控制单元传送缓冲区调整因子k。本发明通过由缓冲区自适应控制模块监控的虚拟缓冲区满度和上述复杂度分析结果来设定控制虚拟缓冲区的参数,以达到最大限度的利用好虚拟缓冲区,解决跳帧和图像质量稳定问题。

著录项

  • 公开/公告号CN101568025A

    专利类型发明专利

  • 公开/公告日2009-10-28

    原文格式PDF

  • 申请/专利权人 常州中流电子科技有限公司;

    申请/专利号CN200910027869.4

  • 发明设计人 李杰;赵乘骥;赵乘麟;

    申请日2009-05-18

  • 分类号H04N7/24(20060101);

  • 代理机构32215 南京君陶专利商标代理有限公司;

  • 代理人吴静安

  • 地址 213003 江苏省常州市天宁区和平北路65号丰润大厦510室

  • 入库时间 2023-12-17 22:57:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-03

    未缴年费专利权终止 IPC(主分类):H04N7/24 授权公告日:20111026 终止日期:20180518 申请日:20090518

    专利权的终止

  • 2016-12-28

    专利权的转移 IPC(主分类):H04N7/24 登记生效日:20161209 变更前: 变更后: 申请日:20090518

    专利申请权、专利权的转移

  • 2011-10-26

    授权

    授权

  • 2009-12-23

    实质审查的生效

    实质审查的生效

  • 2009-10-28

    公开

    公开

说明书

技术领域

本发明涉及码率控制方法,尤其涉及码率控制中的虚拟缓冲区自适应控制方法。

背景技术

码率控制过程就是通过控制视频编码器的一些编码参数以达到使编码器产生的码率符合预定的码率的过程。在实际应用中,常用的有三种形式的码率控制模式,一种是固定码率模式(Constant Bit Rate),一种是可变码率模式(Variable Bit Rate)以及有约束的可变码率模式(Constrained Variable Bit Rate)。CBR模式顾名思义就是产生的内容的码率恒定,它特别适合用于信道带宽基本恒定的情况,比如PSTN信道。VBR模式在总的平均码率符合要求外没有其它的额外的约束,因此瞬时码率有可能很高,它特别适合本地存储的情况,比如DVD的压缩后本地重放。CVBR模式介于CBR和VBR之间,在VBR上再加一些约束条件,比如最高的瞬时码率不能超过某个预设的值等。码率控制过程本身比较复杂,每一个宏块的编码模式(比如INTRA编码或是INTER编码的确定)和它所用的量华参数QP都对码率会产生大的影响,人们通常所说的码率控制过程是指为不同级别的编码单元确定目标比特数然后通过调整量化参数QP来达到目标的过程。图三所示是一个常用的码率控制器的结构图,它包括量化编码器,QP限制器,码率量化模型R-Q,虚拟缓冲区模型,复杂度分析器,基本单元层码率控制模块,帧级码率控制模块和GOP层码率控制模块。

现有的码率控制中的虚拟缓冲区的控制都致力于保持缓冲区的满度稳定在某个预设的点。其虚拟缓冲区控制通常都是对计算出的分配给当前的帧的目标比特数乘上一个由缓冲区满度决定的调整因子的方式来控制。一个常用的方法就是使用基于如下公式的一个缓冲区控制方法:

T′n=Tn□k,

其中B是缓冲区的大小,B(n)是在时间n时缓冲区的满度.T(n)是当前帧的目标比特数,k是缓冲区调整因子,其功能是根据缓冲区的满度调整当前帧的目标比特数以保持缓冲区稳定。

如果B(n)=0.5B即半满时,k的值为1;即:缓冲区的目标平衡点是半满。可以看出这样的缓冲区控制方法有两个局限,一是平衡点是固定在半满这个点上。二是调整力度的控制参数是个常数2,调整因子在[1/2,2]之间变化。

上述控制方法带来的直接后果是当场景变化时为了保持缓冲区的不溢出,有时候不可避免的造成一些帧不被编码,即跳帧;另外一个后果就是以图像质量的上下波动来保持缓冲区的稳定,而人眼对图像质量的上下波动是比较敏感的。

发明内容

本发明的主要目的是解决跳帧问题,本发明的目的还在于保证缓冲区不溢出的前提下保持主观图像质量的稳定,上述目的通过下述技术方案予以解决:

复杂度分析器模块对残差的编码复杂度进行分析,将编码复杂度分析结果传送给码率量化模型R-Q,码率量化模型R-Q根据基本编码单元的编码复杂度和基本单元层码率控制模块分配的比特数来计算量化参数QP并传送到QP限制器模块,QP限制器模块根据该量化参数QP进行限制并传送到量化编码器模块,量化编码器模块用量化参数QP对残差进行量化并进行变长编码后输入VBV缓冲区中等待输出到信道中去,进一步的设计在于设置一缓冲区自适应控制模块,将上述复杂度分析结果中有关对在过去一段时间内帧一级编码复杂度的统计分析的复杂度信息A传送到缓冲区自适应控制模块、对当前要编码的基本单元的编码复杂度分析的复杂度信息B传送到码率量化模型R-Q,缓冲区自适应控制模块根据所述复杂度信息A、时间辅助信息和虚拟缓冲区当前满度及当前目标平衡点向虚拟缓冲区反馈该缓冲区当前目标平衡点c、向帧级码率控制模块传送缓冲区调整因子k,GOP层码率控制器模块根据平均目标码率和虚拟缓冲区向其传送的该缓冲区的当前满度信号为当前GOP分配一个目标比特数并传送给帧级码率控制模块,帧级码率控制模块根据GOP为当前帧分配一个目标比特数,再用由缓冲区自适应控制模块输出的调整因子k做出调整并传送给基本单元层码率控制模块,基本编码单元层码率控制模块确定一个目标比特数,并把这个目标比特数输出给码率量化模型R-Q,以使码率量化模型R-Q进行上述的量化参数QP的计算。

所述缓冲区自适应控制模块包含缓冲区力度控制单元、缓冲区平衡点控制单元和调整因子控制单元,

所述缓冲区当前目标平衡点和缓冲区满度的信号由缓冲区力度控制单元的输入端输入,根据缓冲区当前目标平衡点和缓冲区满度的比例关系调整力度s,并使s不超出最大调整力度上限;

所述缓冲区当前目标平衡点信号、所述复杂度信息A和所述时间辅助信号由缓冲区平衡点控制单元的输入端输入,按设定的平衡点增量关系对缓冲区当前目标平衡点按设定关系进行调节,并输出该缓冲区当前目标平衡点c;

所述当前满度信号、所述输出缓冲区控制力度s和缓冲区目标平衡点c由调整因子控制单元的输入端输入,并根据设定关系得到调整因子k,输出

端输出该调整因子k。

所述调整力度s设定为:

s=min(max(balance_point,buffer_fullness)/min(balance_point,buffer_fullness),3)

其中balance_point是缓冲区当前目标平衡点,buffer_fullness是缓冲区当前满度。其中min和max函数分别求二个输入值中间的最小和最大的函数。

所述平衡点按如下步骤确定:

a)计算目标平衡点增量

当前目标平衡点按照和将来时刻点t的目标平衡点之间的差随时间做线性递增或递减,可以使用如下的公式去计算。

Delta=(Future_balance_point-Balance_point)/Distance_to_Future_point;

Balance_point+=Delta;

其中Future_balance_point是为将来时刻t预设的目标平衡点。balance_point是缓冲区当前目标平衡点,Distance_to_Future_point是当前时间点到将来的时间点之间的以帧率为计算单位的时间长短。在为INTRA帧设定目标平衡点时,可以使用如下方法:

Future_balance_point=0.9*B-surgeMagnitude;其中surgeMagnitude=1NΣiI(i),也就是过去所有INTRA帧的比特数平均值。

b)在平衡点计算好以后,再用以下公式进行调整:

Balance_point*=Clip(C_2s/C_10s,0.9,1.1);

c=Balance_point/B-0.5;

其中C_2s是在过去2秒内的帧的复杂度的滑动平均值,C_10s是在过去10秒内的帧的复杂度的滑动平均值。

所述调整因子k设定为:

其中-0.5 c 0.5,s 1

其中B(n)是缓冲区当前满度,s是缓冲区控制力度和c是缓冲区目标平衡点c,B是缓冲区大小。

本发明依据缓冲区一些控制特点,引入了平衡点控制参数c来控制目标平衡点。所依据的缓冲区控制特点其一是:缓冲区目标平衡点动态可变,比如由于在实际应用中都明确规定了随机访问点(即INTRA帧或IDR帧)的周期,在做缓冲区的控制的时候可以预先为这些随机访问点设定一个比半满略低的目标平衡点,从而可以避免在编这些随机访问点时出现缓冲区溢出;或者在多次编码时,由于知道了一些将来信息,可以根据内容的变化预设目标平衡点。其二是,当已经编码的帧的复杂度连续递增(或递减)的时候,缓冲区平衡点也应该逐步上行(或下行),如果这种情况仍然强制平衡点维持在半满状态,带来的直接结果是图像质量的降低(或超清晰)。通过使目标平衡点动态可变,可以实现在缓冲区容许的波动范围内图像质量的基本稳定。

本发明还依据了:当目标平衡点和缓冲区的实际的满度之间的偏差比较大时,调整因子容易饱和的特点,为使之可调,而引入了另一个参数--调整力度s。

本发明通过引入两个缓冲区控制参数而实现了一种新的动态的缓冲区控制方法,在图像质量的上下波动和缓冲区的满度浮动之间获得一个平衡,可以有效的解决跳帧问题和在保证缓冲区不溢出的前提下保持主观图像质量的稳定。

附图说明

图1是本发明的码率控制系统的结构框图。

图2是缓冲区自适应控制模块的结构框图。

图3常用码率控制系统的结构框图。

具体实施方式

下面结合附图及实施例对本发明作进一步说明。

本发明的控制方法由图1所示的码率控制系统来完成。该系统的工作过程如下:

残差(为简化分析,在本发明中我们不区分频域内的残差和空域内的残差,因为二者是等价的,只是表达形式不一样)分别输出到量化编码器模块和复杂度分析器模块。复杂度分析器模块对残差的编码复杂度进行分析,然后把分析结果分别输出给码率量化模型R-Q和缓冲区自适应控制模块。输出给码率量化模型R-Q的是对当前要编码的基本单元的编码复杂度的一个分析;而输出给缓冲区自适应控制模块的则是对在过去的一段时间内的帧一级的编码复杂度的一个统计分析。

GOP层码率控制模块根据平均目标码率和虚拟缓冲区即VBV缓冲区的满度为当前GOP分配一个目标比特数,并输出给帧级码率控制模块;帧级码率控制模块根据GOP尚余的比特数而为当前帧分配一个目标比特数,然后再用缓冲区自适应控制模块输出的调整因子k做出调整,并输出给基本单元层码率控制模块。基本编码单元层码率控制模块根据在当前帧内一共尚余多少比特数进一步为自己确定一个目标比特数,并把这个目标比特数输出给码率量化模型R-Q。

码率量化模型R-Q根据基本编码单元的编码复杂度和为这个基本编码单元分配的比特数计算出一个量化参数QP并输出给QP限制器模块。QP限制器对QP进行限制过后输出给量化编码器模块。量化编码器模块用QP对残差进行量化并进行变长编码,之后输出到VBV缓冲区(即虚拟缓冲区)中等待输出到信道中去。信道以和信道带宽相同的速率从VBV缓冲区不断的取走数据。VBV缓冲区就如同一个带了水龙头的水箱,量化编码器不断的往水箱内添水,而信道通过水龙头不断的放水。正常情况下VBV缓冲区既不溢出也不为空。

缓冲区自适应控制模块通过监控VBV缓冲区的满度,以及对过去一个时间段内的所有帧的复杂度的统计分析数据来设定控制VBV缓冲区的一些参数,以达到最大限度的利用好VBV缓冲区。

比较图1和图3二种控制方法,其差别在于:1)虚拟缓冲区自适应控制方法多了一个缓冲区自适应控制模块,它是一个负反馈控制模块,控制缓冲区的平衡点设定和缓冲区控制力度的设定。2)自适应缓冲区控制方法利用了复杂度分析器的结果来调整缓冲区的控制。

缓冲区自适应缓冲控制模块由缓冲区力度控制单元,缓冲区平衡点控制单元以及调整因子控制单元构成,其结构如如图2所示。缓冲区自适应控制模块通过监控VBV缓冲区的满度,以及对过去一个时间段内的所有帧的复杂度的统计分析数据来设定控制VBV缓冲区的一些参数,以达到最大限度的利用好VBV缓冲区。下面就缓冲区调整力度s、缓冲区平衡点c和缓冲区调整因子k的设定分述如下:

a)缓冲区调整力度的设定

缓冲区力度控制块有两个输入信号,缓冲区当前满度和缓冲区当前目标平衡点,这两个信号都来自VBV缓冲区模型的输出;缓冲区力度调整块有一个输出信号,调整力度,根据缓冲区当前目标平衡点和缓冲区满度的比例关系调整力度s,并使s不超出最大调整力度上限,可以使用如下公式去计算:

s=min(max(balance_point,buffer_fullness)/min(balance_point,buffer_fullness),3)

其中balance_point是缓冲区当前目标平衡点,buffer_fullness是缓冲区当前满度。其中min和max函数分别求二个输入值中间的最小和最大的函数。

b)缓冲区平衡点的确定:

缓冲区平衡点控制块有三个输入信号,缓冲区当前目标平衡点,复杂度分析结果以及时间辅助信息,其中的复杂度分析结果和时间辅助信号是矢量信号,复杂度分析结果包括过去某个时间段内的所有的帧的复杂度的分析结果(在我们给出的计算公式中,我们取的值是10秒,但并不局限于10秒这个特定的值),时间辅助信息包括将来的某个时刻t的缓冲区目标平衡点以及到将来时刻t的时间长短。缓冲区平衡点控制块有一个输出信号,缓冲区平衡点,这是一个标量,其计算分两步:

步骤一:计算目标平衡点增量

当前目标平衡点按照和将来时刻点t的目标平衡点之间的差随时间做线性递增或递减,可以使用如下的公式去计算。

Delta=(Future_balance_point-Balance_point)/Distance_to_Future_point;

Balance_point+=Delta;

其中Future_balance_point是为将来时刻t预设的目标平衡点。比如为周期性的GOP插入点或是预知的将来INTRA帧的插入点预设的目标平衡点;balance_point是缓冲区当前目标平衡点,Distance_to_Future_point是当前时间点到将来的时间点之间的以帧率为计算单位的时间长短。在为INTRA帧设定目标平衡点时,可以使用如下方法:

Future_balance_point=0.9*B-surgeMagnitude;其中surgeMagnitude=1NΣiI(i),也就是过去所有INTRA帧的比特数平均值。

步骤二:在平衡点计算好以后,再用以下公式进行调整:

Balance_point*=Clip(C_2s/C_10s,0.9,1.1);

c=Balance_point/B-0.5;

其中C_2s是在过去2秒内的帧的复杂度的滑动平均值,C_10s是在过去10秒内的帧的复杂度的滑动平均值。

c)缓冲区调整因子的确定:

缓冲区调整因子控制模块有三个输入信号,一个输出信号。其输出就是缓冲区调整因子k,三个输入信号分别是缓冲区当前满度B(n),缓冲区控制力度s和缓冲区目标平衡点c。缓冲区调整因子k的计算公式如下:

其中-0.5 c 0.5,s 1

当B(n)=(c+0.5)B,k=1。平衡点是(c+0.5)B。当缓冲区的满度偏离平衡点时,调整力度是s。当

B(n)=(c+0)B,  k=s

B(n)=(c+0.5)B,k=1

B(n)=(c+1)B,  k=1/s。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号