专利名称:帧间预测编码的模式快速选择方法
技术领域:
本发明属于数字视频编解码技术领域,具体来说,是关于帧间预测编码中怎样进行模式选择的方法。
背景技术:
H.264/AVC是由国际电联(ITU)和MPEG标准组织ISO组成的合作开发组(JVT)共同制定的新一代数字视频编解码标准。H.264/AVC继承了以往的视频编码标准的优点,既可以用于实时视频通信,比如视频会议,可视电话等,又可以用于视频存储,高清视频广播和流媒体。
H.264/AVC和以前的编码标准H.263,MPEG-4一样,都是采用基于预测变换的混合编码模式,同时吸收了以前不同的标准的优势,在编码性能上有了较大的提高。H.264/AVC的码流在系统层面分为两个层次,视频编码层(Video Coding Layer,VLC)和网络抽象层(Network Abstract Layer,NAL)。视频编码层主要记录对视频内容进行压缩后的核心数据,网络抽象层主要记录描述特定类型的网络环境的信息,通过这样的层次划分,有利于视频数据的封装和数据在网络中的传输控制。H.264/AVC的编码过程主要分为以下几个部分(1)帧内预测,消除空间冗余度。
(2)通过在相邻的帧中进行运动搜索和模式选择得到帧间预测,消除时间冗余度。
(3)利用运动搜索得到的预测块对原始图像块进行运动补偿,对补偿得到的残差块,进行变换和量化。
(4)对变换和量化后的残差块按一定顺序进行重排和熵编码。
H.264/AVC中的帧间预测编码是利用在运动的连续性,通过临近帧在时间上的冗余来进行运动搜索和补偿。H.264/AVC中的运动补偿包括以往的视频编码标准的中的大部分特性。H.264/AVC中不仅支持整数像素精度和半像素精度的运动补偿,还支持1/4像素精度的亮度补偿和1/8像素精度的色度补偿。在量化参数相同的情况下,采用1/4像素精度和1/8像素精度的运动补偿有一定概率能够获得比整数像素精度和半像素精度更精确的预测,预测越精确所得到的残差块绝对值就越小,对于同样的量化参数,残差块绝对值越小,编码得到的码率就越低,而且失真也越小。H.264/AVC提供多参考帧预测,在进行预测时,可以从长度为16的参考帧缓冲区中选择参考帧进行预测,并可以选用5个参考帧进行预测,多参考帧预测能够使预测更精确,残差块绝对值较小,达到降低编码码率和失真的效果。虽然小数像素精度预测和多参考帧预测能够提高编码效率,但是也增加了编码的计算复杂度,使H.264/AVC的运动搜索过程同H.263,MPEG-4相比需要更多的时间。
H.264/AVC在进行预测编码时,可以有多种分块模式进行选择,如图1中给出7种帧间预测编码分块模式,每个分块模式中的序号对应着进行预测的顺序,分块的大小从16×16到4×4,包括16×16,16×8,8×16,8×8,8×4,4×8,4×4。在进行帧间预测编码时,不同的分块方式对应于不同大小的区域的运动。如果宏块包含较少的运动细节,整个宏块的运动趋于一致,则应该采用整个宏块进行运动补偿,如果宏块内部包含丰富的运动细节,则应该采用对宏块进行划分,采用较小的分块来进行动补偿。如果宏块以水平方向上的运动为主,则应采用16×8或8×4的分块方式;如果宏块以垂直方向上的运动为主,则应采用8×16或4×8的分块方式。在帧间预测编码模式中还包括一种跳过(SKIP)模式,其大小为16×16,跳过模式不需要进行运动搜索,只需要进行运动补偿,主要应用于相邻图像中静止的图像块。
在JVT公布的H.264/AVC编码器的参考代码中,在对宏块进行预测编码的时候,是采用对所有可用的模式进行遍历的方式进行编码,对于帧间预测编码时,对所有的帧间模式进行了运动搜索,然后选择代价函数最小的模式进行编码,进行运动搜索所采用的代价函数J(Si,M)为J(Si,M)=λ×R(Si,M)+D(Si,M)[1]式中,λ=0.85×2(QH.264-12)/3---[2]]]>Si代表当前帧S内的块,M代表采用的帧间编码模式,R代表编码当前块的运动矢量所需要的比特数,D代表当前运动运动矢量的失真特性,λ为拉格朗日算子,QH.264为量化参数;D通过下面的公式进行计算D=SADn×m=Σi=0n-1Σj=0m-1|c(i,j)-f(i+u,j+v)|---[3]]]>SADn×m‾=Σi=0n/2-1Σj=0m/2-1|c(2×i,2×j)-f(2×i+u,2×j+v)|---[4]]]>其中,n代表分块的横向长度,m代表分块的纵向长度,c代表当前帧的像素函数,f代表参考帧的像素函数,u代表水平方向的运动向量,v代表垂直方向的运动向量;SADn×m代表绝对误差和, 表示对分块进行1/2下采样得到的SAD值。
由于运动搜索存在小数像素精度预测和多参考帧预测,都具有较大的计算复杂度。这种模式选择方式虽然能够有较高的编码效率,但是对于在实时嵌入式编解码系统中,由于受软硬件平台的限制,采用这样的模式选择方式,不能实现实时编码。
发明内容
本发明的目的是为克服已有技术的不足之处,针对在实时编码系统中的应用,提出一种帧间预测编码的快速模式选择方法,通过优化的模式选择方法,降低计算复杂度,得到较低的码率和较小的失真度。
本发明用于符合H.264/AVC编码标准的编码系统中,该方法在对一个宏块进行运动搜索时进行模式选择的方法包括以下步骤1)计算跳过模式下的代价函数jskip,如果Jskip<T1,则转到步骤9),其中,T1为设定的阀值;2)对所述宏块进行运动搜索,采用下采样计算该宏块的代价函数 即采用 来代替SAD16×16计算该宏块的代价函数 ,当搜索找到 为最小值的预测块,再用该预测块与该宏块进行全采样计算得到J16×16,如果J16×16<T2,则转到步骤9),其中,T2为设定的阀值;3)从步骤2)中预测块与该宏块相互位置之差得到的运动向量,采用全采样计算该宏块的4个8×8子宏块的SAD值,按预测顺序得到各子宏块的SAD值分别为SAD08×8,SAD18×8,SAD28×8,SAD38×8,如果存在任意三个或三个以上SADi8×8>T3,i=0,1,2,3,则转到6),令δh=(SAD08×8+SAD18×8)/SAD28×8+SAD38×8),如果δh>K或者δh<1/K,则转到步骤4),令δv=(SAD08×8+SAD28×8)/(SAD18×8+SAD38×8)如果δv>K或者δv<1/K,则转到步骤5),否则转到步骤6),其中,T3为设定的阀值;4)以步骤2)中搜索得到的预测块位置为起始搜索点,对该宏块进行16×8,8×8块的运动搜索得到该宏块相应的代价函数,然后转到步骤9);5)以步骤2)中搜索得到的预测块位置为起始搜索点,对该宏块进行8×16,8×8块的运动搜索得到该宏块相应的代价函数,然后转到步骤9);6)对步骤3)中SAD值大于T3的8×8子宏块从原始预测位置(即通过周围宏块的运动向量预测得到的运动向量)开始进行该子宏块8×8的运动搜索,SAD值小于T3的8×8子宏块从步骤2)中得到的位置开始进行该子宏块8×8的运动搜索,得到该宏块的代价函数J8×8,如果J8×8>J16×16,则转到步骤8),否则转到步骤7);7)对该宏块进行4×4的运动搜索,得到J4×4如果J4×4>J8×8,则转到步骤8),否则对该宏块进行8×4,4×8块的运动搜索,得到该宏块相应的代价函数,然后转到步骤9);8)从原始预测位置开始,进行该宏块的16×8和8×16的运动搜索,得到该宏块相应的代价函数,然后转到步骤9);
9)从上述各步骤中得到的该宏块相应代价函数,选取代价函数J最小的帧间预测编码模式进行下阶段的运动补偿。
对进行帧间预测编码的每个宏快都采用上述步骤进行模式选择。
本发明的原理本发明所基于的原理是在自然视频序列的帧间预测编码中SKIP,16×16,16×8,8×16,8×8预测模式比4×4,4×8,8×4预测模式所占的比例大。在进行模式选择时优先考虑出现概率较大的预测模式,同时利用阀值和不同分块模式间的关系来优化模式选择。
本发明的技术特点及效果本发明面向H.264/AVC编码标准在实时性要求较高的嵌入式系统的中的应用,为使用者提供了在利用H.264/AVC标准进行视频编码时,快速选择合适的帧间预测编码模式的方法。这种方法具有较高的效率,能够满足在嵌入式设备上进行实时编码的要求。本发明具有以下效果1.提供了对各种帧间预测编码模式的选择。
2.减小了运动搜索的计算复杂度小,适于在计算能力有限的平台上实现。
3.复杂度可调节,在计算能力较强的平台上不会影响最终搜索结果。
4.编码效率较高,有较好的图像质量。
图1为7种帧间预测编码模式示意图。
图2为方向菱形搜索匹配算法示意图。
具体实施方法本发明所提出的帧间预测编码的模式快速选择方法结合附图及实施例详细说明如下本发明主要用于在计算能力有限的平台上,通过优化的子宏块划分方法,减少对不必要的子宏块的运动搜索,在保证视频质量的情况下,达到最优的码率。下面通过实施例加以说明。
本实施例在对一个宏块进行运动搜索时进行模式选择的方法包括以下步骤1)计算跳过模式下的代价函数Jskip,如果Jskip<T1,则转到9),其中,T1为设定的阀值,T1=R×λ,R为采用跳过模式进行编码所需要的最小比特值;2)对所述宏块进行运动搜索,采用下采样计算该宏块的代价函数 即采用 来代替SAD16×16计算该宏块的代价函数 ,当搜索找到 ,为最小值的预测块,再用该预测块与该宏块进行全采样计算得到j16×16,如果J16×16<T2,则转到9),其中,T2为设定的阀值,T2=100×R×λ,R为采用跳过模式进行编码所需要的最小比特值;3)2)中预测块与该宏块相互位置之差得到的运动向量,采用全采样计算该宏块的4个8×8子宏块的SAD值,按预测顺序得到各子宏块的SAD值分别为SAD08×8,SAD18×8,SAD28×8,SAD38×8,如果存在任意三个或三个以上SADi8×8>T3,i=0,1,2,3,则转到6),令δh=(SAD08×8+SAD18×8)/(SAD28×8+SAD38×8),如果δh>K或者δh<1/K,则转到4),δv=(SAD08×8+SAD28×8)/(SAD18×8+SAD38×8)如δv>K或者δv<1/K,则转到5),否则转到6),其中,T3为设定的阀值,T3=20×R×λ,R为采用跳过模式进行编码所需要的最小比特值,K为设定的阀值,K=3;4)以2)中搜索得到的预测块位置为起始搜索点,对该宏块进行16×8,8×8块的运动搜索得到该宏块相应的代价函数,然后转到9);5)以2)中搜索得到的预测块位置为起始搜索点,对该宏块进行8×16,8×8块的运动搜索得到该宏块相应的代价函数,然后转到9);6)对3)中SAD值大于T3的8×8子宏块从原始预测位置(即通过周围宏块的运动向量预测得到的运动向量)开始进行该子宏块8×8的运动搜索,SAD值小于T3的8×8子宏块从2)中得到的位置开始进行该子宏块8×8的运动搜索,得到该宏块的代价函数J8×8,如果J8×8>J16×16,则转到8),否则转到7);7)对该宏块进行4×4的运动搜索,得到J4×4,如果J4×4>J8×8,则转到8),否则对该宏块进行8×4,4×8的运动搜索,得到该宏块相应的代价函数,然后转到9);8)从原始预测位置开始,进行该宏块的16×8和8×16的运动搜索,得到该宏块相应的代价函数,然后转到9);9)从上述各步骤中得到的该宏块相应代价函数,选取代价函数J最小的帧间预测编码模式进行下阶段的运动补偿。
在步骤2)中,对宏块进行16×16块的运动搜索,由于一个宏块具有较多的像素点,在进行运动搜索时计算SAD值,可以采用下采样来计算,运动搜索采用方向菱形搜索匹配算法,在以后的步骤中,也采用该方法进行运动搜索,该算法能够较快的搜索到最优运动向量,且失真率和全搜索算法相比没有明显的提高。如图2所示,图中的实心点表示在未确定中心点为MBD(代价函数最小点)时,进行搜索所采用的点。图2a表示HDSP(水平菱形搜索模板),水平方向上离中心点最远的点称为远点,垂直方向上离中心点最远的点称为近点,离中心点最近的两个实心点和两个空心点为中心点的临近点。图2b表示VDSP(垂直菱形搜索模板),垂直方向上离中心点最远的点称为远点,水平方向上离中心点最远的点称为近点,离中心点最近的两个实心点和两个空心点为中心点的临近点。方向菱形搜索匹配算法首先选择HDSP或者VDSP,在图中实心点所在位置进行运动搜索,若MBD在中心点,则在邻近的四个点和中心点中选择MBD点作为最佳匹配点;若MBD在近点,则交换搜索模板(HDSP换VDSP或者VDSP换HDSP)进行搜索;若MBD在远点,则切换中心点到远点,并继续用原来的模板进行搜索;一般先选择HDSP,将HDSP的中心点设置在起始搜索点,如图2a所示。当利用16×16的模式搜索得到最优点时,设定阀值T2,T2=100×R×λ,R为采用跳过模式进行编码所需要的最小比特值,阀值T2取得较大,则模式选择具有较低的计算复杂度,但是编码质量也会有所下降,阀值T2取得较小,则模式选择具有较高的计算复杂度,但能获得较高的编码质量,一般阀值T2的取值范围为80×R×λ≤T2≤200×R×λ。
在步骤3)中,按预测顺序得到各8×8子宏块的SAD值,SAD08×8,SAD18×8,SAD28×8,SAD38×8,设定阀值T3,T3=20×R×λ,R为采用跳过模式进行编码所需要的最小比特值,阀值T3取得较大,则模式选择具有较低的计算复杂度,但是编码质量也会有所下降,阀值T3取得较小,则模式选择具有较高的计算复杂度,但能获得较高的编码质量,一般阀值T2的取值范围为10×R×λ≤T3≤30×R×λ。设定阀值K,K=3,阀值K取得较大,则更容易采用8×8模式进行预测,阀值K取得较小,则更容易采用16×8模式或8×16模式进行预测,阀值K取得偏大或偏小,都会影响编码质量,一般阀值K的取值范围为2≤K≤5。通过判断可以得到进一步的模式选择方案。
本实施例在H.264/AVC的参考代码上修改,加入本发明所提出的模式选择方法,在PC平台上,对foreman,hall,mobile,paris等CIF(352×288)序列进行测试。采用如下配置进行编码1.帧类型为I帧和P帧。
2.间编码采用1个参考帧。
3.利用方向菱形搜索匹配算法进行运动搜索。
4.采用码率失真率优化。
5.运动搜索范围为16个像素。
6.采用CAVLC进行熵编码。
实验结果表明,序列的PSNR平均下降0.154,码率增大7%,运动搜索模块运算速度提高了25倍。
权利要求
1.一种帧间预测编码的模式快速选择方法包括以下步骤1)计算跳过模式下的代价函数Jskip,如果Jskip<T1,则转到步骤9),其中,T1为设定的阀值;2)对所述宏块进行运动搜索,采用下采样计算该宏块的代价函数 即采用 来代替SAD16×16计算该宏块的代价函数 当搜索找到 为最小值的预测块,再用该预测块与该宏块进行全采样计算得到J16×16,如果J16×16<T2,则转到步骤9),其中,T2为设定的阀值;3)从步骤2)中预测块与该宏块相互位置之差得到的运动向量,采用全采样计算该宏块的4个8×8子宏块的SAD值,按预测顺序得到各子宏块的SAD值分别为SAD08×8,SAD18×8,SAD28×8,SAD38×8,如果存在任意三个或三个以上SADi8×8>T3,i=0,1,2,3,则转到6),令δh=(SAD08×8+SAD18×8)/(SAD28×8+SAD38×8),如果δh>K或者δh<1/K,则转到步骤4),令δv=(SAD08×8+SAD28×8)/(SAD18×8+SAD38×8)如果δv>K或者δv<1/K,则转到步骤5),否则转到步骤6),其中,T3为设定的阀值;4)以步骤2)中搜索得到的预测块位置为起始搜索点,对该宏块进行16×8,8×8块的运动搜索得到该宏块相应的代价函数,然后转到步骤9);5)以步骤2)中搜索得到的预测块位置为起始搜索点,对该宏块进行8×16,8×8块的运动搜索得到该宏块相应的代价函数,然后转到步骤9);6)对步骤3)中SAD值大于T3的8×8子宏块从原始预测位置(即通过周围宏块的运动向量预测得到的运动向量)开始进行该子宏块8×8的运动搜索,SAD值小于T3的8×8子宏块从步骤2)中得到的位置开始进行该子宏块8×8的运动搜索,得到该宏块的代价函数J8×8,如果J8×8>J16×16,则转到步骤8),否则转到步骤7);7)对该宏块进行4×4的运动搜索,得到J4×4,如果J4×4>J8×8,则转到步骤8),否则对该宏块进行8×4,4×8块的运动搜索,得到该宏块相应的代价函数,然后转到步骤9);8)从原始预测位置开始,进行该宏块的16×8和8×16的运动搜索,得到该宏块相应的代价函数,然后转到步骤9);9)从上述各步骤中得到的该宏块相应代价函数,选取代价函数J最小的帧间预测编码模式进行下阶段的运动补偿。
全文摘要
本发明涉及帧间预测编码的模式快速选择方法,属于数字视频编解码技术领域,该方法包括计算跳过模式下的代价函数J
文档编号H04N7/26GK101022555SQ200710063819
公开日2007年8月22日 申请日期2007年2月12日 优先权日2007年2月12日
发明者戴琼海, 施一平, 尔桂花, 肖红江 申请人:清华大学