一种基于双参考帧的运动估计方法

文档序号:7985121阅读:230来源:国知局
一种基于双参考帧的运动估计方法
【专利摘要】本发明提供一种基于双参考帧的运动估计方法,包括:在编码P帧时,获取当前帧中当前待编码宏块的相邻宏块以及前一帧中与当前待编码宏块位于相同位置的宏块的运动矢量;根据步骤一获取的运动矢量确定搜索中心A和搜索范围SP1;以前一帧的原始帧为参考帧,在搜索范围SP1内以A为搜索中心进行运动搜索,获得预测运动矢量;根据预测运动矢量确定搜索中心B和搜索范围SP2;判断是否提前结束,若是则确定最佳运动矢量;否则执行下一步;以前一帧的重构帧为参考帧,在搜索范围SP2内以B为搜索中心进行运动搜索,确定最佳运动矢量。本发明能够在符合H.264编码协议的基础上,利用原始帧的数据完整性,提高运动估计的准确度,减少编码错误传递和扩散。
【专利说明】一种基于双参考帧的运动估计方法
【技术领域】
[0001]本发明属于信息处理【技术领域】,涉及一种运动估计方法,特别是涉及一种基于双参考帧的运动估计方法。
【背景技术】
[0002]H.264视频压缩标准是现有最重要数据压缩编码国际标准之一,目前,基于H.264视频压缩标准的视频压缩编码技术主要是采用以运动估计和运动补偿技术为核心的帧间预测方式来除去视频序列相继图像帧之间存在的冗余信息,以达到视频数据压缩的目的。
[0003]在帧间预测编码中,因为活动图像邻近帧中的景物存在一定的相关性,所以可将活动图像分成若干块或宏块,并设法搜索出每个块或宏块在邻近帧图像中的位置,并得出两者之间的空间位置的相对偏移量,此相对偏移量就是通常所指的运动矢量,得到运动矢量的过程被称为运动估计。运动矢量和经过运动匹配后得到的预测误差共同发送到解码端,在解码端按照运动矢量指明的位置,从已经解码的邻近参考帧图像中找到相应的块或宏块,和预测误差相加后就得到了块或宏块在当前帧中的位置。通过运动估计可以去除帧间冗余度,使得视频传输的比特数大为减少。
[0004]相反地,如果对每个块的运动矢量进行编码,那么将花费相当数目的比特数,特别是如果选择小尺寸的块的时候。由于一个运动物体会覆盖多个分块,所以空间域相邻块的运动矢量具有很强的相关性,因此,每个运动矢量可以根据邻近先前已编码的块进行预测,预测得到的运动矢量用MVp表示,当前矢量和预测矢量之间的差值用MVD表示。同时由于物体运动的连续性,运动矢量在时间域也存在一定相关性,因此也可以用邻近参考帧的运动矢量来预测。H.264编码标准和以往采用的视频压缩标准很大的不同在于,在运动估计过程中可采用多参考帧预测来提高预测精度。由于H.264编码是有损压缩,图像在编码过程中会有一定的质量损失和错误,而P帧编码时以之前已编码帧作为当前帧的参考帧进行运动估计,易导致图像质量损失和错误的传递与扩散。

【发明内容】

