一种低复杂度的积分码率控制方法

文档序号:7618816阅读:137来源:国知局
专利名称:一种低复杂度的积分码率控制方法
技术领域
本发明涉及一种低复杂度的积分码率控制方法,特别涉及一种适用于最新标准编码器的低复杂度的码率控制方法,属于数字视频压缩、数字视频通讯技术领域。
背景技术
视频压缩是一种有损压缩,在消除视频序列中的空间冗余和时间冗余的同时,通过去除掉视频信息中的部分高频分量,来达到很高的压缩率。其中,调整压缩率的主要手段是通过调整量化步长的大小,对残差图像进行量化,产生不同的比特数。视频编码器中的码率控制部分正是通过为编码器选择合适的量化步长来控制比特数的输出。可见,码率控制是视频编码器重要组成部分。在编码过程中,码率控制需根据网络带宽的要求,在控制输出比特数变化的同时,尽量保证输出视频的质量。
到现在为止,出现了许多码率控制方法,其中比较有名的有MPEG-2的TM5(Test Model 5)码率控制方法、H.263的TMN 8(Test Model Near 8)码率控制方法,MPEG-4的VM8(Verification Model version 8)码率控制方法等。
现在国际上最新的视频压缩标准是H.264/MPEG-4AVC。国内最新的标准是正在制定中的AVS视频压缩标准。这两个标准采用了近几年来最新的技术。两者在有些方面有所不同,但大多数技术非常相近。其中,两者都采用了一项重要的技术——率失真优化技术。这项技术在输出码率和视频质量失真率之间取得了一个非常好的折衷。但是这项技术与传统的码率控制方法又有所矛盾。这个矛盾是传统的码率控制方法在计算编码当前宏块所需的量化参数之前,需知道当前宏块的残差;而率失真优化技术在计算出当前宏块的残差之前,需要知道编码当前宏块所需的量化参数。H.264参考软件中的码率控制方法,成功的解决了这个矛盾。但代价是带来了很高的复杂度。

