一种恒定码率的控制方法

文档序号:7888886阅读:260来源:国知局
专利名称:一种恒定码率的控制方法
技术领域
本发明属于数字音视频的传输控制相关技术领域,特别是涉及一种恒定码率的控制方法。

背景技术
在视频的实时通信中,码流需要在不同带宽的网络上进行传输。为了在保证相对较高的视频图像质量的同时,尽可能的提高网络资源的利用率,就对视频流的传输码率的控制提出了需求。目前的码率控制技术就是通过不停地调整编码参数来控制缓冲区中比特的占有度,使其尽量达到稳定,不出现上溢和下溢的情况;同时在保证缓冲比特占有度稳定的前提下,尽量保证图像质量的稳定。在各种视频压缩标准中,码率控制一直扮演着非常重要的角色,例如MPEG2的TM5,H.263的TMN8等。然而在最新的视频标准,如H.264/MPEG-4 AVC和AVS中,由于采用了很多全新的编码技术,以前的很多码率控制算法已经不能应用在新的编码标准中。


发明内容
本发明的目的在于提供一种恒定码率的控制方法,所述码率控制方法通过对每个图像组(GOP)为单位进行恒定码率控制。所述方法不仅控制精度高,输出的码流波动小,而且编码主观图像质量好,同时计算复杂度低,适合各种软件和硬件编码的应用。
本发明的目的是这样实现的一种恒定码率的控制方法,所述方法基于调节视频图像码流的量化参数值来实现码率控制,所述码流包括I帧、P帧和B帧,具体步骤如下 步骤1、把视频图像划分成若干个图像组GOP,每个GOP是一组时间上连续的图像,其目标比特数记为Bitgop,上式中NP和 NB分别为每个GOP中的B帧和P帧图像的帧数,R为信道目标传输码率,F为输出帧率,Bitless为上一个GOP编码后剩余的比特数,Bitless的初始值为0; 步骤2、实现帧级码率控制,其进一步包括 步骤2.1、计算当前B帧或P帧能够得到的比特数为Bitcur_pic=λcur×(Bitgop-Bitcur_gop_used),上式中Bitcur_gop_used为当前GOP已经使用的比特数,λcur是当前图像的加权系数,根据当前图像B帧或P帧的复杂度进行计算; 步骤2.2、分别计算每帧中第i个P帧或B帧的量化参数QPP_i或QPB_i,i=1,2,3......; 步骤2.2.1、计算QPP_i n=1,2,...,L0-1 上式中,α为当前帧的编码比特Bitcur_pic与参考帧的编码比特Bitref_pic的比,即QPref为P帧的参考帧的量化参数,L0为GOP的长度,η为经验值,一般取1.8; 步骤2.2.2、计算QPB_i 用L表示I帧与P帧之间或P帧与P帧之间包含的B帧数量,设B帧参考的两帧图像的量化参数分别为QP1和QP2; 则当L大于1时,设定GOP中的第1个I帧的QP和第1个P帧的QP值均为QP1,则 QPB_1=QP1+Δ; Δ是QPB_1与QP1的差,Δ取值如下
当L等于1时,QPB_i=QP1+2; 步骤2.3、根据每一帧的量化参数,重新对每一帧进行编码,直至帧结束;若帧未结束,则跳到步骤1; 步骤3、实现宏块级码率控制,其进一步包括 步骤3.1、计算宏块的平均绝对量化失真MAQD,记为MAQDMB, 上式中,Ci为宏块的残差DCT变换后的第i个DCT系数,N为一个宏块包含的像素个数,β是实验值,一般取0.98,step是宏块的量化步长; 步骤3.2、计算当前宏块的平均绝对量化失真,记为MAQDMB_cur,由当前宏块左边相邻宏块的MAQD和参考帧的相应位置的宏块的MAQD加权得到,左边相邻宏块和参考帧的相应位置的宏块的MAQD分别记为MAQDMB_left和MAQDMB_ref,则
步骤3.3、计算当前宏块的目标比特,记为BitMB_cur, 上式中,θ是实验值,由宏块类型和帧类型确定;N是当前帧包含的宏块数目,一般可取0.93;Bitcur_pic为当前帧分配的比特;AVG(MAQD)是当前已经编码的宏块的MAQD的算术平均; 步骤3.4、计算当前宏块的量化参数,记为QPMB_cur, QPMB_cur=λ×QPMB_prev+ΔQP 上式中,λ表示当前宏块的编码比特BitMB_cur与相邻的已经编码宏块的编码比特的平均值AVG(BitMB)的比,计算公式为其中 BitMB_left、BitMB_upleft、BitMB_up和BitMB_upright分别是待编码宏块的左边、上左边、上边和上右边相邻已经编码宏块的比特;iMB_left、iMB_upleft、iMB_up、iMB_upright的取值如下确定