[0005]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于双参考帧的运动估计方法,用于减小现有估计方法中图像质量损失和错误的传递与扩散。
[0006]为实现上述目的及其他相关目的,本发明提供一种基于双参考帧的运动估计方法。
[0007]一种基于双参考帧的运动估计方法,所述基于双参考帧的运动估计方法包括:
[0008]步骤一,在编码P帧时,获取当前帧中当前待编码宏块的相邻宏块以及前一帧中与所述当前待编码宏块位于相同位置的宏块的运动矢量;
[0009]步骤二,根据步骤一获取的运动矢量确定搜索中心A和搜索范围Spi ;
[0010]步骤三,以所述前一帧的原始帧为参考帧,在所述搜索范围Spi内以A为搜索中心进行运动搜索,获得预测运动矢量;[0011]步骤四,根据所述预测运动矢量确定搜索中心B和搜索范围Sp2 ;判断是否提前结束,若是则确定最佳运动矢量;否则执行步骤五;
[0012]步骤五,以所述前一帧的重构帧为参考帧,在所述搜索范围Sp2内以B为搜索中心进行运动搜索,确定最佳运动矢量。
[0013]优选地,步骤二中,所述搜索中心A是运用中值预测方法、运动矢量预测方法、或/和邻近参考帧预测方法确定的。
[0014]优选地,步骤二中,所述搜索范围Spi通过运动矢量的平均值进行调整。
[0015]优选地,步骤三中,所述运动搜索是运用六边形搜索算法、全搜索算法、菱形搜索算法、或/和混合搜索算法进行的搜索。
[0016]优选地,步骤五中,所述运动搜索是运用小菱形搜索算法、六边形搜索算法、全搜索算法、大菱形搜索算法、或/和混合搜索算法进行的搜索。
[0017]优选地,所述相邻宏块包括当前待编码宏块相邻的左、上、右上方的宏块;若其中某个宏块不存在,则该不存在的宏块的运动矢量赋值为O。
[0018]优选地,如果所述相邻宏块中的左侧的宏块包括多于一个亮度子块或色度子块,那么选择左侧的宏块中位置处于最上方的子块的运动矢量值作为所述左侧的宏块的运动矢量值;如果所述相邻宏块中的正上方的宏块包括多于一个亮度子块或色度子块,那么选择最左侧的子块的运动矢量值作为所述正上方的宏块的运动矢量值。
[0019]如上所述,本发明所述的基于双参考帧的运动估计方法,具有以下有益效果:
[0020]本发明能够在符合H.264编码协议的基础上,使用高效的搜索范围确定方法,并利用原始帧的数据完整性,有效提高运动估计的准确度,减少编码错误传递和扩散,从而降低编码图像的质量损失,提高视频图像质量。
【专利附图】

