一种运动矢量预测的方法 【技术领域】
本发明涉及视频图像处理技术领域,特别是一种运动矢量预测的方法。
背景技术
随着多媒体技术的飞速发展和广泛应用,各种视频数据得到越来越广泛的应用。由于原始视频数据所需带宽极大,同时又具有很大的冗余性,因此通常通过编码压缩后再存储或传输。其中帧间预测是去除时间冗余的关键技术,如果帧间预测的运动矢量场和实际的运动矢量场一致,那么视频编码的压缩效率也就得到大大的增加,否则帧间冗余不一定能够得到有效的去除,从而也就影响了整个系统的编码效率。运动矢量预测是计算运动矢量场的起始点,如果能够有效的预测运动矢量场,那么一方面减少了运动估计的复杂度和计算量,另一方面也有利于去除帧间冗余,提高整个系统的编码效率。
视频编码从80年代末开始,从MPEG-1、H.261到现在的MPEG-4、H.264已经有很长的研究历史,提出了很多国际标准,但是基本思想仍然是分块压缩和运动估计。运动矢量预测技术都是对相邻宏块的运动矢量进行标量中值滤波得到。但是在实际的视频编码中,相邻宏块的运动不仅在X方向上具有一致性,而且在Y方向上也具有一致性,它们应该是不可分,本发明就是基于这样的出发点来做运动矢量预测地。
在视频编码中,块匹配运动估计初始位置的确定,即运动矢量的预测,决定了整个编码系统的性能。如果预测得到的运动矢量逼近于真实的运动矢量场,那么运动估计的准确性就非常的高,当前块和预测块的残差也就非常的小,从而提高了帧间预测的编码效率;反之如果预测得到的运动矢量和实际的运动矢量场相差较大,在运动估计搜索的过程中,可能会陷入局部极小值,从而影响了整个编码系统的性能。
【发明内容】
本发明的目的在于提供一种运动矢量预测的方法。
一种基于矢量中值滤波的运动矢量预测方法,它能够根据周围宏块或块的运动矢量来预测当前宏块或块的预测矢量。它首先计算左边宏块或块,上边宏块或块以及右上宏块或块的运动矢量之间的距离,然后对他们的距离进行排序,选择中间距离所对应的运动矢量为当前宏块或块的运动矢量,以此预测得到的运动矢量为中心再进行运动搜索,计算得到最终的预测矢量。
本方法的特征是首先计算相邻块或宏块的运动矢量之间的距离,根据他们之间的距离关系,选择某一个相邻宏块或块的运动矢量作为当前块或宏块的运动矢量。该方法主要包括相邻宏块运动矢量之间距离的计算;根据运动矢量之间的距离关系选择其中一个宏块或块的运动矢量作为当前宏块或块的预测运动矢量。本方法适用于任何帧间预测的视频编码中。
一种运动矢量预测的方法,使用相邻宏块或块的运动矢量之间的距离作为判断准则来选择当前宏块或块的运动矢量,步骤如下:
(1)分别计算相邻宏块或块的运动矢量之间的距离;
(2)对它们之间的距离进行排序并进行比较,选择与中间距离对应块或宏块的运动矢量作为当前块或宏块的运动矢量预测值。
计算相邻宏块或块的运动矢量之间的距离。
对运动矢量之间的距离进行排序,进行矢量中值滤波。
矢量中值滤波得到的运动矢量作为当前块或宏块的预测运动矢量。
以预测的运动矢量为起始点,在参考图像中对当前宏块或块进行运动估计。
附图说明:
图1是本发明的运动估计示意图。
图2是本发明的当前块和周围块的位置关系图。
图3是本发明的运动矢量预测示意图。
图4是本发明的运动搜索示意图。
图5是本发明的运动矢量预测的方法的流程图。
【具体实施方式】
图1为运动估计示意图。当对大小为N×N的当前样本块做运动估计,搜索范围为R时,以当前样本块左上角的样本坐标为原点,水平向左为X坐标正方向,垂直向下为Y坐标正方向,从(-R,-R)至(N+R,N+R)的范围内选择一个N×N的参考样本最佳匹配块,使得当前样本块与参考样本块之间的失真最小,或者在进行率失真优化的情况下选择编码效率最高的参考样本块。图1中两个粗黑线方块分别为对应运动矢量为(R,R)和(-R,-R)的参考样本块。
图2是块和周围块的位置关系。在运动估计的过程中,运动估计的起始位置就是由相邻块的运动矢量预测得到的,在图2中,当前块的运动矢量就是由相邻块A,B和C的运动矢量预测得到的。如果C块的运动矢量不可用时,用D块的运动矢量来替代。
图3是运动矢量预测示意图,图示中的X轴表示水平方向的运动矢量,Y轴表示垂直方向的运动矢量。Va,Vb和Vc分别表示块A,块B和块C的运动矢量,它们包含有X方向和Y方向。他们之间的连线长度表示相应的运动矢量之间的距离,然后对他们之间距离进行排序,选择中间距离的那条边对应的运动矢量作为最终的运动矢量,如图3所示,对VaVb,VbVc和VcVa进行排序,中间距离的那条边为VcVa,它所对应的B块的运动矢量Vb就最为当前块的运动矢量预测值。
通过以上步骤得到的运动矢量作为当前块的预测运动矢量,运动搜索的过程如图4所示,以预测得到的运动矢量为中心,按照图中所示的顺序,依次对各个位置的块进行匹配,在一定的范围内搜索一个与当前块最匹配的块作为当前块的预测块。
图5是运动矢量预测的方法,其具体步骤如下:
步骤S1,假设当前块或者宏块的左边相邻块A的运动矢量为(Vax,Vay),上面相邻块B的运动矢量为(Vbx,Vby),右上角相邻块C的运动矢量为(Vcx,Vcy);它们的位置关系如图2所示。
步骤S2,按照下面的方法计算相邻块之间的运动矢量之间的距离:
DISTANECE(A,B)=|Vax-Vbx|+|Vay-Vby|
DISTANECE(B,C)=|Vbx-Vcx|+|Vby-Vcy|
DISTANECE(C,A)=|Vcx-Vax|+|Vcy-Vay|
步骤S3,对运动矢量之间的距离DISTANECE(A,B),DISTANECE(B,C)和DISTANECE(C,A)进行排序,选择和中间距离对应的运动矢量作为当前块的预测运动矢量;例如:如果DISTANECE(A,B)<DISTANECE(B,C)<DISTANECE(C,A),则选择与DISTANECE(B,C)对应块A的运动矢量作为当前块的运动矢量;
步骤S4,以当前块的预测运动矢量为起始点,对当前块进行运动估计。