H.264/avc视频编码中速率和失真的快速估计方法

文档序号:7647262阅读:203来源:国知局
专利名称:H.264/avc视频编码中速率和失真的快速估计方法
技术领域
本发明属于视频压缩编码技术领域,针对H.264/AVC视频编码标准,提出了一种新的速率和失真快速估计方法,有效提高了率失真意义下宏块编码模式选择的速度,适用于新一代视频压缩编码。
背景技术
在最新的视频编码标准H.264/AVC中,提出了多种编码模式以提高编码效率,包括16×16、16×8、8×16、8×8、8×4、4×8、4×4等7种块大小的帧间编码模式和4×4块的9种、16×16块的4种帧内编码模式等等。对于每个宏块(macroblock,MB),需要选择其最合适的编码模式。选择的标准是在各种编码模式下编码该宏块的率失真性能。在H.264/AVC的参考软件JM中,计算速率R和失真D,需要针对每种编码模式,进行变换和量化,之后进行编码计算相应的速率;然后,完成反量化和逆变换,计算相应的失真。这些操作带来了很大的复杂度,使得率失真优化的编码模式选择在实际应用中在运算复杂度方面的代价较大。
为了降低率失真优化的复杂度,Quqi Chen等提出了一种针对H.264/AVC 4×4 CAVLC编码的快速速率估计算法。该算法根据变换系数量化后的值的绝对值和(SAD),非零系数数目(TotalCoeff)以及零游程之和(TotalRun),利用一个简单公式R=SAD+3×TotalCoeff+TotalRun估计编码速率。对于一些特殊情况,引入了一系列修正步骤进行调整。其研究结果表明,该速率估计算法能够提供很高的预测精度,基本保持率失真优化模式选择的性能,并且大大降低了速率计算的复杂度。
然而,上述研究没有给出对失真的估计算法。因此,反量化和逆变换的过程仍不可避免。另一方面,上述速率估计算法对于不同的视频序列在不同的编码条件下是固定的,没有提出自适应的方法。