QPMB_prev为当前编码宏块前一个已经编码的宏块的量化参数;ΔQP为量化参数的调整量,ΔQP取值由ω的范围确定,
步骤3.5、根据宏块级的ΔQP调整量化参数,完成当前宏块的编码; 步骤3.6、判断当前图像所有宏块编码是否完成,若宏块编码已完成,则跳到步骤2;若宏块编码未完成,则跳到步骤3.1; 步骤4、根据步骤2更新当前图像的编码量化参数,完成当前帧编码;判断当前图像组GOP中所有的帧图像的帧编码是否完成,若果已完成,则继续步骤5,否则,更新Bitless,跳到步骤2.1; 步骤5、如果当前图像的所有图像组的编码均已完成,则结束,否则跳到步骤1。
本发明由于采用了上述的技术方案,与现有技术相比,不仅控制精度高,输出的码流波动小,而且编码主观图像质量好,计算复杂度低,适合各种软件和硬件的应用。

具体实施例方式 以下将对本发明的恒定码率的控制方法作进一步的详细描述。
本实施例要求对包含一个I帧,4个P帧,11个B帧的图像进行编码和传输码率控制,图像大小为352×288,划分为16个图像组(GOP),目标帧率为400Kbps。本发明提供了一种恒定码率的控制方法,所述方法基于调节量化参数QB值来实现,具体实现步骤如下 步骤1、把视频图像按时间上的连续划分成若干个GOP,每个GOP的目标比特数记为Bitgop,上式中NP和NB分别为每个图像组GOP中的B帧和P帧图像的帧数,R为信道目标传输码率,F为输出帧率,Bitless为上一个GOP编码后剩余的比特数,Bitless的初始值为0; 步骤2、实现帧级码率控制; 步骤2.1、计算当前B帧或P帧能够得到的比特数为Bitcur_pic=λcur×(Bitgop-Bitcur_gop_used),上式中Bitcur_gop_used为当前GOP已经使用的比特数,λcur是当前图像的加权系数,根据当前图像B帧或P帧的复杂度进行计算;设当前GOP得到的码率为Bitgop=400kbps,I帧使用的比特数BitI=95824bit,P帧使用的比特数BitP=23832bit,接后面的2个B帧使用的比特数分别为8488bit,12928bit,这样Bitcur_gop_used=258928bit,Bitgop-Bitcur_gop_used=141072bit,对P帧进行计算,λcur取0.13,则P帧的Bitcur_pic=18339bit;对B帧进行计算,λcur取0.05,则B帧的Bitcur_pic=7053bit。
步骤2.2、分别计算每帧中第i个P帧或B帧的量化参数QPP_i或QPB_i,i=1,2,3......; 步骤2.2.1、计算QPP_i n=1,2,...,L0-1 上式中,α为当前帧的编码比特Bitcur_pic与参考帧的编码比特为Bitref_pic的比,假如已知Bitref_pic=23832bit,则QPref为P帧的参考帧的量化参数,即为上一个参考帧的平均量化参数,可知QPref=36,L0为GOP的长度为16,η为经验值,一般取1.8;对下一个P帧n=2,可计算QPP_i=29.24。
步骤2.2.2、计算QPB_i 用L表示I帧与P帧之间或P帧与P帧之间包含的B帧数量,设B帧参考的两帧图像的量化参数分别为QP1和QP2,根据以上计算可得B帧的2个参考帧QP1=36,QP2=29.24,则QP2-QP1=-6.76;在本实施例中,L=2,根据Δ取值,即
可得Δ=2, 步骤2.3、根据每一帧的量化参数,重新对每一帧进行编码,直至帧结束;若帧未结束,则跳到步骤1; 步骤3、实现宏块级码率控制; 步骤3.1、计算宏块的平均绝对量化失真(MAQD,Mean Absolute QuantizedDistortion),记为MAQDMB, 上式中,Ci为宏块的残差DCT变换后的第i个DCT系数,N为一个宏块包含的像素个数,β是实验值,一般取0.98,step是宏块的量化步长; 步骤3.2、计算当前宏块的平均绝对量化失真,记为MAQDMB_cur,由当前宏块左边相邻宏块的MAQD和参考帧的相应位置的宏块的MAQD加权得到,左边相邻宏块和参考帧的相应位置的宏块的MAQD分别记为MAQDMB_left和MAQDMB_ref,则
步骤3.3、计算当前宏块的目标比特,记为BitMB_cur, 上式中,θ是实验值,由宏块类型和帧类型确定,本实施例取0.93; 对于P帧,Bitcur_pic=18339bit,N=352×288/16=6336,对P帧的一个宏块,左边的宏块存在,MAQDMB_left=2.1,MAQDMB_ref=1.9,MAQDMB_cur=3.5,AVG(MAQD)=2.9,则BitMB_cur=3.2; 对于B帧,Bitcur_pic=7053bit,N=352×288/16=6336,对B帧的一个宏块,左边的宏块存在,MAQDMB_left=1.1,MAQDMB_ref=1.9,MAQDMB_cur=1.1,AVG(MAQD)=1.09,则BitMB_cur=1.04。
步骤3.4、计算当前宏块的量化参数,记为QPMB_cur, QPMB_cur=λ×QPMB_prev+ΔQP 上式中,λ表示当前宏块的编码比特BitMB_cur与相邻的已经编码宏块的编码比特的平均值AVG(BitMB)的比,计算公式为其中 对于P帧QPMB_prev=32,ω=3.5/2.9=1.2,ΔQP=-1,iMB_left不存在,iMB_upleft、iMB_up和iMB_upright存在,则iMB_left=0、iMB_upleft=1、iMB_up=1、iMB_upright=1,BitMB_lefe=0,BitMB_upleft=3.5,BitMB_up=2.9,BitMB_upright=2.0,AVG(BitMB)=(3.5+2.9+2)/3=2.8,则QPMB_cur=λ×QPMB_prev+ΔQP=1.14×32-1=35.6; 对于B帧QPMB_prev=35,ω=1.1/1.09=1.0,ΔQP=-1,iMB_left、iMB_upleft、iMB_up和iMB_upright存在,则iMB_left=1、iMB_upleft=1、iMB_up=1、iMB_upright=1,BitMB_left=3.1,BitMB_upleft=3.3,BitMB_up=3.6,BitMB_upright=2.8,AVG(BitMB)=(3.1+3.3+3.6+2.8)/4=3.2,则QPMB_cur=λ×QPMB_prev+ΔQP=0.38×36-1=12.5; 步骤3.5、根据宏块级的ΔQP调整量化参数,完成当前宏块的编码; 步骤3.6、判断当前图像所有宏块编码是否完成,若宏块编码已完成,则跳到步骤2;若宏块编码未完成,则跳到步骤3.1; 步骤4、根据步骤2更新当前图像的编码量化参数,完成当前帧编码;判断当前图像组GOP中所有的帧图像的帧编码是否完成,若果已完成,则继续步骤5,否则,更新Bitless,跳到步骤2.1; 步骤5、如果当前图像的所有图像组的编码均已完成,则结束,否则跳到步骤1。
实施例编码结果表明,本发明所述的恒定码率控制方法不仅具有控制精度高,输出的码流波动小的优点,而且编码主观图像质量好,同时计算复杂度低。
权利要求
1.一种恒定码率的控制方法,所述方法基于调节视频图像码流的量化参数值来实现码率控制,所述码流包括I帧、P帧和B帧,其特征在于,所述码率控制方法通过以下步骤实现
步骤1、把视频图像划分成若干个图像组GOP,每个GOP是一组时间上连续的图像,其目标比特数记为Bitgop,上式中NP和NB分别为每个GOP中的B帧和P帧图像的帧数,R为信道目标传输码率,F为输出帧率,Bitless为上一个GOP编码后剩余的比特数,Bitless的初始值为0;
步骤2、实现帧级码率控制,其进一步包括
步骤2.1、计算当前B帧或P帧能够得到的比特数为Bitcur_pic=λcur×(Bitgop-Bitcur_gop_used),上式中Bitcur_gop_used为当前GOP已经使用的比特数,λcur是当前图像的加权系数,根据当前图像B帧或P帧的复杂度进行计算;
步骤2.2、分别计算每帧中第i个P帧或B帧的量化参数QPP_i或QPB_i,i=1,2,3......;
步骤2.2.1、计算QPP_i
n=1,2,...,L0-1
上式中,α为当前帧的编码比特Bitcur_pic与参考帧的编码比特Bitref_pic的比,即QPref为P帧的参考帧的量化参数,L0为GOP的长度,η为经验值,一般取1.8;
步骤2.2.2、计算QPB_i
用L表示I帧与P帧之间或P帧与P帧之间包含的B帧数量,设B帧参考的两帧图像的量化参数分别为QP1和QP2;
则当L大于1时,设定GOP中的第1个I帧的QP和第1个P帧的QP值均为QP1,则
QPB_1=QP1+Δ;
Δ是QPB_1与QP1的差,Δ取值如下
当L等于1时,QPB_i=QP1+2;
步骤2.3、根据每一帧的量化参数,重新对每一帧进行编码,直至帧结束;若帧未结束,则跳到步骤1;
步骤3、实现宏块级码率控制,其进一步包括
步骤3.1、计算宏块的平均绝对量化失真MAQD,记为MAQDMB,
上式中,Ci为宏块的残差DCT变换后的第i个DCT系数,N为一个宏块包含的像素个数,β是实验值,一般取0.98,step是宏块的量化步长;
步骤3.2、计算当前宏块的平均绝对量化失真,记为MAQDMB_cur,由当前宏块左边相邻宏块的MAQD和参考帧的相应位置的宏块的MAQD加权得到,左边相邻宏块和参考帧的相应位置的宏块的MAQD分别记为MAQDMB_left和MAQDMB_ref,则
步骤3.3、计算当前宏块的目标比特,记为BitMB_cur,
上式中,θ是实验值,由宏块类型和帧类型确定;N是当前帧包含的宏块数目,一般可取0.93;Bitcur_pic为当前帧分配的比特;AVG(MAQD)是当前已经编码的宏块的MAQD的算术平均;
步骤3.4、计算当前宏块的量化参数,记为QPMB_cur,
QPMB_cur=λ×QPMB_prev+ΔQP
上式中,λ表示当前宏块的编码比特BitMB_cur与相邻的已经编码宏块的编码比特的平均值AVG(BitMB)的比,计算公式为其中
BitMB_left、BitMB_upleft、BitMB_up和BitMB_upright分别是待编码宏块的左边、上左边、上边和上右边相邻已经编码宏块的比特;iMB_left、iMB_upleft、iMB_up、iMB_upright的取值如下确定
QPMB_prev为当前编码宏块前一个已经编码的宏块的量化参数;ΔQP为量化参数的调整量,ΔQP取值由ω的范围确定,
步骤3.5、根据宏块级的ΔQP调整量化参数,完成当前宏块的编码;
步骤3.6、判断当前图像所有宏块编码是否完成,若宏块编码已完成,则跳到步骤2;若宏块编码未完成,则跳到步骤3.1;
步骤4、根据步骤2更新当前图像的编码量化参数,完成当前帧编码;判断当前图像组GOP中所有的帧图像的帧编码是否完成,若果已完成,则继续步骤5,否则,更新Bitless,跳到步骤2.1;
步骤5、如果当前图像的所有图像组的编码均已完成,则结束,否则跳到步骤1。
全文摘要
本发明提供了一种恒定码率的控制方法,所述方法把当前图像划分成若干个图像组,对每个图像组采用帧级码率控制和宏块级码率控制来对图像进行编码。本发明提供的恒定码率控制方法,控制精度高,输出的码流波动小,而且编码主观图像质量好,计算复杂度很低,适合各种软件和硬件编码的应用。
文档编号H04N7/26GK101184239SQ20071017227
公开日2008年5月21日 申请日期2007年12月13日 优先权日2007年12月13日
发明者许昌满, 李国平 申请人:上海广电(集团)有限公司中央研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1