视频编码中码率控制的方法及装置.pdf

上传人:r5 文档编号:1330896 上传时间:2018-04-15 格式:PDF 页数:18 大小:900.41KB
返回 下载 相关 举报
摘要
申请专利号:

CN200810062427.9

申请日:

2008.06.06

公开号:

CN101420601A

公开日:

2009.04.29

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

H04N7/24

主分类号:

H04N7/24

申请人:

浙江大学

发明人:

虞 露; 李婉怡

地址:

310027浙江省杭州市西湖区浙大路38号

优先权:

专利代理机构:

杭州求是专利事务所有限公司

代理人:

周 烽

PDF下载: PDF下载
内容摘要

本发明公开了一种视频编码中码率控制的方法及装置,本发明的码率控制方法采用了简易的规则确定帧级QP值,另外还可以在得到帧级QP值后,在编码每帧的过程中,统计生成的比特数,并按照固定比特数划分数据包。数据包最大的尺寸为一帧。在帧级QP值的基础上,根据当前帧已经生成的实际比特数,对于每个数据包进行量化系数QP的调整。同时本发明提出了两套相应的码率控制装置。整个设计在保证编码质量的前提下,复杂度低并且容易实现。

权利要求书

1.  一种视频编码中码率控制的方法,其特征在于,包括以下步骤:
(1)使用前一个相同帧类型生成的实际比特数、前一个相同帧类型所使用的量化系数和当前帧分配的目标比特数作为已知信息,确定帧级QP值。
(2)每帧图像的开始,为一个新的数据包的开始。在编码每一帧过程中,统计当前数据包生成的比特数,用来判断下一个数据包的开始。当生成的比特数超过固定比特数时,当前数据包结束,下一个数据包开始。当一帧结束时,当前数据包结束。
(3)在编码下一个新的数据包之前,在帧级QP值的基础上,根据当前帧已经生成的实际比特数,当前帧的目标比特数,缓冲区的占有率,调整下一个编码数据包的QP值。

2.
  根据权利要求1所述的方法,其特征在于,所述步骤(1)中,设前一个相同帧类型生成的实际比特数为B1,前一个相同帧类型所使用的量化系数为QP1,当前帧分配的目标比特数为T2,按照以下的规则得到当前帧的帧级QP值:
如果B1×QP1<=(QP1-th1)×T2,则QP值为QP1-2。
如果(QP1-th1)×T2<B1×QP1<=(QP1-th2)×T2,则QP值为QP1-1。
如果(QP1-th2)×T2<B1×QP1<=(QP1+th3)×T2,则QP值为QP1。
如果(QP1+th3)×T2<B1×QP1<=(QP1+th4)×T2,则QP值为QP1+1。
如果B1×QP1>(QP1+th4)×T2,则QP值为QP1+2。
其中th1,th2,th3,th4为阈值,并且10>th1>th2>0,10>th4>th3>0。

3.
  根据权利要求1所述的方法,其特征在于,所述步骤(2)中,所述在编码每一帧过程中指每编完一个宏块时,如果当前数据包生成的比特数大于或等于固定的比特数,则判断下一个宏块为新的数据包的开始。

4.
  据权利要求1所述的方法,其特征在于,所述步骤(2)中,所述在编码每一帧过程中指每个宏块行结束时,用已经编码的信息去预测下一个宏块行即将产生的比特数,如果当前数据包已生成的比特数加上下一个宏块行的预测比特数大于或等于固定比特数时,则判断下一个宏块为新数据包的开始。

5.
  根据权利要求1所述的方法,其特征在于,所述步骤(3)指,从每帧的第二个数据包开始,当缓冲区的占有率小于一定阈值时,将当前帧已生成的比特数在整帧的目标比特数所占的比例a1和当前帧已编的宏块数在整帧所有的宏块数所占的比例a2这两个比例进行比较,设定Th为两个比例的商,即a1=Th×a2,根据Th所在的范围,按照以下规则得到新的数据包的QP值。
如果Th<=th5,则QP值为QPprev—2。
如果th5<Th<=th6,则QP值为QPprev—1。
如果th6<Th<=th7 则QP值为QPprev
如果th7<Th<=th8,则QP值为QPprev+1。
如果Th>th8,则QP值为QPprev+2。
其中,th5,th6,th7,th8均为阈值,1>=th6>th5>0,10>th8>th7>=1,QPprev为上一个数据包所使用的QP值。