发明内容
本发明针对H.264/AVC编码中的变换和量化,提出了一种速率和失真的快速估计方法。利用该方法,可以在率失真计算中省去反量化和逆变换,从而大幅度降低率失真优化模式选择的计算量。
本发明提出的快速率失真估计方法包括以下步骤(1)针对每一种备选编码模式,对当前编码宏块进行运动估计,可采用H.264/AVC标准中规定的全搜索或快速搜索的方法进行;得到残差信号Sres=|Sorig-Sref|,Sorig为原始编码块信号,Sref为运动估计所确定的参考块信号;(2)在每一种编码模式下,对步骤(1)中得到的亮度残差信号Sres分别进行8×8和4×4整数变换,整数变换采用H.264/AVC标准中规定的方法,公式为X=CfSresCfT,]]>X为变换后的系数矩阵,Cf为标准中规定的变换矩阵;对变换后的系数X按照H.264/AVC标准中规定的方法进行量化,得到量化后的系数矩阵Y;(3)根据步骤(2)中得到变换系数矩阵X和量化系数矩阵Y来估计失真D,针对Y(i,j)是否为零采取不同的失真估计方法如果量化系数Y(i,j)为0,那么失真D就等于量化误差,在变化域中即为X2(i,j)/W(i,j),其中(i,j)表示像素点的位置,W(i,j)为系数在各变换域位置的能量增益,对于8×8和4×4变换,对应的增益矩阵分别为19173017191730171715271517152715302748273027482717152715171527151917301719173017171527151715271530274827302748271715271517152715]]>和75307530301230127530753030123012;]]>如果量化系数Y(i,j)不为0,那么根据均匀标量量化理论,失真D估算为量化步长Δ平方值的函数Δ2/12;总体的失真D即为D=Σ{i,j|Y(i,j)=0}X2(i,j)/W(i,j)+Σ{i,j|Y(i,j)≠0}Δ2/12;]]>(4)根据步骤(2)中得到的量化系数矩阵Y估计速率R,具体方法为针对每个4×4变换块,若采用的是8×8的整型变换,则分解成4个4×4的块,再对每个4×4块量化后的系数按照标准的方法进行游程扫描,扫描顺序的一个实例如附图2所示;扫描后首先得到所有非零系数数目TC;接着得到每一个非零系数所对应的零游程值,即该非零系数前面0的个数,并计算所有这些零游程值之和TR;再计算非零系数的绝对值和SAD=Σ{i,j|Y(i,j)≠0}|Y(i,j)|;]]>根据此三个参数估计编码速率R=SAD+(f(TC,TR)/24),其中查找表函数f(TC,TR)度量了TC与TR对速率的影响,对于4×4变换块有0≤TC≤16,0≤TR≤16-TC,该查找表的结构如附图3所示,共有17(17+1)/2=136项,表内的数据为其初始值,设定为f0(TC,TR)=3×TC+TR;(5)针对步骤(2)中得到的亮度信号残差变换系数X和量化系数Y,采取步骤(3)和步骤(4)的计算方法,分别对8×8和4×4两种整数变换得到的速率R和失真D进行估计,并根据C=D+λR计算相应的对亮度信号残差系数的编码代价C,其中λ=0.85×2QP-123,]]>QP为量化参数;(6)对于每种编码模式,比较步骤(5)中分别采用8×8和4×4两种整数变换对于亮度残差信号的编码代价C,选取编码代价C较小的作为当前编码模式的最优变换,该模式的亮度残差信号R的编码代价C即为二者中的较小值;(7)步骤(6)得到了亮度残差信号的最优变换和编码代价C;下面按照步骤(2)(3)(4)(5)重新计算色度残差信号的编码代价C′(色度信号只采用4×4整型变换);再结合相应的预测信息编码代价C″=λRpre,其中Rpre为当前预测信息的编码码率,λ同步骤(5),若当前的原始预测信息为code_num,采用对数哥伦布码编码,其编码码字为[M zeros][1][INFO],且M=log2(code_num+1),INFO=code_num+1-2M,为下取整,预测信息的编码速率为Rpre=2M+1;三者之和得到每种编码模式的最终编码代价Ctol=C+C′+C″;(8)选择最终编码代价Ctol最小的模式对该宏块进行编码,得到实际的输出的码流为Rreal比特,下面更新步骤(4)中的速率估计的查找表f(TC,TR),更新的方法如下若当前实际输出的码流为Rreal比特,如果Rreal-SAD≤0则不更新;如果Rreal-SAD>0,则f(TC,TR)查找表中对应于TC、TR的项更新为f(TC,TR)+δR,其中δR={((Rreal-SAD)×24)-f(TC,TR)+23}/24;(9)重新返回步骤(1)编码下一个宏块。
步骤(3)中,对失真准确估计的关键在于根据变换系数是否被量化为零采取不同的失真估计方法。对于被量化为零的系数,能够快速的计算其准确的失真值;而对于非零量化系数,根据均匀量化的失真理论,可以快速计算其估计值。对于采取了运动预测/补偿技术的视频编码框架中,有很大部分的变换系数被量化为零,其相应的失真能够被准确计算;而对于非零量化系数,基于量化理论的预测值也能够逼近实际失真。因此,所提出的失真估计算法能够达到很高的精度。
步骤(4)中,对编码速率的估计根据每个块系数经过量化、游程扫描之后的非零系数绝对值之和、非零系数数目及游程之和决定。与Quqi Chen等人所提出的方法不同之处在于,本算法利用一个查找表来反映非零量化数目及游程值之和对速率的影响。引入了查表函数和逐块更新来跟踪视频内容的变化,并根据低通滤波的原理定义更新方法。一方面免除了对特殊情况所作的修正,同时也能提供对不同序列及编码条件的自适应。这种方法简单易行,能够适应不同序列的实际编码特性,并由于H.264/AVC中的CAVLC编码基于4×4块,因此查找表所占用的空间很有限,仅需136个查找表项的空间。
本发明的特点及技术效果本发明针对H.264/AVC中的整数变换和量化机制,但是也可以扩展到其它采用整数变换的新一代视频编码标准,如AVS。本发明的特点是实现简单,同时又能对速率和失真进行准确的估计。所提出的算法只保留了保证准确估计所必需的计算,即变换和量化,而省略了反量化和逆变换等不必要的运算步骤。本发明所需要的额外存储空间很小,能够同时适用于H.264/AVC在PC机上的软件实现,在DSP上的实现以及基于ASIC的定制实现。
本发明能够以很低的代价实现对宏块编码模式以及变换块大小在率失真意义上的最优选择。基于H.264/AVC参考软件JM10.1的测试表明,对于各种测试序列和编码条件,基于本发明率失真估计的编码模式和变换块大小选择,其编码效率相对于基于实际率失真计算的最优算法,相同码率下,重建峰值信噪比(PSNR)下降在0.1dB以内,而计算量降低了30%~70%。
说明书附1为本发明提出的H.264/AVC视频编码中速率和失真的快速估计方法的总体框图。
图2为本方法进行速率估计时采用的游程扫描的示例图。
图3为本方法进行速率估计时采用的查找表的示例图。
具体实施例方式
本发明提出的速率失真估计算法及其在编码模式、变换块大小中的应用结合附图及实施例进一步说明如下。
本发明如附