【附图说明】
[0021]图1显示为本发明所述的基于双参考帧的运动估计方法的流程示意图。
[0022]图2显示为尺寸相同的当前宏块与相邻宏块的位置关系示意图。
[0023]图3显示为尺寸不同的当前宏块与相邻宏块的位置关系示意图。
[0024]图4显示为前一帧中与所述当前帧中当前待编码宏块位置相同的宏块的位置示意图。
【具体实施方式】
[0025]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0026]请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0027]本发明为了解决现有估计方法中存在的图像质量损失和错误的传递与扩散的问题,设计并实现了一种基于双参考帧的运动估计方法,该方法以当前帧的前一帧的原始帧和前一帧的重构帧为参考帧,配合高效的搜索范围确定方法进行运动估计,以达到有效的找到最佳匹配块,减小错误传递和扩散的目的。
[0028]下面结合实施例和附图对本发明进行详细说明。
[0029]实施例
[0030]本实施例提供一种基于双参考帧的运动估计方法,如图1所示,所述基于双参考帧的运动估计方法包括:
[0031]SI,在编码P帧时,获取当前帧中当前待编码宏块的相邻宏块以及前一帧中与所述当前待编码宏块位于相同位置的宏块的运动矢量。
[0032]进一步,所述相邻宏块可以选取当前待编码宏块相邻的左、上、右上方的宏块。若其中某个宏块不存在,则相应的该不存在的宏块的运动矢量赋值为O。
[0033]更进一步,因为本发明中编码以宏块为单位,而一个宏块包含I个16X16的亮度块和2个8X8的色度块,故可选取3个相邻宏块进行运动矢量计算。编码时,按照从左到右,从上到下的顺序一个宏块接着一个宏块进行。如果所述相邻宏块中的左侧的宏块包括多于一个亮度子块或色度子块,那么选择左侧的宏块中位置处于最上方的子块的运动矢量值作为所述左侧的宏块的运动矢量值;如果所述相邻宏块中的正上方的宏块包括多于一个亮度子块或色度子块,那么选择最左侧的子块的运动矢量值作为所述正上方的宏块的运动矢量值。例如:如图2所示,假设E宏块为当前待编码宏块,A宏块在E的左侧,B宏块在E的上方、C宏块在E的右上方,贝U可以选取A宏块、B宏块、C宏块作为本发明所述的相邻宏块。如图3所示,如果E宏块的正左侧多于一个亮度块或色度块这种子块,那么选择E宏块的正左侧位置中最上方的子块作为A块,在E宏块的正上方位置中选择最左侧的子块作为B块。所述亮度块或色度块这种子块具体是指:对于16 X 16亮度块,其左边出现16 X 8、8 X 8、8 X 4、4 X 8、4 X 4子亮度块的情况;对于8 X 8色度块,其左边出现8 X 4、4 X 4子色度块的情况。
[0034]所述前一帧中与所述当前待编码宏块位于相同位置的宏块可命名为D宏块,如图4所不,该D宏块即是前一巾贞中与E宏块处于相同位置的宏块。
[0035]S2,根据步骤SI获取的运动矢量确定搜索中心A和搜索范围Spi。
[0036]进一步,所述搜索中心A可以是运用中值预测方法、运动矢量预测方法、或/和邻近参考帧预测方法等来确定的,但不限于本实施例列举的几种确定方法。所述搜索范围Spi可以通过运动矢量的平均值进行调整,当然也不限于本实施例列举的平均值这一种调整方法。
[0037]在采用各种预测方法来确定搜索中心A的过程中需遵守以下准则:
[0038]I)对于除了尺寸为16X8和8X16的块来说,MVp是块A、B和C的运动矢量的中值;即MVp= (MVa+MVb+MVc) /3,其中,MVa表示块A的MV值,MVb表示块B的MV值,MVc表示块C的MV值,MV值即表示运动矢量值。
[0039]2)对于尺寸为16X8的块来说,上方的16X8的块的MVp根据B块预测得到,下方的16X8的块的MVp根据A块得到;即上方的16X8的块的MVp取B块的MV值,下方的16X8的块的MVp取A块的MV值。
[0040]3)对于尺寸为8X16的块来说,左侧的8X16的块的MVp根据A块预测得到,右侧的8 X 16的块的MVp根据C块预测得到;即左侧的8 X 16的块的MVp取A块的MV值,右侧的8 X 16的块的MVp取C块的MV值。
[0041]4)对于不用编码的可跳过去的宏块,16X16的块的MVp如I)所述的情况得到。
[0042]以上方法称为中值预测,是业内使用较为普遍的一种方法,本发明所述的MVp值的具体获得方式不限于使用何种预测方法,但凡能得到MVp值的预测方法均包括在本发明的范围内。
[0043]进一步,因为相邻宏块的运动矢量具有一定的相关性,所以当前待编码宏块的最佳搜索范围一般小于相邻宏块的最佳搜索范围。搜索范围的定义如下:S=maX(abs(MX-M(p,X)), abs (My-M(p, y))),其中Mx和My分别是预测运动矢量的水平和垂直分量;M (p, x)和M (p,y)分别为中值预测运动矢量的水平和垂直分量;S为搜索范围。最终得到的预测搜索范围可以表示为:SP1=max(SA,SB,SD)+K ;其中,Sa表示由宏块A所确定的搜索范围,即SA=max(abs (MaX-Ma (p, X)), abs (MAy_MA(p, y)) ),MAx和MAy分别是宏块A的预测运动矢量的水平和垂直分量;Ma (P,1)和吣(p,y)分别为宏块A通过中值预测算法获得的运动矢量的水平和垂直分量;同理可推知:SB表示由宏块B所确定的搜索范围;SD表示由宏块D所确定的搜索范围。K的计算式为K= (P (Ba)+p (Bb)+p(BD)),其中,BA、Bb和Bd分别表示宏块A、宏块B和宏块D的编码模式,当B=8X8时,P (B) =8 ;当B=16X8或8X 16时,p (B) =4 ;其他情况下P (B) =0 ο
[0044]S3,以所述前一帧的原始帧为参考帧,在所述搜索范围Spi内以A为搜索中心进行运动搜索,获得预测运动矢量MVp。
[0045]进一步,所述运动搜索可以是运用六边形搜索算法、全搜索算法、菱形搜索算法、或/和混合搜索算法等进行的搜索,但不限于本实施例列举的几种搜索算法。
[0046]S4,根据所述预测运动矢量确定搜索中心B (简称CenterB)和搜索范围Sp2 ;判断是否提前结束,若是则确定所述预测运动矢量MVp为最佳运动矢量;否则执行步骤S5。
[0047]进一步,所述搜索范围SP2=min(SCenterB,max(SA’,SB’,Sc’ ));其中,Scenteri3 表示在前一帧的重构帧中由CenterB所在宏块所确定的搜索范围;其中S/表示在前一帧的重构帧中由CenterB所在宏块左边的宏块A所确定的搜索范围;其中SB’表示在前一帧的重构帧中由CenterB所在宏块上边的宏块B所确定的搜索范围;其中Sc,表示在前一帧的重构帧中由CenterB所在宏块右上方的宏块C所确定的搜索范围。若Sp2为0,则提前结束,以预测运动矢量MVp为最佳运动矢量,否则执行步骤S5。
[0048]S5,以所述前一帧的重构帧为参考帧,在所述搜索范围Sp2内以B为搜索中心进行运动搜索,确定最佳运动矢量。本步骤中所述的运动搜索是运用小菱形搜索算法、六边形搜索算法、全搜索算法、大菱形搜索算法、或/和混合搜索算法进行的搜索。
[0049]本发明所述的基于双参考帧的运动估计方法能够在符合H.264编码协议的基础上,使用高效的搜索范围确定方法,并利用原始帧的数据完整性,有效提高运动估计的准确度,减少编码错误传递和扩散,从而降低编码图像的质量损失,提高视频图像质量。
[0050]本发明采用的双参考帧方法限定参考帧数为两个,且必须是待编码帧前一帧的原始帧和重构帧。这里采用原始帧作为参考帧之一,与重构帧一起参与运动估计。所谓原始帧是指未经编码的原始图像数据,相对于根据编码结果重构的图像数据(即重构帧)。
[0051]在当前主流的编码算法中,一般编码完前一帧后不保存该帧的原始图像数据,当要使用前一帧的图像数据时,会使用前一帧的已编码结果来还原前一帧的图像数据(即得到重构帧),无论是单参考帧还是多参考帧,都是使用重构帧为参考帧;但是由于编码过程是有损的,会造成图像质量的损失,也可能会产生一些错误,而重构的过程并不能完全修复这些问题,从而使得以重构帧为参考帧进行的运动估计和编码容易导致错误传递和扩散。
[0052]因此本发明创新的采用原始帧和重构帧同时作为参考帧的双参考帧方式进行运动估计,即在编码完前一帧后,仍然保存前一帧的原始图像数据作为参考帧之一,和前一帧的重构帧一起参与对当前待编码帧的运动估计。首先利用原始帧进行第一轮运动估计,其目的是精确预测,然后再利用重构帧进行第二轮运动估计,其目的是略作微调以方便重构时快速高效的定位。
[0053]本发明与传统单参考帧编码算法的区别在于:本发明是对传统单参考帧编码算法的改进,引入原始帧作为共同参考帧作辅助运算,以得到更佳的运动估计结果。
[0054]本发明与传统多参考帧编码算法的区别在于:标准的多参考帧形式为,编码时待编码帧A参考多个不同时间点的重构帧进行编码运算得到编码结果B,解码时待解码数据B须参考与编码时相应的多个参考帧进行解码得到解码帧A’。而在本发明中作为参考帧的原始帧和重构帧都是当前帧的前一帧,在时间点上是相同的,原始帧作为编码辅助工具仅参与编码运算,在解码过程中不会也无法使用到,最终的编码结果以单参考帧的形式存在,当对使用本方法编码的视频进行解码时仅以当前帧的前一帧作为参考帧进行解码重构。这是一种对H.264标准单参考帧编码方法的改进,严格意义上不属于多参考帧编码算法,可算作“伪多参考帧”。
[0055]本发明可提高预测图像的质量,减小运动估计中的错误传递和扩散。与单参考帧的运动估计相比,该方法会略微增加一些运算上的时间消耗和用于保存原始帧的内存空间消耗,但是可以得到更好的运动估计效果。和其他多参考帧的运动估计相比,该方法在消耗相同甚至更少的前提下可获得更好的运动估计效果。
[0056]综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0057]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属【技术领域】中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【权利要求】
1.一种基于双参考帧的运动估计方法,其特征在于,所述基于双参考帧的运动估计方法包括: 步骤一,在编码P帧时,获取当前帧中当前待编码宏块的相邻宏块以及前一帧中与所述当前待编码宏块位于相同位置的宏块的运动矢量; 步骤二,根据步骤一获取的运动矢量确定搜索中心A和搜索范围SPl ; 步骤三,以所述前一帧的原始帧为参考帧,在所述搜索范围SPl内以A为搜索中心进行运动搜索,获得预测运动矢量; 步骤四,根据所述预测运动矢量确定搜索中心B和搜索范围SP2 ;判断是否提前结束,若是则确定最佳运动矢量;否则执行步骤五; 步骤五,以所述前一帧的重构帧为参考帧,在所述搜索范围SP2内以B为搜索中心进行运动搜索,确定最佳运动矢量。
2.根据权利要求1所述的基于双参考帧的运动估计方法,其特征在于:步骤二中,所述搜索中心A是运用中值预测方法、运动矢量预测方法、或/和邻近参考帧预测方法确定的。
3.根据权利要求1所述的基于双参考帧的运动估计方法,其特征在于:步骤二中,所述搜索范围SPl通过运动矢量的平均值进行调整。
4.根据权利要求1所述的基于双参考帧的运动估计方法,其特征在于:步骤三中,所述运动搜索是运用六边形搜索算法、全搜索算法、菱形搜索算法、或/和混合搜索算法进行的搜索。
5.根据权利要求1所述的基于双参考帧的运动估计方法,其特征在于:步骤五中,所述运动搜索是运用小菱形搜索算法、六边形搜索算法、全搜索算法、大菱形搜索算法、或/和混合搜索算法进行的搜索。
6.根据权利要求1所述的基于双参考帧的运动估计方法,其特征在于:所述相邻宏块包括当前待编码宏块相邻的左、上、右上方的宏块;若其中某个宏块不存在,则该不存在的宏块的运动矢量赋值为O。
7.根据权利要求6所述的基于双参考帧的运动估计方法,其特征在于:如果所述相邻宏块中的左侧的宏块包括多于一个亮度子块或色度子块,那么选择左侧的宏块中位置处于最上方的子块的运动矢量值作为所述左侧的宏块的运动矢量值;如果所述相邻宏块中的正上方的宏块包括多于一个亮度子块或色度子块,那么选择最左侧的子块的运动矢量值作为所述正上方的宏块的运动矢量值。
【文档编号】H04N19/56GK103796026SQ201210431435
【公开日】2014年5月14日 申请日期:2012年11月1日 优先权日:2012年11月1日
【发明者】王子希 申请人:华平信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1