一种h263编码中码率的控制方法

文档序号:7617126阅读:267来源:国知局
专利名称:一种h263编码中码率的控制方法
技术领域
本发明涉及编解码技术,尤其涉及一种H263编码中码率的控制方法。
背景技术
随着3G技术的日益成熟,支持的功能日趋丰富完善,多媒体业务是3G的一个亮点,其中视频业务最为人熟知,目前商用或试商用的3G网络都提供了视频业务。3G的多媒体通讯采用的是H324M协议,总带宽为64Kbps,去除音频和H223的头开销,视频实际获得的带宽最多也就48Kbps左右,在如此低的带宽的情况下,如何保证视频的质量成为3G终端和视频多媒体网关以及与之互通的H323、SIP终端共同面对的难点,也是用户和运营商最为关注的焦点之一。H263视频编解码协议是3G终端普遍采用的视频协议之一,在与3G互通的H323、SIP终端中也普遍采用H263协议。
首先,我们了解一下H263码流的基本结构和编码过程。H263的编码图像分为I帧、P帧和B帧三种,其中I帧是帧内编码帧,而后两者是帧间编码帧,帧内编码是对原始视频数据进行编码,而帧间编码是对现在的帧与参考帧之间的差值和运动向量的编码,数据量相对于帧内编码会小很多。每帧图像都被分为许多GOB(Groups Of Blocks,块组),每个GOB又可以分为多个宏块,每个宏块包含四个亮度块和两个空间相关的色差块。如下图所示,对于I帧,首先对每一个块组或宏块进行DCT(discrete cosine transform,离散余弦变换)变换,消除原始图像的空间陨余,然后对每个块组或宏块的DCT后的系数进行量化,将量化后数据进行熵编码,消除码流中的陨余信息,形成H263输出码流,接着对编出来的H263码流进行编码的反过程进行反量化,反DCT变化,经过循环滤波后,得到本帧的缓存帧,作为下一帧的参考帧。对于P帧,首先可以进行运动估计,对每个宏块求出在参考帧中的最佳匹配块,得到一个运动向量,同时求出本块与最佳匹配块的差值。将得到的运动向量和产值作DCT变换,量化,熵编码得到H263输出码流。与I帧相同的过程求出本帧缓存,对于B帧与P帧的过程相似。
压缩视频的观看质量主要受三个因素影响图像源,编码速率和压缩算法。对于给定的压缩算法,图像源所包含的信息越多,需要的比特数就越多。当压缩的目标码率一致时,包含细节多的图像质量下降的就越多。编码速率是另外一种重要的决定重建质量的因素。在有失真编码中,需要在码率和失真之间作一折中,目标码率越低,由于信息丢失导致的缺陷就越严重。对于基于DCT变换的压缩算法,块效应和振铃效应是主要的缺陷。块效应多在图像的平坦区域出现,因为在变换域内DC(Direct current,直流分量)分量体现了该“块”的平均亮度,而这个分量包含了该“块”的大部分能量,所以在平坦区域亮度的变化很小,但在平坦区域如果有亮度的递增或递减,可能会导致DC分量越过相邻量化级的判决门限,造成在重建图像中块边界处出现亮度突变,表现为在平坦区域内出现的“片”状轮廓效应。振铃效应是由于高频分量的粗糙量化造成,当码率较低时,量化步长增大,很多高频分量被量化为0,造成在频域内的锐截止,经过反变换后,沿图像的强边缘,量化噪声表现为振铃效应。如上所述,码率控制策略的优劣直接影响到系统能否正常运作以及图像质量、视觉效果和延时时间等关键问题。怎样合理地综合调动各种对编码性能有影响的手段来达到较高的性能,是系统设计中十分关键的问题。
跳帧是一种码率控制手段,由于图像采集和显示都是以帧为单位的,所以码率控制实际上是控制每帧图像编码后应该产生多少比特。现有技术中,每一帧初始化的目标码率相同,具体计算方法为假设输入到编码器的视频序列为30帧/秒,编码后的目标码率为R比特/秒,则平均每帧图像编码后为R/30比特,但因编码所用的比特数T总是与预期的目标比特数R/30有出入,而缓冲器正好能对这种码率波动起到平均作用。每一帧图像编码后,都要更新缓冲器内的数据量B,更新后B=B′+T-R/30,B′为前一帧图像编码的数据量。如果码率波动较大,出现了B>R/30时,为了使缓冲器不“溢出”,最容易的解决办法就是跳过下一帧,则B=B′-R/30。虽然跳帧可以控制码率,但是频繁的跳帧会造成解码后图像的视觉感不连续。为了避免频繁跳帧,就应该尽可能使编码后比特数尽可能与预期的目标比特数相等,就要有效控制DCT系数的量化步长。在编码过程中,对于某一帧具体的图像及帧类型,一旦确定了量化步长QP,这一帧图像编码后能产生多少比特也就确定了,但是这种确定关系仅限于该帧图像,对于另一帧图像,同样的QP,就不一定能得到同样的比特数了。这是因为最终的编码比特数不仅与QP有关,还与图像内容、或复杂度有关。一个视频序列中,不同的帧有着不同的图像复杂度,从而有着不同的R和QP的对应关系。但它们有着大致的共同点是QP越大,编码比特数越少,图像越复杂,编码比特数越多。那么考虑图像复杂度后,能否在编码比特数与QP之间找到一个广泛适用的函数关系?这个函数关系越准确,码率控制也就越准确,于是在码率控制研究领域,许多研究者提出了各种码率控制方法。
现有技术一GOB级控制,每一帧图像以GOB为单位进行编码。
对于I帧的处理编码过程如前所述,对I帧数据中的每一个GOB,采用固定QP(量化步长,默认为8)进行量化,量化完成后进行编码,编码完成后进行跳帧处理。
对于P帧和B帧的处理编码过程如前所述,对P帧或B帧数据,对每个GOB根据已经编码的所有GOB占用的比特数和每一个GOB的目标比特数,求出下一个GOB的QP值并进行编码,直到把所有GOB处理完成,每编完一帧数据后进行跳帧处理。该方法通过动态调节QP的方法达到接近目标比特数。
跳帧方法每一帧图像编码后,更新缓冲器内的数据量B,更新后B=更新前B+T-R/30,30为默认的输入帧率。如果码率波动较大,出现了B>R/30时,跳过下一帧,更新后B=B′-R/30,如果更新后的B值仍然大于R/30,则继续跳帧,直到B小于R/30。
P帧和B帧编码时,第一个GOB的量化步长和I帧的一致,一般默认为8;除第一个GOB的量化步长以外,第K个GOB的QPk计算方法如下
其中参数含义为M为该帧图像的目标比特数;B_projection为本GOB前期望达到的目标比特数;B_cur为已经编的GOB占用的比特数;N为一帧中GOB的个数;K为正在处理的GOB计数;Δ为实际比特数与目标比特数之间的差值;adj为调整率;B_projection=(K-1)*M/NΔ=B_cur-B_projectionadj=Δ/M计算第K个GOB的参考QPk′QPk′=QPk-1*(1+adj)+0.5;则选择QPkQPk=min(QPk′,31);其中,31为现有协议规定的量化步长的最大值QPmax。
然后,用该QPk对第K个GOB进行量化编码,并更新B_cur;在完成该帧中所有GOB的量化编码后,B′=B_cur。
该技术的缺点是这种实现方案的缺点是在带宽较小(目标码率)时,图像有运动时,图像复杂度较大,QP值较大,如前所述将造成方块效应和振铃效应较明显,图像视觉效果差。
现有技术二宏块级控制,每一帧图像以宏块为单位进行编码。
宏块级控制就是在每帧数据在编码过程中,每个宏块根据已编码的所有宏块实际占用的比特数和每一个宏块的目标比特数求得下一个宏块的量化步长,此量化步长值应该在前一个宏块量化步长的-2到+2差值之间,通过动态调节QP值的方法达到接近目标比特数。
对于I帧的处理编码过程如前所述,所有的宏块按照固定的量化步长,一般默认为8进行量化,量化完成后进行编码,编码完成后进行跳帧处理。
对于P帧和B帧的处理编码过程如前所述,对每个宏块根据已经编出来的比特数计算一个QP值,直到把所有宏块处理完成,完成编码后进行跳帧处理。
跳帧方法每一帧图像编码后,更新缓冲器内的数据量B,更新后B=B′+T-R/30,30为默认的输入帧率。如果码率波动较大,出现了B>R/30时,跳过下一帧,更新后B=B′-R/30,如果更新后的B值仍然大于R/30,则继续跳帧,直到B小于R/30。
P帧和B帧编码时,第一个宏块的量化步长值取默认值8,以第K个宏块的QPk计算方法如下Step1、初始化步骤确定初始化模型参数s1;假设运动向量估计已经被完成,设置σk2为第K块的亮度和色度的方差值(与前一个参考帧的);如果第K个宏块为I(intra),设置σk2=σk2/3.Let i=1and j=0,B~1=B,]]>N1=N,一帧中宏块的个数K=K1=Kprev,and C=C1=Cprev,则初始化模型参数s1,whereαk=2B162N(1-σk)+σk,B162N<0.51,Otherwise]]>s1=Σk=1Nαkσk]]>Step2、根据s1确定第K个宏块的最优量化参数Q值;如果L=(B~i-162NiC)≤0]]>(比特超出范围),设置Qi*=62;]]>否则计算Qi*=162KLσiαiSi]]>Step3、确定第一参考量QPk′QPk′=Q*/2 四舍五入到范围1、2、…、31;确定第二参考量QPk″QPk″=min(QPk′,31)计算差值DQUANT=QPk″-QPk-1,其中QPk-1第K-1个宏块的量化步长;确定QPk当-2≤DQUANT≤2时,QPk=QPk″;反之,QPk=QPk-1+DQUANT。
该技术二的缺点和方案1相同,在带宽较小(目标码率)时,图像有运动时或者图像复杂度较大时,QP值较大,如前所述将造成方块效应和振铃效应较明显,图像视觉效果差。