6.
  根据权利要求1所述的方法,其特征在于,所述步骤(3)指,在一个新数据包开始时,缓冲区的占有率超过一定阈值时,新的数据包的QP值为当前帧的帧级QP值加上delta_QP1。其中delta_QP1为固定正整数,取值范围为[0,10]。

7.
  根据权利要求1所述的方法,其特征在于,还可以包括以下步骤:当计算得到的新数据包的QP值减去当前帧的帧级QP值大于delta_QP2时,则新数据包的QP值等于当前帧的帧级QP值加上delta_QP2。当当前帧的帧级QP值减去计算得到的新数据包的QP值大于delta_QP2时,则新数据包的QP值等于当前帧的帧级QP值减去delta_QP2。其中delta_QP2为固定正整数,取值范围为[0,10]。

8.
  一种视频编码中码率控制的方法,其特征在于,使用前一个相同帧类型生成的实际比特数B1,前一个相同帧类型所使用的量化系数QP1,当前帧分配的目标比特数T2作为已知信息,按照以下的规则得到当前帧的帧级QP值:
如果B1×QP1<=(QP1-th1)×T2,则QP值为QP1-2。
如果(QP1-th1)×T2<B1×QP1<=(QP1-th2)×T2,则QP值为QP1-1。
如果(QP1-th2)×T2<B1×QP1<=(QP1+th3)×T2,则QP值为QP1。
如果(QP1+th3)×T2<B1×QP1<=(QP1+th4)×T2,则QP值为QP1+1。
如果B1×QP1>(QP1+th4)×T2,则QP值为QP1+2。
其中th1,th2,th3,th4为阈值,并且10>th1>th2>0,10>th4>th3>0。

9.
  一种用于权利要求1所述的码率控制方法的装置,其特征在于,它包括每帧目标比特数生成器,每帧所有数据包的QP平均值存储器,每帧实际生成比特数存储器,帧级QP值生成器,数据包实际生成比特数记录器,新数据包的开始判断器,数据包QP值的生成器。其中,
帧级QP值生成器的输入端接自每帧目标比特数生成器,每帧所有数据包的QP平均值存储器以及每帧实际生成比特数存储器,输出端接到数据包QP值的生成器的一个输入端。
新数据包的开始判断器的一个输入端接自数据包实际生成比特数记录器,另一个输入端输入固定比特数,输出端接到数据包QP值的生成器的一个输入端。
数据包QP值的生成器的输出端输出数据包的QP值给编码器进行每个数据包的编码。

10.
  一种用于权利要求8所述的码率控制方法的装置,其特征在于,它包括每帧目标比特数生成器,每帧的QP值存储器,每帧实际比生成比特数存储器和帧级QP值生成器。其中,
帧级QP值生成器的输入端接自每帧目标比特数生成器,每帧的QP值存储器以及每帧实际生成比特存储器,输出端输出帧级QP值给编码器进行每帧图像的编码。
每帧目标比特数生成器,每帧的QP值存储器以及每帧实际生成比特存储器的输入端均接自编码器。

说明书