图1所示,包括以下步骤(1)针对每一种备选编码模式,对当前编码宏块进行运动估计,可采用H.264/AVC标准中规定的全搜索或快速搜索的方法进行;得到残差信号Sres=|Sorig-Sref|,Sorig为原始编码块信号,Sref为运动估计所确定的参考块信号;(2)在每一种编码模式下,对步骤(1)中得到的亮度残差信号Sres分别进行8×8和4×4整数变换,整数变换采用H.264/AVC标准中规定的方法,公式为X=CfSresCfT,]]>X为变换后的系数矩阵,Cf为标准中规定的变换矩阵;对变换后的系数X按照H.264/AVC标准中规定的方法进行量化,得到量化后的系数矩阵Y;(3)根据步骤(2)中得到变换系数矩阵X和量化系数矩阵Y来估计失真D,针对Y(i,j)是否为零采取不同的失真估计方法如果量化系数Y(i,j)为0,那么失真D就等于量化误差,在变化域中即为X2(i,j)/W(i,j),其中(i,j)表示像素点的位置,W(i,j)为系数在各变换域位置的能量增益,对于8×8和4×4变换,对应的增益矩阵分别为19173017191730171715271517152715302748273027482717152715171527151917301719173017171527151715271530274827302748271715271517152715]]>和75307530301230127530753030123012;]]>如果量化系数Y(i,j)不为0,那么根据均匀标量量化理论,失真D估算为量化步长Δ平方值的函数Δ2/12;总体的失真D即为D=Σ{i,j|Y(i,j)=0}X2(i,j)/W(i,j)+Σ{i,j|Y(i,j)≠0}Δ2/12;]]>(4)根据步骤(2)中得到的量化系数矩阵Y估计速率R,具体方法为针对每个4×4变换块,若采用的是8×8的整型变换,则分解成4个4×4的块,再对每个4×4块量化后的系数按照H.264/AVC标准规定的方法进行游程扫描,扫描顺序的一个实例如附图2所示;扫描后首先得到所有非零系数数目TC;接着得到每一个非零系数所对应的零游程值,即该非零系数前面0的个数,并计算所有这些零游程值之和TR;再计算非零系数的绝对值和SAD=Σ{i,j|Y(i,j)≠0}|Y(i,j)|;]]>根据此三个参数估计编码速率R=SAD+(f(TC,TR)/24),其中查找表函数f(TC,TR)度量了TC与TR对速率的影响,对于4×4变换块有0≤TC≤16,0≤TR≤16-TC,该查找表的结构如附图3所示,共有17(17+1)/2=136项,表内的数据为其初始值,设定为f0(TC,TR)=3×TC+TR;(5)针对步骤(2)中得到的亮度信号残差变换系数X和量化系数Y,采取步骤(3)和步骤(4)的计算方法,分别对8×8和4×4两种整数变换得到的速率R和失真D进行估计,并根据C=D+λR计算相应的对亮度信号残差系数的编码代价C,其中λ=0.85×2QP-123,]]>QP为量化参数;(6)对于每种编码模式,比较步骤(5)中分别采用8×8和4×4两种整数变换对于亮度残差信号的编码代价C,选取编码代价C较小的作为当前编码模式的最优变换,该模式的亮度残差信号R的编码代价C即为二者中的较小值;(7)步骤(6)得到了亮度残差信号的最优变换和编码代价C;下面按照步骤(2)(3)(4)(5)重新计算色度残差信号的编码代价C′(色度信号只采用4×4整型变换);再结合相应的预测信息编码代价C″=λRpre,其中Rpre为当前预测信息的编码码率,λ同步骤(5),若当前的原始预测信息为code_num,采用对数哥伦布码编码,其编码码字为[M zeros][1][INFO],且M=log2(code_num+1),INFO=code_num+1-2M,为下取整,预测信息的编码速率为Rpre=2M+1;三者之和得到每种编码模式的最终编码代价Ctol=C+C′+C″;(8)选择最终编码代价Ctol最小的模式对该宏块进行编码,得到实际的输出的码流为Rreal比特,下面更新步骤(4)中的速率估计的查找表f(TC,TR),更新的方法如下若当前实际输出的码流为Rreal比特,如果Rreal-SAD≤0则不更新;如果Rreal-SAD>0,则f(TC,TR)查找表中对应于TC、TR的项更新为f(TC,TR)+δR,其中δR={((Rreal-SAD)×24)-f(TC,TR)+23}/24;(9)重新返回步骤(1)编码下一个宏块。
本发明上述步骤的具体实施例分别详细说明如下上述步骤(1)中的运动估计和残差计算对于每种编码模式进行,包括采用16×16、16×8、8×16、8×8、8×4、4×8、4×4等7种块大小的帧间编码模式,4×4块的9种、16×16块的4种帧内编码模式等等。采用H.264/AVC标准中规定的全搜索或快速搜索的方法,即对于当前编码宏块Sorig,在当前帧或参考帧内搜索其参考宏块Sref,使得残差信号R=|Sorig-Sref|达到最小值。
上述步骤(2)的实施例为对亮度残差信号R分别进行8×8和4×4整数变换,公式为X=CfRCfT,]]>其中Cf为标准中规定的变换矩阵,对于8×8和4×4整数变换的Cf分别为88888888121063-3-6-10-1284-4-8-8-44810-3-12-66123-108-8-888-8-886-1231010-312-64-88-4-48-843-610-1212106-3]]>和111121-1-21-1-111-22-1]]>并且对于变换后的系数X分别为X8(i,j),0≤i<8,0≤j<8和X4(i,j),0≤i<4,0≤j<4。然后对变换后的系数进行相应的量化,量化根据H.264/AVC的标准方法即Y=X.round(PF/Δ)。其中PF由位置(i,j)决定。Δ为量化参数QP所对应的量化步长,可以根据标准量化参数和步长的关系计算获得,如下表所示。量化后的系数为Y8(i,j),0≤i<8,0≤j<8和Y4(i,j),0≤i<4,0≤j<4。