发明内容
本发明提供一种H263编码中码率的控制方法,以解决现有H263编码中码率控制方法存在的方块效应和振铃效应较明显、图像视觉效果较差的问题。
一种H263编码中码率的控制方法,所述H263编码中的I帧、P帧或B帧图像按照划分的块组或宏块进行块组级或宏块级量化编码,并在完成每一帧图像编码后进行跳帧处理;其特征在于对所述P帧或B帧图像进行量化编码时,限定每一个块组或宏块的量化步长的最大值QPmax小于等于24;进一步,所述QPmax大于等于8。
根据所述方法,在初始化时,所述I帧图像的目标比特数是P帧或B帧图像目标比特数的X倍,所述X大于等于3小于等于14;进一步,所述X大于等于6小于等于12。
所述I帧、P帧或B帧图像初始化的目标比特数按照下列步骤确定a1确定每编一个I帧图像循环的总比特数B_allB_all=Interval*R/F,其中Interval为编一次I帧图像间隔循环的总帧数;R为目标码率;F为目标帧速率;a2确定P帧或B帧图像的目标比特数B_P或B_BB_P=B_B=B_all/(X+Interval-1);a3确定I帧图像的目标比特数B_IB_I=X*B_P。
对所述P帧或B帧图像进行块组级量化编码时,除第一个块组外,确定任意第K个块组量化步长的方法包括下列步骤b1确定第K个块组之前的K-1个块组的目标比特数之和B_projectionB_projection=(K-1)*B_P/N,其中N为该帧图像中包括的块组的总个数;b2确定已经编码的K-1个块组占用的比特数之和B_cur;b3根据第K-1个块组的量化步长QPk-1、所述B_Projection和B_cur确定第K个块组的参考量化步长QPk′
QPk′=QPk-1*(1+(B_cur-B_projection)/B_P)+0.5;b4在所述QPk′和QPmax中选择较小的值作为第K个块组的量化步长QPk。
或者,对所述P帧或B帧图像进行宏块级量化编码时,除第一个宏块外,确定任意第K个宏块量化步长QPk的方法包括下列步骤c1计算初始化模型参数s1;c2根据所述s1确定第K个宏块最优的量化参数Q值;c3根据所述Q值、确定第K个宏块的量化步长的第一参考量QPk′,该QPk′等于Q/2四舍五入的整数;c4在所述QPk′和QPmax中选择较小的值作为第二参考量QPk″;c5计算DQUANT=QPk″-QPk-1,其中QPk-1第K-1个宏块的量化步长;c6根据所述DQUANT确定QPk当-2≤DQUANT≤2时,QPk=QPk″;反之,QPk=QPk-1+DQUANT。
使用本发明所述方法有效地减少了在较低带宽,较复杂图像的方块效应和振铃效应,提高了图像的连续性,具体表现在以下两个方面1、通过限制P帧或B帧量化步长最大值,能够减少量化引起的信息丢失,减少图像的方块效应和振铃效应。
2、通过为I帧与P帧或B帧分配不同的目标比特数,有效减少了跳帧发生,提高了实际帧率。