发明内容
本发明的主要目的是提供一种简单而有效的码率控制方法——积分码率控制方法。这种码率控制方法不仅适用于传统的MPEG-2、MPEG-4、H.263编码器,而且同样适用于最新的H.264、AVS编码器。对于符合最新标准的编码器。这种方法可以有效的避免上述与率失真优化技术之间的矛盾,更准确地控制输出码率的变化、取得较高质量的视频输出;同时,其实现复杂度非常低,大大降低了对资源的需求。
本发明的目的是这样实现一种低复杂度的积分码率控制方法,至少包括如下步骤步骤1为当前图象组(Group of Picture,简称GOP)分配一定的比特数;步骤2为GOP的P、B帧分配相应的比特数,为GOP的I帧指定一量化参数;步骤3针对各宏块,采用积分码率控制的方法,计算出码率控制的量化参数。
上述步骤1的具体实现如下在编码第i个GOP的第j帧之前,第i个GOP中剩余的未分配的比特数Bi(j)=Ri(j)f×Nf-Vi(j),j=1,Bi(j-1)+Ri(j)-Ri(j-1)f×Ni-j+1)-bi(j-1),j=2,3,...,Ni.---(1)]]>这里Bi(j)为开始编码第i个GOP第j帧时剩余待分配比特数;Ri(j)为在编码第j帧时的瞬时码率;Ni为第i个GOP中的帧数;f为编码帧率;Vi(j)为虚拟缓冲区的满度(actual buffer fullness);bi(j-1)为第j-1帧所产生的实际比特数。
实际上,在恒定码率(Constant Bit Rate,简称CBR)的情况下,Ri(j)等于Ri(j-1)。此时式(1)可以简化为Bi(j)=Ri(j)f×Ni-Vi(j),j=1,Bi(j-1)-bi(j-1),j=2,3,...,Ni.---(2)]]>式(1)中Vi(j)的更新公式为Vi(j)=0,i=1,j=1,Vi-1(Ni-1),i≠1,j=1,Vi(j-1)+bi(j-1)-Ri(j-1)f,j=2,3,...,Ni.---(3)]]>对于每一个GOP开始时的I帧,为其指定一个量化参数。
(1)对第一个GOP的第一帧(I帧),需结合着图像大小和带宽的情况,从外部为其指定一合理的量化参数QP1(1)。默认情况下(对应H.264的编码器)QP1(1)=40,bpp≤l130,l1<bpp≤l2,20,l2<bpp≤l3,10,bpp>l3.---(4)]]>这里bpp(bppbits per pixel)是每个像素所用的比特数,bpp=R1(1)f×Npixel,]]>Npixel是一帧图像中像素的点数。在QCIF/CIF情况时,这里指定l1=0.15,l2=0.45,l3=0.9,当大于上面的图像尺寸时指定l1=0.6,l2=1.4,l3=2.4。
(2)对于第i个GOP的第一帧(I帧),其量化参数的取值如下QPi(1)=max{QPi-1(1)-2,min{QPi-1(1)+2,SumQP(i-1)Np(i-1)-1}}---(5)]]>确定,其中Np(i-1)第i-1GOP的P帧的帧数;SumQP(i-1)第i-1GOP的P帧的平均量化参数之和,对于第一个GOP的I帧的量化参数由用户根据带宽,图像尺寸来设定一个初始值。
上式结果进一步被调整为QPi(1)=QPi(1)-1,if QPi(1)>QPi-1(Ni-1-L)-2(6)
QPi-1(Ni-1-L)是上一个GOP中最后一P帧的量化参数;L是两个P帧间B帧的帧数所述步骤2具体实现为按照帧类型的不同为各帧分配比特数(1)计算在当前GOP中对应于每个P帧或B帧的虚拟缓冲区目标满度(target buffer level)Si(j)在编码完当前GOP的第一个I帧后,编码第一个P帧之前,虚拟缓冲区初始目标满度为Si(2)=Vi(2)(7)对于后续的帧,虚拟缓冲区目标满度计算公式为Si(j+1)=Si(j)-Si(2)Ni-2---(8)]]>综合以上两式,虚拟缓冲区目标满度由下述公式计算Si(j)=Vi(2),j=2,Si(j-1)-Si(2)N(i)-2,j>2.---(9)]]>(2)为当前P帧或B帧分配比特数首先,按照虚拟缓冲区目标满度、虚拟缓冲区满度、帧率、当前信道带宽,计算出第j帧的目标比特数,如下式T~i(j)=Ri(j)f+γ×(Si(j)-Vi(j))---(10)]]>这里γ是一个常数,为0.5。
再根据当前GOP剩余的目标比特数,为当前帧分配比特数Tt,i(j)=Wt,i(j-1)×Bi(j)Wp,i(j-1)×Np,r+Wb,i(j-1)×Nb,r11---]]>其中t代表P帧或B帧;Np,r和Nb,r分别为当前GOP中剩余待编码P帧和B帧的帧数。这里Wp,i(j)为P帧的平均复杂度,Wb,i(j)为B帧的平均复杂度。它们的计算公式为Wp,i(j)=bi(j)×QPp,i(j)Kp]]>
Wb,i(j)=bi(j)×QPb,i(j)Kb]]>这里Kp、Kb是与量化机制有关的常数,当编码器为MPEG-2编码器时,Kp=1.0、Kb=1.4;当编码器为H.264的编码器时,Kp=1.0、Kb=1.3636。
综合考虑式(10)、(11),求出当前P帧或B帧的目标码率Ti(j)=β×T^i(j)+(1-β)×T~i(j)---(12)]]>其中β为一常数,为0.5。
最后,考虑到HRD(对应于H.263、H.264,在MPEG系列中为VBV,在AVS中为BBV),将目标比特数限定在一定范围内。
编码完一帧,所产生的实际比特被加到缓冲区中,为保证更新后的缓冲区占用度不至于太高,采用一定的跳帧策略。
所述步骤3具体实现为应用积分控制方法为一帧中各宏块分配码率并计算相应的量化参数对于I帧,一帧中所有宏块的量化参数都是相等的。因此这里所述的宏块级码率控制方法是针对P帧和B帧的。
宏块级码率控制方法在编码器编码过程中为一帧中的每一个宏块选择合适的量化参数,这样使得整帧产生的比特数与为当前帧分配的码率比特数相近。
下面是宏块级积分控制方法的详细描述(1)采用积分控制方法计算出当前宏块的量化步长Qstept+=error_bitst/kiconst (13)这里的t代表P帧或B帧。error_bitst是编码上一个同一类型宏块所得的真实比特数与目标比特数的差值;kiconst为积分常数;Qstept即为编码当前宏块所需的量化步长,其初始值为10。根据编码器的映射规则把量化步长Qstept转化成相应的量化参数QPl,i(j)。为不影响视频质量,同一帧中连续宏块量化参数的变化应缓慢,对QPl,i(j)的变化范围做出如下限制QPl,i(j)=max{QPl-1,i(j)-DQuant,min{QPl,i(j),QPl-1,i(j)+DQuant}} (14)这里,DQuant是量化参数增量。由于不同编码系统的量化机制是不同的,因而,DQuant的取值一般也是不同,这里取1。
另外,在当前帧已产生的比特数大于或等于当前帧的目标比特数时,当前宏块的量化参数按下式取值QPl,i(j)=QPl-1,i(j)+DQuant (15)最后,为保证视频画面视觉质量上的平滑,对上面求得的QPl,i(j)做如下限定QPl,i(j)=max{QPMIN,QPt,i(j)-DQP,min{QPMAX,QPt,i(j)+DQP,QPl,i(j)}}(16)这里QPMIN为最小量化参数,QPMAX为最大量化参数;QPt,i(j)为同一类型上一帧的平均量化参数值;DQP为当前宏块量化参数可以与同类型上一帧的平均量化参数值的最大差值;(2)对当前宏块进行编码(在H.264、AVS的编码器中,此时对当前宏块进行率失真优化并编码)(3)更新当前帧剩余目标比特数,更新当前宏块的比特差error_bitst=bl,i(j)-Ti(j)/mb_cn (17)bl,i(j)为编码当前块所产生的比特数;Ti(j)/mb_cn当前宏块的目标比特数;Ti(j)为当前帧的目标码率;mb_cn为当前视频序列一帧图像所包含的宏块数。