视频编码中码率控制的方法及装置
技术领域
本发明涉及数字图像信号处理技术,特别地,涉及视频编码中码率控制的方法与装置。
背景技术
由于视觉信号的时间变化性,由编码器输出的码流的码率必定是可变的,而且并没有规律性可言。为了能够满足网络上的带宽或者存储媒质容量的限制,往往在编码器的一端需要加入码率控制。码率控制技术通过调整编码过程中的某些参数来达到控制码率的目的,因此它对于重建视频的质量有着直接的影响,在视频压缩编码领域具有重要的研究意义。
码率控制的目的是控制码率,同时通过合理地分配有限的码率来提高整体的图像质量。由于编码过程中采用的量化系数与生成的码率大小有着直接的关系,因此如何选择合适的量化步长是码率控制研究的关键。目前研究领域存在很多比较经典的码率控制算法,比如H.263标准推荐的TMN8算法,MPEG2标准推荐的TM5算法,H.264/AVC标准推荐的G012算法等。
H.264推荐的G012算法是现在码率控制领域研究最多的算法。该算法将码率控制的步骤分为GOP层,帧层以及基本单元层。对于I帧,P帧,B帧三种不同的帧类型采用不同的计算方式得到量化系数QP。其中I帧的QP是由P帧的QP计算得到,B帧的QP是由前后两个参考帧的QP计算得到。而对于P帧采用前向分配比特的方法,根据现有带宽以及当前缓冲区的占有率分配目标比特数,然后根据二阶抛物线率失真模型,计算得到每个基本单元的QP。
T = X 1 . MAD Q _ step + X 2 . MAD Q _ step 2 ]]>
其中X1,X2为模型参数,在编码过程中不断更新,T为当前编码单元的目标比特数,MAD为所有宏块的运动补偿残差的平均绝对差,在一定程度上反映了该编码单元的编码复杂度。Q_step为量化步长,与量化系数QP之间有着一一对应的关系。
由于H.264采用了基于拉格朗日乘子法的R-D优化宏块编码模型选择,在对每个模式进行代价函数的计算时必须给出量化系数QP,因此在码率控制前无法确定宏块的编码模式,也就无法获得运动补偿的残差,进而也就无法利用上述率失真模型得到QP值,这两者之间的矛盾,就是所谓的“鸡蛋悖论”。因此该算法中采用前一基本单元的MAD来推导出当前待编码基本单元的MAD值。
MAD的线性预测模型为:
MADcb=a1×MADpb+a2
a1,a2为预测模型的两个参数,初始值分别为1,0。每编完一个基本单元后更新。
从上面介绍的G012算法可以看出,虽然现有的一些码率控制的算法具有优良的性能,但是它们都具有非常高的计算复杂度,这给实际应用中码率控制的实现带来难度。
发明内容
本发明的目的在于针对现有技术的不足,提供一种视频编码的方法与装置,该方法设计计算复杂度低,容易实现,同时具有高的编码质量。
本发明的目的是通过以下技术方案来实现的:
一种视频编码中码率控制的方法,包括以下步骤:
(1)使用前一个相同帧类型生成的实际比特数、前一个相同帧类型所使用的量化系数和当前帧分配的目标比特数作为已知信息,确定帧级QP值;
(2)每帧图像的开始,为一个新的数据包的开始;在编码每一帧过程中,统计当前数据包生成的比特数,用来判断下一个数据包的开始;当生成的比特数超过固定比特数时,当前数据包结束,下一个数据包开始;当一帧结束时,当前数据包结束。
(3)在编码下一个新的数据包之前,在帧级QP值的基础上,根据当前帧已经生成的实际比特数,当前帧的目标比特数,缓冲区的占有率,调整下一个编码数据包的QP值。
一种用于上述的码率控制方法的装置,它包括每帧目标比特数生成器,每帧所有数据包的QP平均值存储器,每帧实际生成比特数存储器,帧级QP值生成器,数据包实际生成比特数记录器,新数据包的开始判断器,数据包QP值的生成器;其中,帧级QP值生成器的输入端接自每帧目标比特数生成器,每帧所有数据包的QP平均值存储器以及每帧实际生成比特数存储器,输出端接到数据包QP值的生成器的一个输入端;新数据包的开始判断器的一个输入端接自数据包实际生成比特数记录器,另一个输入端输入固定比特数,输出端接到数据包QP值的生成器的一个输入端;数据包QP值的生成器的输出端输出数据包的QP值给编码器进行每个数据包的编码。
一种用于上述的码率控制方法的装置,它包括每帧目标比特数生成器,每帧的QP值存储器,每帧实际比生成比特数存储器和帧级QP值生成器;其中,帧级QP值生成器的输入端接自每帧目标比特数生成器,每帧的QP值存储器以及每帧实际生成比特存储器,输出端输出帧级QP值给编码器进行每帧图像的编码;每帧目标比特数生成器,每帧的QP值存储器以及每帧实际生成比特存储器的输入端均接自编码器。
本发明的有益效果是,利用了在视频序列中相邻同种类型图像在编码复杂度的相似性,避免了参数更新,二次模型的求解这些复杂的数学运算。同时利用通常情况下相邻编码单元量化系数QP的渐变性,通过简单的规则选取QP值,既能够保持视频序列图像高重建质量,又方便在实际应用中实现。
附图说明
图1是本发明实施例4视频编码中码率控制装置的结构框图;
图2是本发明实施例5视频编码中码率控制装置的结构框图。
具体实施方式
下面根据附图和实施例详细说明本发明,本发明的目的和效果将变得更加明显。
本发明主要通过调整编码参数量化系数QP值来达到码率控制的目的。它利用了在视频序列中相邻同种类型图像在编码复杂度的相似性,避免了参数更新,二次模型的求解这些复杂的数学运算。同时利用通常情况下相邻编码单元量化系数QP的渐变性,通过简单的规则选取QP值。这样既能够保持视频序列图像高重建质量,又方便在实际应用中实现。
一.一种视频编码中码率控制的方法,包括以下步骤:
步骤一:以一个GOP为单位分配目标比特数。
步骤二:分配帧级目标比特数。
步骤三:确定帧级QP值。
步骤四:判断新的数据包的开始。
步骤五:确定每个数据包的QP值。
步骤六:限定每个数据包的QP值。这个步骤是可选的。
其中,步骤三中,使用前一个相同帧类型生成的实际比特数B1,前一个相同帧类型所使用的量化系数QP1,当前帧分配的目标比特数T2作为已知信息,按以下的规则得到当前帧的帧级QP值。
如果B1×QP1<=(QP1-th1)×T2,则QP值为QP1-2。
如果(QP1-th1)×T2<B1×QP1<=(QP1-th2)×T2,则QP值为QP1-1。
如果(QP1-th2)×T2<B1×QP1<=(QP1+th3)×T2,则QP值为QP1。
如果(QP1+th3)×T2<B1×QP1<=(QP1+th4)×T2,则QP值为QP1+1。
如果B1×QP1>(QP1+th4)×T2,则QP值为QP1+2。
其中th1,th2,th3,th4为阈值,并且5>th1>th2>0,5>th4>th3>0
步骤四中,每帧图像的开始,为一个新的数据包的开始。在编码每一帧过程中,统计当前数据包生成的比特数,用来判断下一个数据包的开始。当生成的比特数超过固定比特数时,当前数据包结束,下一个数据包开始。当一帧结束时,当前数据包结束。
步骤五中,在编码下一个新的数据包之前,在帧级QP值的基础上,根据当前帧已经生成的实际比特数,当前帧的目标比特数,缓冲区的占有率,调整下一个编码数据包的QP值。从每帧的第二个数据包开始,当缓冲区的占有率小于一定阈值时,将两个比例(当前帧已生成的比特数在整帧的目标比特数所占的比例a1以及当前帧已编的宏块数在整帧所有的宏块数所占的比例a2)进行比较,设定Th为两个比例的商,即a1=Th×a2,根据Th所在的范围,按照以下规则得到新的数据包的QP值。
如果Th<=th5,则QP值为QPprev—2。
如果th5<Th<=th6,则QP值为QPprev—1。
如果th6<Th<=th7则QP值为QPprev
如果th7<Th<=th8,则QP值为QPprev+1。
如果Th>th8,则QP值为QPprev+2。
其中,th5,th6,th7,th8均为阈值,1>=th6>th5>0,10>th8>th7>=1,QPprev为上一个数据包所使用的QP值。
在一个新数据包开始时,缓冲区的占有率超过一定阈值时,新的数据包的QP值为当前帧的帧级QP值加上delta_QP1。其中delta_QP1为固定正整数,取值范围为[0,10]。
步骤六中,当计算得到的新数据包的QP值减去当前帧的帧级QP值大于delta_QP2时,则新数据包的QP值等于当前帧的帧级QP值加上delta_QP2。当当前帧的帧级QP值减去计算得到的新数据包的QP值大于delta_QP2时,则新数据包的QP值等于当前帧的帧级QP值减去delta_QP2。其中delta_QP2为固定正整数,取值范围为[0,10]。
二.一种视频编码中码率控制的方法,包括以下步骤:
步骤一:以一个GOP为单位分配目标比特数。
步骤二:分配帧级目标比特数。
步骤三:确定帧级QP值。
其中,步骤一中,使用前一个相同帧类型生成的实际比特数B1,前一个相同帧类型所使用的量化系数QP1,当前帧分配的目标比特数T2作为已知信息,按以下的规则得到当前帧的帧级QP值。
如果B1×QP1<=(QP1-th1)×T2,则QP值为QP1-2。
如果(QP1-th1)×T2<B1×QP1<=(QP1-th2)×T2,则QP值为QP1-1。
如果(QP1-th2)×T2<B1×QP1<=(QP1+th3)×T2,则QP值为QP1。
如果(QP1+th3)×T2<B1×QP1<=(QP1+th4)×T2,则QP值为QP1+1。
如果B1×QP1>(QP1+th4)×T2,则QP值为QP1+2。
其中th1,th2,th3,th4为阈值,并且10>th1>th2>0,10>th4>th3>0
三.一种视频编码中的码率控制装置,参见附图1。
它包括每帧目标比特数生成器,每帧所有数据包的QP平均值存储器,每帧实际生成比特数存储器,帧级QP值生成器,数据包实际生成比特数记录器,新数据包的开始判断器,数据包QP值的生成器。
其中帧级QP值生成器的输入端接自每帧目标比特数生成器,每帧所有数据包的QP平均值存储器以及每帧实际生成比特数存储器,输出端接到数据包QP值的生成器的一个输入端。新数据包的开始判断器的一个输入端接自数据包实际生成比特数记录器,另一个输入端输入固定比特数,输出端接到数据包QP值的生成器的一个输入端。数据包QP值的生成器的输出端输出数据包的QP值给编码器进行每个数据包的编码。
四.一种视频编码中的码率控制装置,参见附图2。
它包括每帧目标比特数生成器,每帧的QP值存储器,每帧实际比生成比特数存储器,帧级QP值生成器。帧级QP值生成器的输入端接自每帧目标比特数生成器,每帧的QP值存储器以及每帧实际生成比特存储器,输出端输出帧级QP值给编码器进行每帧图像的编码。其中每帧目标比特数生成器,每帧的QP值存储器以及每帧实际生成比特存储器的输入端均接自编码器。
下面根据附图和实施例详细描述本发明,本发明的目的和效果将变得更加明显。
实施例一
一种视频编码中码率控制的方法,设目标比特为2Mbit/s,每10000个比特为一个数据包。序列的初始QP为35。其步骤如下:
步骤一:以一个GOP为单位分配目标比特数
B gop = ( 1 + N p + N b ) × bit _ rate frame _ rate ]]>
其中Np为一个GOP的P帧数目,Nb为一个GOP的B帧数目。如果当前是CBR情况下,bit_rate即为目标码率,这里为2Mbit/s。frame_rate为序列的帧率。这样得到的为依据带宽分配给每个GOP的目标比特,还需要加上实际编码过程中上一个GOP剩余的比特数Bleft,才能够得到当前GOP真正的目标比特Bgop
B gop = B gop + B left ]]>
步骤二:分配帧级目标比特数
这里根据当前GOP剩余比特数Bleft分配给每个P帧目标比特数T′
T = w p × B left N pleft × w p + N bleft × w b ]]>
其中Npleft为当前图像组的剩余的P帧的数目,Nbleft为当前图像组剩余的B帧的数目。wp为P帧编码复杂度,wb为B帧编码复杂度。这里近似取wp=0.5,wb=0.2。
步骤三:确定帧级QP值
P帧的QP值计算:
设前一个P帧生成的实际比特数B1,前一个P帧所使用的量化系数QP1,当前P帧分配的目标比特数T2,这里取th1=2,th2=1,th3=1,th4=2,则计算当前P帧的QP值为:
如果B1×QP1<=(QP1-2)×T2,则QP值为QP1-2。
如果(QP1-2)×T2<B1×QP1<=(QP1-1)×T2,则QP值为QP1-1。
如果(QP1-1)×T2<B1×QP1<=(QP1+1)×T2,则QP值为QP1。
如果(QP1+1)×T2<B1×QP1<=(QP1+2)×T2,则QP值为QP1+1。
如果B1×QP1>(QP1+2)×T2,则QP值为QP1+2。
I帧的QP值计算如下:第一个GOP的I帧QP值是给定的。从第二个GOP开始,I帧QP是前一个GOP的所有P帧的平均QP值,当GOP长度每增加15,初始量化系数QP减小1,最多减2。每个GOP的初始QP与前一个GOP的初始QP相差不超过2。
B帧的QP值是由前后两帧的QP值插值得到:
第一种情况:两个P帧之间只有一个B帧存在时(L=1):
Q B ~ 1 = QP 1 + QP 2 + 2 2 if Q P 1 &NotEqual; QP 2 QP 1 + 2 Otherwise ]]>
其中QP1和QP2分别为最邻近该B帧的前后两帧的量化系数。
第二种情况:当两个P帧之间不只一个B帧时(L>1):
Q B ~ i = QP 1 + α + max { min { ( QP 2 - QP 1 ) / ( L - 1 ) , 2 ( i - 1 ) } , 2 ( i - 1 ) } ]]>
其中α代表了第一个B帧与QP1之间的偏差,i为当前B帧的位置:
α = - 3 QP 2 - QP 1 - 2 L - 3 - 2 QP 2 - QP 1 - 2 L - 2 - 1 QP 2 - QP 1 - 2 L - 1 0 QP 2 - QP 1 = - 2 L 1 QP 2 - QP 1 = - 2 L + 1 2 Otherwise ]]>
步骤四:判断新的数据包的开始
每帧图像的开始,为一个新的数据包的开始。在编码每一帧过程中,统计当前数据包生成的比特数,用来判断下一个数据包的开始。在编完每一个宏块时,如果生成的比特数大于或等于10000bits,则判断下一个宏块为新的数据包的开始。
步骤五:确定每个数据包的QP值
如果当前缓冲区的占有率超过或者等于80%时,则当前数据包QP值为帧级QP值加3。这里delta_QP1取3。
如果当前缓冲区的占有率小于80%时,I,B帧的所有数据包的QP值为帧级QP值。而P帧的第一个数据包使用的QP值为帧级QP值。P帧从第二个数据包所使用的QP计算如下:
设Tcoded为当前P帧已生成的比特数,T为当前P帧的目标比特数,Ncodedmb为当前P帧已经编码的宏块数目,Ntotalmb为当前帧的宏块总数。则当前帧已生成的比特数在整帧的目标比特数所占的比例a1=Tcoded/T,当前帧已编的宏块数在整帧所有的宏块数所占的比例a2=Ncodedmb/Ntotalmb,设定Th为两个比例的商,即a1=Th×a2。在本实例中阈值th5=0.125,th6=0.25,th7=1.75,th8=3。
如果Th≤0.125×a2,则QP值为QPprev—2
如果0.125<Th≤0.25,则QP值为QPprev—1
如果0.25<Th≤1.75,则QP值为QPprev
如果1.75<Th≤3,则QP值为QPprev+1。
如果Th>3,则QP值为QPprev+2。
实施例二:
一种视频编码中码率控制的方法,设目标比特为2Mbit/s,每10000个比特为一个数据包。I,P帧的初始QP为35,B帧的初始QP为37。其步骤如下:
步骤一:以一个GOP为单位分配目标比特数
具体方法与实施实例一的步骤一相同。
步骤二:分配帧级目标比特数
根据当前GOP剩余比特数Bleft给每帧分配目标比特数,每个GOP的目标比特数分配与实施实例一的步骤一相同。Ti,Tp,Tb分别代表I帧,P帧,B帧分配的目标比特数。
Ti = max ( B left 1 + NpXp XiKp + NbXb XiKb , bit _ rate / ( 8 * frame _ rate ) ) ]]>
Tp = max ( B left Np + NbKpXb KbXp , bit _ rate / ( 8 * frame _ rate ) ) ]]>
Tb = max ( B left Nb + NpKbXp KpXb , bit _ rate / ( 8 * frame _ rate ) ) ]]>
其中,Np为当前图像组的剩余的P帧的数目,Nb为当前图像组的剩余的B帧的数目。Kp,Kb为常数,在这里Kp=1.0,Kb=1.4。Xi,Xp,Xb分别为I帧,B帧,P帧类型的编码复杂度的表征。
Xi=Bi×Qi
Xp=Bp×Qp
Xb=Bb×Qb
其中Bi,Bp,Bb分别为当前图像组中I,P,B帧生成比特数的平均值,Qi,Qp,Qb分别为当前图像组中I,P,B帧使用QP的平均值
步骤三:确定帧级QP值
设前一个相同帧类型生成的实际比特数B1,前一个相同帧类型所使用的量化系数QP1,当前帧分配的目标比特数T2,这里取th1=2.5,th2=1.5,th3=1.5,th4=3,则计算当前帧的QP值为:
如果B1×QP1<=(QP1-2.5)×T2,则QP值为QP1-2。
如果(QP1-2.5)×T2<B1×QP1<=(QP1-1.5)×T2,则QP值为QP1-1。
如果(QP1-1.5)×T2<B1×QP1<=(QP1+1.5)×T2,则QP值为QP1。
如果(QP1+1.5)×T2<B1×QP1<=(QP1+3)×T2,则QP值为QP1+1。
如果B1×QP1>(QP1+3)×T2,则QP值为QP1+2。
步骤四:判断新的数据包的开始
每帧图像的开始,为一个新的数据包的开始。在编码每一帧过程中,统计当前数据包生成的比特数,用来判断下一个数据包的开始。在每个宏块行结束时,用已经编码的信息去预测下一个宏块行即将产生的比特数。本实例预测下一个宏块行即将产生的比特数为当前宏块行生成的比特数。如果已生成的比特数加上下一个宏块行的预测比特数大于或等于10000比特时,则判断下一个宏块为新的数据包的开始。
步骤五:确定每个数据包的QP值
如果当前缓冲区的占有率超过或者等于70%时,则当前数据包QP值为帧级QP值QPframe加2。这里delta_QP1取2。
如果当前缓冲区的占有率小于70%时,每帧的第一个数据包使用的QP值为帧级QP值。从第二个数据包所使用的QP计算如下:
设Tcoded为当前帧已生成的比特数,T为当前帧的目标比特数,Ncodedmb为当前帧已经编码的宏块数目,Ntotalmb为当前帧的宏块总数。则当前帧已生成的比特数在整帧的目标比特数所占的比例a1=Tcoded/T,当前帧已编的宏块数在整帧所有的宏块数所占的比例a2=Ncodedmb/Ntotalmb,设定Th为两个比例的商,即a1=Th×a2。本实例中阈值th5=0.25,th6=0.75,th7=1.5,th8=4。
如果Th≤0.25×a2,则QP值为QPprev—2
如果0.25<Th≤0.75,则QP值为QPprev—1
如果0.75<Th≤1.5,则QP值为QPprev
如果1.5<Th≤4,则QP值为QPprev+1。
如果Th>4,则QP值为QPprev+2。
步骤六:限定每个数据包的QP值
最后每个数据包最终的QP值需要被限定在[QPframe-3,QPframe+3]之间。这里delta_QP2取值为3。
实施例三:
一种视频编码中码率控制的方法。设目标比特为2Mbit/s,每10000个比特为一个数据包。I,P帧的初始QP为35,B帧的初始QP为37。其步骤如下:步骤一:以一个GOP为单位分配目标比特数
具体方法与实施实例一的步骤一相同。
步骤二:分配帧级目标比特数
根据当前GOP剩余比特数Bleft给每帧分配目标比特数,每个GOP的目标比特数分配与实施实例一的步骤一相同。Ti,Tp,Tb分别代表I帧,P帧,B帧分配的目标比特数。
Ti = X i × B left X i + NpXp + NbXb ]]>
Tp = B left × Xp NpXp + NbXb ]]>
Tb = B left × Xb NpXp + NbXb ]]>
其中Np为当前图像组的剩余的P帧的数目,Nb为当前图像组的剩余的B帧的数目。Xi,Xp,Xb分别为I帧,B帧,P帧类型的编码复杂度的表征。
Xi=Bi×Qi
Xp=Bp×Qp
Xb=Bb×Qb
其中Bi,Bp,Bb分别为前一个I,P,B帧生成的比特数,Qi,Qp,Qb分别为前一个I,P,B帧使用QP值,
步骤三:确定帧级QP值
设前一个相同帧类型生成的实际比特数B1,前一个相同帧类型所使用的量化系数QP1,当前帧分配的目标比特数T2,这里取th1=2.8,th2=1.8,th3=1.4,th4=2.4,
如果B1×QP1<=(QP1-2.8)×T2,则QP值为QP1-2。
如果(QP1-2.8)×T2<B1×QP1<=(QP1-1.8)×T2,则QP值为QP1-1。
如果(QP1-1.8)×T2<B1×QP1<=(QP1+1.4)×T2,则QP值为QP1。
如果(QP1+1.4)×T2<B1×QP1<=(QP1+2.4)×T2,则QP值为QP1+1。
如果B1×QP1>(QP1+2.4)×T2,则QP值为QP1+2。
实施例四:
一种视频编码中的码率控制装置,如附图1所示。
它实现的是实例二表述的码率控制方法。包括每帧目标比特数生成器,每帧所有数据包的QP平均值存储器,每帧实际生成比特存储器,帧级QP值生成器,数据包实际生成比特数记录器,新数据包的开始判断器,数据包QP值的生成器。
帧级QP值生成器的输入端接自每帧目标比特数生成器,每帧所有数据包的QP平均值存储器以及每帧实际生成比特存储器。输出端接到数据包QP值的生成器的一个输入端。其中由每帧目标比特数生成器输入当前帧目标比特数,由每帧所有数据包的QP平均值存储器输入前一个相同帧类型的QP平均值,由每帧实际生成比特数存储器输入前一个相同帧类型生成的实际比特数,帧级QP值生成器根据这些输入信息生成当前帧的帧级QP值输出。
新数据包的开始判断器的一个输入端接自数据包实际生成比特数记录器,另一个输入端输入固定比特数,本例中为10000比特。输出端接到数据包QP值的生成器的一个输入端。新数据包的开始判断器输出新数据包开始的信息来启动数据包QP值的生成器的计算。
数据包QP值的生成器的其他输入端接自编码器,输入当前帧已经生成的实际比特数,当前帧已编宏块数,当前帧总共宏块数,当前缓冲区占有率这些信息。输出端输出数据包的QP值给编码器进行每个数据包的编码。
实施例五:
一种视频编码中的码率控制装置,如附图2所示。
它实现的是实例三表述的码率控制方法。包括每帧目标比特数生成器,每帧的QP值存储器,每帧实际比生成比特数存储器,帧级QP值生成器。
每帧目标比特数生成器,每帧的QP值存储器以及每帧实际生成比特存储器的输入端均接自编码器。接入信息为当前GOP剩余的比特数,剩余P,B帧数信息,上一帧的QP值,上一帧的实际生成比特数。
帧级QP值生成器的输入端接自每帧目标比特数生成器,每帧的QP值存储器以及每帧实际生成比特存储器,输出端输出帧级QP值给编码器进行每帧图像的编码。其中由每帧目标比特数生成器输入当前帧目标比特数,由每帧所有数据包的QP平均值存储器输入前一个相同帧类型的QP值,由每帧实际生成比特数存储器输入前一个相同帧类型生成的实际比特数,帧级QP值生成器根据这些输入信息生成当前帧的帧级QP值输出。
以上所述仅为本发明的一些较佳实施例,并非用来限定本发明实施的范围,本领域技术人员在这些实施例的基础上进行的所有相关的扩展和应用都应落入本申请的保护范围。

视频编码中码率控制的方法及装置.pdf_第1页
第1页 / 共18页
视频编码中码率控制的方法及装置.pdf_第2页
第2页 / 共18页
视频编码中码率控制的方法及装置.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《视频编码中码率控制的方法及装置.pdf》由会员分享,可在线阅读,更多相关《视频编码中码率控制的方法及装置.pdf(18页珍藏版)》请在专利查询网上搜索。

本发明公开了一种视频编码中码率控制的方法及装置,本发明的码率控制方法采用了简易的规则确定帧级QP值,另外还可以在得到帧级QP值后,在编码每帧的过程中,统计生成的比特数,并按照固定比特数划分数据包。数据包最大的尺寸为一帧。在帧级QP值的基础上,根据当前帧已经生成的实际比特数,对于每个数据包进行量化系数QP的调整。同时本发明提出了两套相应的码率控制装置。整个设计在保证编码质量的前提下,复杂度低并且容易。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1