图1为H263编码流程图。
具体实施例方式
现有技术的两种解决方案中的QPmax都是协议规定的31,而QP值越大,量化越粗糙,产生方块效应和振铃效应越明显,因此限定QPmax会减轻方块效应和振铃效应。实际测试中,图像的质量主要通过观看的主观视觉效果进行判断,在逐步调整QPmax的过程中发现,当QPmax被限定到小于或等于24时,方块效应和振铃效应的发生有了较为明显的减少,图像的主观视觉效果得到改善。因此根据经验值,本发明将QPmax限定在24以内,来达到减轻方块效应和振铃效应的目的,比较好的范围为8到24之间,其中,QPmax较佳的取值应该是10。但是限制了QPmax值后,又会使码率增大,增加了跳帧次数,使图像的实际帧率降低,造成图像不够连贯。为了解决这个问题,本发明根据编码I帧码率比P帧码率大很多的特点,为I帧分配较多的目标比特数,为P帧分配较少的比特数,对I帧分配的目标比特数为P帧的3到14倍,较佳的倍数为6到12倍,根据不断调试发现,取10左右就可以收到很好的技术效果,可以有效的减少跳帧。下面以具体实施例进行详细说明实施例一、GOB级控制基本步骤同现有技术一,主要区别是为I帧分配较多的目标比特率,为P帧分配较少的比特数,根据限定的QPmax确定量化步长。
在初始化步骤中,按照下列步骤分配I帧、P帧或B帧图像的目标比特数a1确定每编一个I帧图像循环的总比特数B_allB_all=Interval*R/F其中Interval为编一次I帧图像间隔循环的总帧数;R为目标码率;F为目标帧速率;a2确定P帧或B帧图像的目标比特数B_P或B_BB_P=B_B=B_all/(X+Interval-1)其中X为设定的倍数a3确定I帧图像的目标比特数B_IB_I=X*B_P跳帧处理其中W为缓冲器的比特数,初始化Buf为0;B′为前一帧图像的比特数;M表示跳帧起始,默认M=B_P(B_P最大缓冲延时);A为目标Buf延时AMsec。默认A=0.1。
当前一帧为I帧时W=max(W+B′-B_I,0)当前一帧为P帧时W=max(W+B′-B_P,0)
按照如下方式进行跳帧处理skip表示为跳帧数,skip=1表示不跳帧。
While(W>M){W=max(W-M,0)skip++}编码器调过skip*G/F-1原始图像帧;下一帧的目标比特数调整为B=B_P-Δ,并且Δ=WF,W>A·MW-A·M,Otherwise]]>以计算第K个GOB的QPk为例说明量化步长的计算过程b1确定第K个块组之前的K-1个块组的目标比特数之和B_projectionB_projection=(K-1)*B_P/N;其中N为该帧图像中包括的块组的总个数;b2确定已经编码的K-1个块组已经占用的比特数B_cur;b3根据第K-1个块组的量化步长QPk-1、所述B_Projection和B_cur确定第K个块组的参考量化步长QPk′;Δ=B_cur-B_rojectionadj=Δ/B_PQPk′=QPk-1*(1+adj)+0.5b4在所述QPk′和QPmax中选择较小的值作为第K个块组的量化步长QPk。
实施例二、宏块级控制基本步骤同现有技术二,主要区别是为I帧分配较多的目标比特数,为P帧分配较少的比特数,根据限定的QPmax确定量化步长。
在初始化步骤中,分配I帧、P帧或B帧图像的目标比特数和跳帧处理方法与实施例一相同。
以第K个宏块的量化步长的计算为例c1计算初始化模型参数s1;如果第K个宏块为I(intra),设置σk2=σk2/3.Let i=1and j=0,B~1=B,]]>N1=N,一帧中宏块的个数K=K1=Kprev,and C=C1=Cprev,则初始化模型参数s1,当αk=2B162N(1-σk)+σk,B162N<0.51,Otherwise]]>时,s1=Σk=1Nαkσk]]>c2根据所述s1确定第K个宏块最优的量化参数Q值;如果L=(B~i-162NiC)≤0]]>(比特超出范围),设置Qi*=62;]]>否则计算Qi*=162KLσiαiSi]]>c3根据所述Q值确定第K个宏块的量化步长的第一参考量QPk′;QPk′=Q*/2 四舍五入为整数c4在所述QPk′和QPmax中选择较小的值作为第二参考量QPk″,即QPk″=min(QPk′,QPmax)c5计算DQUANTDQUANT=QPk″-QPk-1其中QPk-1第K-1个宏块的量化步长;c6根据所述DQUANT确定QPk当-2≤DQUANT≤2时,QPk=QPk″反之,QPk=QPk-1+DQUANT。
使用本发明所述方法有效地减少了较低码率、较复杂图像的方块效应和振铃效应,提高了图像连续效果。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种H263编码中码率的控制方法,所述H263编码中的I帧、P帧或B帧图像按照划分的块组或宏块进行块组级或宏块级量化编码,并在完成每一帧图像编码后进行跳帧处理;其特征在于对所述P帧或B帧图像进行量化编码时,限定每一个块组或宏块的量化步长的最大值QPmax小于等于24。
2.如权利要求1所述的方法,其特征在于所述QPmax大于等于8小于等于24。
3.如权利要求1或2所述的方法,其特征在于在初始化时,所述I帧图像的目标比特数是P帧或B帧图像目标比特数的X倍,所述X大于等于3小于等于14。
4.如权利要求1、2或3所述的方法,其特征在于所述X大于等于6小于等于12。
5.如权利要求4所述的方法,其特征在于,所述I帧、P帧或B帧图像初始化的目标比特数按照下列步骤确定a1确定每编一个I帧图像循环的总比特数B_allB_all=Interval*R/F,其中Interval为编一次I帧图像间隔循环的总帧数;R为目标码率;F为目标帧速率;a2确定P帧或B帧图像的目标比特数B_P或B_BB_P=B_B=B_all/(X+Interval-1);a3确定I帧图像的目标比特数B_IB_I=X*B_P。
6.如权利要求5所述的方法,其特征在于,对所述P帧或B帧图像进行块组级量化编码时,除第一个块组外,确定任意第K个块组量化步长的方法包括下列步骤b1确定第K个块组之前的K-1个块组的目标比特数之和B_projectionB_projection=(K-1)*B_P/N,其中N为该帧图像中包括的块组的总个数;b2确定已经编码的K-1个块组占用的比特数之和B_cur;b3根据第K-1个块组的量化步长QPk-1、所述B_projection和B_cur确定第K个块组的参考量化步长QPk′QPk′=QPk-1*(1+(B_cur-B_projection)/B_P)+0.5;b4在所述QPk′和QPmax中选择较小的值作为第K个块组的量化步长QPk。
7.如权利要求5所述的方法,其特征在于,对所述P帧或B帧图像进行宏块级量化编码时,除第一个宏块外,确定任意第K个宏块量化步长QPk的方法包括下列步骤c1计算初始化模型参数s1;c2根据所述s1确定第K个宏块最优的量化参数Q值;c3根据所述Q值、确定第K个宏块的量化步长的第一参考量QPk′,该QPk′等于Q/2四舍五入的整数;c4在所述QPk′和QPmax中选择较小的值作为第二参考量QPk″;c5计算DQUANT=QPk″-QPk-1,其中QPk-1第K-1个宏块的量化步长;c6根据所述DQUANT确定QPk当-2≤DQUANT≤2时,QPk=QPk″;反之,QPk=QPk-1+DQUANT。
全文摘要
本发明涉及编解码技术,尤其涉及一种H263编码中码率的控制方法,以解决现有H263编码中码率控制方法存在的方块效应和振铃效应较明显、图像视觉效果较差的问题。一种H263编码中码率的控制方法,所述H263编码中的I帧、P帧或B帧图像按照划分的块组或宏块进行块组级或宏块级量化编码,并在完成每一帧图像编码后进行跳帧处理;对所述P帧或B帧图像进行量化编码时,限定每一个块组或宏块的量化步长的最大值QP
文档编号H04N7/26GK1848953SQ20051006347
公开日2006年10月18日 申请日期2005年4月11日 优先权日2005年4月11日
发明者张军, 乔志新, 果云亮, 罗裕辉, 靳彤 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1