图1是视频编码系统框图;图2是视频编码系统主程序流程图;图3是本发明方法实现过程的主要步骤流程图。
具体实施例方式本发明的目的在于在保证输出视频的质量的情况下,通过为数字视频编码器选择合适的量化步长来控制比特数的输出,以适应网络带宽和的要求。在图1中所示的视频编码系统框图中,视频序列表示通过其他设备获得的没有进行压缩的原始视频序列,它作为视频编码系统的输入。在图1中所示的视频编码器可以是视频编码芯片或视频编码程序,由它对原始视频序列进行压缩编码,压缩的结果生成码流文件。该码流文件的数据量远小于原始视频序列,因而达到了压缩视频信息的目的。
图2所示是视频编码系统的主程序流程图。除码率控制这一部分外,本发明采用了国际视频编码标准H.264JM86的基本编码框架。
图3所示是码率控制部分的实现流程图。码率控制方法是本发明的核心,它不仅适用于传统的MPEG-2、MPEG-4、H.263编码器,而且同样适用于最新的H.264、AVS编码器。
为了验证本发明的实际性能和编码效率,进行了以下对比实验。对相同的视频序列、采用相同的编码参数,分别执行本发明的码率控制程序和H.264JM86码率控制程序。表1、2分别为在不同的目标码率情况下平均PSNR值的比较。从表中可以看出,改进算法在低码率情况下,要比原算法好,其他情况下,其平均PSNR值与原算法的平均PSNR值基本持平。改进算法输出的实际码率和目标码率很接近,并能随目标码率的变化而变化。同时本发明提出码率控制方法能够把虚拟缓冲区的满度维持在一个适度的水平,保证缓冲区既不上溢也不下溢。
表1低码率时改进前后各个序列平均PSNR值