上述步骤(3)的实施例为根据变换系数X和相应的量化系数Y估计两种变换对应的失真。由于采取正交了整数变换,相应的量化失真如果在变换域计算,需要进行相应的补偿。
上述步骤(4)的具体实施例为若采用的是8×8的整数变换,按照标准的编码方式分解成4个4×4的块,再对每个4×4块量化后的系数进行游程扫描,对于4×4块游程扫描的顺序,附图2给出一个实例,扫描后的顺序为0、3、0、1、-1、-1、0、1、0...,因此TC=5,TR=3。
上述步骤(5)的具体实施例为λ为拉格朗日加权因子,反应速率和失真的折衷关系,其值与量化参数QP相关,具体关系为λ=0.85×2QP-123.]]>上述步骤(6)的具体实施例为由于在H.264/AVC中,8×8变换只用于亮度信号,为此根据编码代价最小的原则对亮度信号自适应选取8×8或4×4的整形变换,而对于色度信号,则统一采用4×4的整形变换。
上述步骤(7)的具体实施例为最终编码代价由亮度残差信号的编码代价、色度残差信号的编码代价、预测信息的编码代价(包括对编码模式、参考帧索引、运动矢量信息进行编码所需要的速率)三部分组成。在采用变长码时,预测信息的编码基于对数哥伦布码(Exp-Golomb),相应的速率由H.264/AVC标准给出。
上述步骤(8)的具体实施例为对速率估计查找表f(TC,TR)的更新采取低通滤波的方式,如附图3所示,表中的数据为初始值,更新后的数据再次填入表中,更新使得速率R的估计与视频内容更好的自适应。
权利要求
1.H.264/AVC视频编码中速率和失真的快速估计方法,其特征在于,所述方法是在PC机中依次按以下步骤实现的步骤(1)针对H.264/AVC视频编码中的每一种备选编码模式,采用H.264/AVC标准中规定的全搜索或快速搜索的方法对当前编码宏块Sorig进行运动估计,得到亮度残差信号Sres=|Sorig-Sref|,Sref为在当前帧或参考帧内由运动估计所确定的参考块;步骤(2)在每一种编码模式下,对步骤(1)得到的亮度残差信号Sref按下式分别进行8×8和4×4整数变换X=CfSresCfT,]]>其中Cf为H.264/AVC标准中规定的变换矩阵,对于8×8和4×4整数变换的Cf分别为88888888121063-3-6-10-1284-4-8-8-44810-3-12-66123-108-8888-8-886-128-4-48-8-34-88-4-48-843-610-1212106-3]]>和111121-1-21-1-111-22-1]]>X为变换后的系数矩阵;其次,对于变换后的系数X按照H.264/AVC标准中规定的下述公式进行量化,得到量化后的系数矩阵Y,Y=X.round(PF/Δ),其中Δ为量化参数QP所对应的量化步长,从标准规定的QP-Δ对应表中得到,PF为位置(i,j)所对应的参数,从标准规定的PF-位置对应表中得到,round为取整符号;步骤(3)根据步骤(2)中得到的变换系数矩阵X和量化系数矩阵Y来估计失真D若量化系数Y(i,j)为0,则失真D1=X2(i,j)/W(i,j),其中W(i,j)为系数X在各变换域各个位置的能量增益,对于8×8和4×4整数变换,对应的能量增益矩阵分别为19173017191730171715271517152715302748273027482717152715171527151917301719173017171527151715271530274827302748271715271517152715]]>和75307530301230127530753030123012;]]>若量化系数Y(i,j)不为0,则失真D2估算Δ2/12;那么总体失真D=Σ{i,j|y(i,j)=0}X2(i,j)/W(i,j)+Σ{i,j|y(i,j)≠0}Δ2/12;]]>步骤(4)根据步骤(2)得到的量化系数矩阵Y估计速率R,其步骤如下首先,若采用的是8×8的整型变换,按照H.264/AVC标准的编码方式分解成4个4×4的块,再对每个4×4块量化后的系数按照标准中所述的顺序进行游程扫描;先得到所有非零系数的数目TC,接着得到每一个非零系数所对应的零游程值,即该非零系数前面0的个数,并计算所有这些零游程值之和TR,再计算非零系数的绝对值和SAD=Σ{i,j|Y(i,j)≠0}|Y(i,j)|;]]>其次,计算编码速率R=SAD+(f(TC,TR)/24),其中f(TC,TR)是设定的查找表函数,度量了TC与TR对编码速率R的影响,对于4×4块,0≤TC≤16,0≤TR≤(16-TC),该查找表共有17(17+1)/2=136项,其初始值设定为f0(TC,TR)=3×TC+TR;步骤(5)根据步骤(2)中得到的亮度残差信号变换系数X和量化系数Y,采取步骤(3)和步骤(4)所述的计算方法,分别对8×8和4×4两种整数变换得到的速率R和失真D进行计算,并按照下式计算相应的亮度信号的残差系数的编码代价CC=D+λR,其中λ=0.85×2QP-123]]>,QP为量化参数;步骤(6)对于步骤(1)所述的每种编码模式,比较步骤(5)中分别采用8×8和4×4两种整数变换对于亮度残差信号的编码代价C,选取编码代价C较小的作为当前编码模式的最优变换,该模式的亮度残差信号的编码代价C即为二者中的较小值;步骤(7)对于步骤(1)所述的每种编码模式,按照步骤(2)、(3)、(4)、(5)重新计算色度残差信号的编码代价C′,并且对于色度信号编码代价C′的计算只采用4×4整型变换;再按照下式计算相应的预测信息编码代价C″=λRpre,其中Rpre为当前预测信息的编码码率,然后计算每种编码模式的最终编码代价Ctol=C+C′+C″,其中C为步骤(6)中得到的亮度残差信号的编码代价;步骤(8)选择最终编码代价Ctol最小的模式对步骤(1)所述的当前编码宏块按H.264/AVC标准所规定的方法进行编码,得到实际的输出的码流为Rreal比特;步骤(9)用步骤(8)得到的Rreal更新步骤(4)中所述的速率估计用的查找表f(TC,TR)若Rreal-SAD≤0则不更新,若Rreal-SAD>0,则查找表中对应于TC、TR的项f(TC,TR)更新为f(TC,TR)+δR,其中δR={((Rreal-SAD)×24)-f(TC,TR)+23}/24;步骤(10)返回步骤(1),编码下一个宏块。
2.根据权利要求1所述的H.264/AVC视频编码中速率和失真的快速估计方法,其特征在于,在所述步骤(7)中,在采用变长码时,预测信息的编码是采用对数哥伦布码,其编码码字为[Mzeros][1][INFO],且M=log2(code_num+1),INFO=code_num+1-2Mcode_num为当前的原始预测信息,为下取整,则当前预测信息的编码速率为Rpre=2M+1,C″=λ(2M+1)。
全文摘要
本发明涉及视频压缩编码中宏块编码模式选择算法,其特征在于,该方法首先对运动预测,变换和量化后的信号进行快速速率和失真估计;在失真估计算法中,对于量化后为零的变换系数,失真即为经过加权后的系数平方值,对于非零量化系数,失真为量化步长的平方值函数;在速率估计算法中,建立速率和非零量化系数绝对值之和、非零量化系数数目及游程值之和的关系模型。定义一个查表函数度量非零量化系数数目及游程值之和对速率的影响,每实际编码一个块后根据低通滤波的原理更新该查找表;根据速率和失真的估计,进行宏块编码模式的选择。本发明有效提高了率失真意义下宏块编码模式选择的速度,适用于新一代视频压缩编码。
文档编号H04N7/32GK101014128SQ200710063488
公开日2007年8月8日 申请日期2007年2月2日 优先权日2007年2月2日
发明者崔慧娟, 唐昆, 张阳, 路羊 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1