表2中码率时改进前后各个序列平均PSNR值

权利要求
1.一种低复杂度的积分码率控制方法,其特征在于,至少包括如下步骤步骤1为当前图象组GOP分配一定的比特数;步骤2为GOP的P、B帧分配相应的比特数,为GOP的I帧指定一量化参数;步骤3针对各宏块,采用积分码率控制的方法,计算出码率控制的量化参数。
2.根据权利要求1所述的积分码率控制方法,其特征在于,所述步骤
1)当前GOP的目标比特数是有下式确定的Bi(j)=Ri(j)f×Ni-Vi(j),j=1,Bi(j-1)+Ri(j)-Ri(j-1)f×Ni-j+1)-bi(j-1)j=2,3,...,Ni.]]>其中Bi(j)开始编码第i个GOP第j帧时剩余待分配比特数;Ri(j)在编码第j帧时的瞬时码率;Ni为第i个GOP中的帧数;f编码帧率;Vi(j)虚拟缓冲区的满度;bi(j-1)第j-1帧所产生的实际比特数。
3.根据权利要求2所述的积分码率控制方法,其特征在于,Vi(j)的更新公式为Vi(j)=0,i=1,j=1,Vi-1(Ni-1),i≠1,j=1,Vi(j-1)+bi(j-1)-Ri(j-1)f,j=2,3,...,Ni.]]>
4.根据权利要求1所述的积分码率控制方法,其特征在于,所述步骤2)中的为P帧或B帧的指定的相应的比特数由式Ti(j)=β×T^i(j)+(1-β)×T^i(j)]]>确定,其中β为一常数,取值为0.5。
5.根据权利要求4所述的积分码率控制方法,其特征在于, 由式T^t,i(j)=Wt,i(j-1)×Bi(j)Wp,i(j-1)×Np,r+Wb,i(j-1)×Nb,r]]>确定,其中t代表P帧或B帧;Np,r当前GOP中剩余待编码P帧的帧数;Nb,r当前GOP中剩余待编码B帧的帧数;Wp,i(j)P帧的平均复杂度;Wb,i(j)B帧的平均复杂度。
6.根据权利要求5所述的积分码率控制方法,其特征在于,P帧的平均复杂度Wp,i(j)和B帧的平均复杂度Wb,i(j)分别由式Wp,i(j)=bi(j)×QPp,i(j)Kp]]>和Wb,i(j)=bi(j)×QPb,i(j)Kb,]]>其中Kp、Kb与量化机制有关的常数,当编码器为MPEG-2编码器时,Kp=1.0、Kb=1.4;当编码器为H.264的编码器时,Kp=1.0、Kb=1.3636。
7.根据权利要求4所述的积分码率控制方法,其特征在于, 由式T~i(j)=Ri(j)f+γ×(Si(j)-Vi(j))]]>确定,其中γ为一个常数,取值为0.5。
8.根据权利要求7所述的积分码率控制方法,其特征在于,Si(j)由式Si(j)=Vi(2),j=2,Si(j-1)-Si(2)N(i)-2,j>2.]]>确定。
9.根据权利要求1所述的积分码率控制方法,其特征在于,所述步骤
2)中的GOP的I帧的量化参数由式QPi(1)=max{QPi-1(1)-2,min{QPi-1(1)+2,SumQP(i-1)Np(i-1)-1}}]]>确定,其中Np(i-1)第i-1GOP的P帧的帧数;SumQP(i-1)第i-1GOP的P帧的平均量化参数之和,对于第一个GOP的I帧的量化参数由用户根据带宽,图像尺寸来设定一个初始值。
10.根据权利要求1所述的积分码率控制方法,其特征在于,对于第一个GOP的I帧的量化参数即初始值,默认情况下(对应H.264的编码器),使用下式确定QP1(1)=40,bpp≤l1,30,l1<bpp≤l2,20,l2<bpp≤l3,10,bpp>l3.]]>这里bpp=R1(1)f×Npixel,]]>Npixel是一帧图像中像素的点数,在QCIF/CIF情况时,这里指定l1=0.15,l2=0.45,l3=0.9,当编码图像的尺寸大于上面的图像尺寸时指定l1=0.6,l2=1.4,l3=2.4。
11.根据权利要求1所述的积分码率控制方法,其特征在于,所述步骤3)中的量化参数对应的量化步长由式Qstept+=error_bitst/kiconst确定,其中t代表P帧或B帧,error_bitst上一个同一类型宏块实际产生的比特数与目标比特数的差值;kiconst积分常数;Qstept编码当前宏块所需的量化步长,其初始值为10,根据编码器的映射规则把量化步长Qstept转化成相应的量化参数QPl,i(j)。
12.根据权利要求10所述的积分码率控制方法,其特征在于,一帧中连续宏块量化参数QPl,i(j)的变化范围由式QPl,i(j)=max{QPl-1,i(j)-DQuant,min{QPl,i(j),QPl-1,i(j)+DQuant}}确定,其中DQuant是量化参数增量,不同编码系统的量化机制是不同的,DQuant的取值一般也是不同,这里取1。
13.根据权利要求1所述的积分码率控制方法,其特征在于,所述步骤3)中的各宏块的量化参数在当前帧已产生的比特数大于或等于当前帧的目标比特数时,由QPl,i(j)=QPl-1,i(j)+DQuant确定。
14.根据权利要求10、11、12所述的积分码率控制方法,其特征在于,最终的量化参数QPl,i(j)由式QPl,i(j)=max{QPMIN,QPt,i(j)-DQP,min{QPMAX,QPt,i(j)+DQP,QPl,i(j)}}确定,其中QPMIN最小量化参数;QPMAX最大量化参数;QPt,i(j)同一类型上一帧的平均量化参数值;DQP当前宏块量化参数可以与同类型上一帧的平均量化参数值的最大差值。
15.根据权利要求10所述的积分码率控制方法,其特征在于,在编码完一个宏块之后,实际产生的比特数与目标比特数的差值由式error_bitst=bl,i(j)-Ti(j)/mb_cn确定,其中bl,i(j)编码当前宏块所产生的比特数;Ti(j)/mb_cn当前宏块的目标比特数;Ti(j)当前帧的目标码率;mb_cn当前视频序列一帧图像所包含的宏块数。
全文摘要
一种低复杂度的积分码率控制的方法。这种方法在适用于传统编码器的同时特别适用于采用率失真技术的编码器。首先,为GOP中各帧分配相应的比特数;然后,根据图像的复杂度为当前GOP内的当前帧分配比特数;再根据积分码率控制技术,求出当前需编码宏块的量化参数。在做相应调整之后,把求得的量化参数返回给率失真优化技术和其他编码部分。其中应用了许多模型,包括全局复杂性估计模型、流体流量阻塞模型、积分码率控制模型等。通过采用这些这些技术,准确的控制了码率的变化,保证了解码图像的视觉质量,同时,取得了非常低的复杂度。
文档编号H04N7/26GK1870753SQ20051007398
公开日2006年11月29日 申请日期2005年5月27日 优先权日2005年5月27日
发明者杜清秀, 尚书林, 卢汉清 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1