转:MotionEstimate运动估计综述
这儿是对运动估计算法的分析与记录
第一部分的" 运动估计综述"是从gu网上下载到的, 讲的挺详细,
第二是UMHexagonS算法的分析
运动估计综述
1.定义
这里指基于块的运动估计,基本思想是将图像序列的每一帧分成许多互不重叠的块,并认为块内所有像素的位移量都相同,然后对每个宏块到参考帧某一给定特定搜索范围内根据一定的块匹配准则找出与当前块最相似的块,即匹配块,匹配块与当前块的相对位移即为运动矢量。
2.运动估计算法
2.1全搜索
每一点都要比较,需计算(2*d+1)*(2*d+1)次(d是搜索范围)。对分辨率360x288,帧率30fps的视频,设d=21,每秒要计算1.09E10次,计算量太大,需要研究相应的快速算法。
2.2早期的快速算法(固定模式法)
这些算法假设匹配误差随着离全局误差最小点的距离增加而单调增加。一般从原点开始,采用固定的搜索模板和搜索策略得到最佳匹配块。常见的有:三步法(TSS)、四步法(FSS)、菱形法(DS)、六边形法(HEXBS)等。
三步法(TSS)
步骤:搜索模板半径依次减半。
搜索范围大于7时,搜索步骤不止三步。
四步法(FSS)
步骤:反复使用5×5方形模板进行搜索。
模板中心处SAD值最小时再用3×3模板搜索一次确定最佳匹配位置。
菱形法(DS):
步骤:搜索方式与四步法类似,只是搜索模板换为两个菱形模板。
六边形法(HEXBS):
步骤:搜索方式与菱形法类似,只是大搜索模板换为一个六边形模板。
早期算法的不足:
- 没有利用图像本身的相关信息,不能根据物体运动的剧烈程度自适应的改变搜索起点和搜索半径;
- 以菱形法为例,对背景图像,也要经历从大模板到小模板的转换过程,至少需要13个搜索点,搜索速度还有待改进;
- 对于运动剧烈的图像,从原点开始搜索时,要经过多次搜索才能找到匹配点,搜索点过多,且容易陷入局部最优点。
2.3近年来提出的新算法
针对以上不足,近几年来,针对序列图像的时空相关性和人眼视觉特性,提出了许多改进算法,主要从以下几个方面着手:
- 预测搜索起点
利用相邻块之间的运动相关性选择一个反映当前块运动趋势的预测点作为初始搜索点,这个预测点一般比原点更靠近全局最小点。从预测点开始搜索可以在一定程度上提高搜索速度和搜索精度。
- 中止判别条件
利用相邻块的相关性自适应的调整终止阀值,当搜索值小于该值时,则认为满足条件,跳出后面的搜索过程。
- 搜索模板的选择
在序列图像中,大多数的运动矢量都位于水平或垂直方向,因此可以设计相应的搜索模板(非对称搜索模板)来加快搜索速度。
2.4 EPZS(Enhanced Predictive Zonal Search)介绍
目前典型的运动算法有预测运动矢量场自适应快速搜索法(PMVFAST)、增强预测区域搜索法(EPZS)、非对称十字多层六边形搜索法(UMHexagonS),他们都利用了运动矢量的时空相关性、倾向水平垂直方向的非对称模板、灵活有效的中止准则,下面主要介绍一下EPZS。
快速运动估计算法包括MV预测选择、自适应提前终止、MV修正三大部分。
2.4.1 MV预测选择
根据时间域和空间域的相关性选择搜索的起点:
S1: Median predictor(取左、上和右上块的运动矢量的中值)
S2:Spatial and temporal predictors 再加上(0, 0)
S3:如果有多个参考帧,则相应的运动矢量要作缩放,TRi是第i个参考帧到当前帧的距离,
S4: 由于运动速度并非都是常量,可以再增加accelerator temporal predictor,如下图
Figure: Use of acceleration information as a Motion Vector predictor.
当前块不仅仅和前一帧的对应块相关,还和前一帧对应块的邻近块相关,因此再增加四个predictor:
Figure: The MV of the current block might have more relationship with the motion vectors of the blocks around the collocated block in the previous frame.
如果参考帧不是当前帧的前一帧,可以用参考帧为前一帧时已经计算出的MV尺度变换后作为预测值:
Figure: Predictor scaling could be used between different reference frames
还可以在S4中定义特定的搜索范围内一些固定的搜索点:
Figure: Additional fixed predictor Grid for search-range 16. These additional predictors could be centered either at (0,0) or around the MVP.
2.4.2自适应提前终止(Adaptive Early Termination)
相邻块的匹配误差也是相关的,因此可以引入终止条件来加速运动估计。先计算S1中预测向量(median predictor)的匹配误差,如果该值小于T1,则不继续搜索而直接退出。T1等于当前块的像素个数。如果不满足条件,则计算其他的预测向量,并和T2做比较,小的话就退出。
a 和 b是常量,MinJ1, MinJ2, …MinJn是相邻块最小的匹配误差,这里使用左,上,右上的块以及前一帧同一位置的块来计算T2。为了避免过早的退出,增加了一个常量MinJi :
,Np等于当前块的像素个数。对于多参考帧的情况还要进行相应的缩放。
2.4.3 MV修正
如果提前终止的条件不满足,则需要在前面匹配误差最小的位置作进一步搜索,EPZS提供了三种模板,计算复杂度依次升高,当然结果也越来越准确,可以根据具体的情况选择。
(a) | (b) |
Figure: Small diamond pattern used in EPZS
| ||
(a) | (b) | (c) |
Figure: EPZS using the square/circular pattern (EPZS2)
(a) | (b) | (c) | (d) |
Figure: The extended EPZS pattern (extEPZS)
Figure: Example of the Dual Pattern for EPZS.
Extended EPZS is used for the best predictor and EPZS2 is used for the MVP.
3.小结:
本文总结了常用的快速运动估计算法,这些算法针对序列图像的时空相关性和人眼视觉特性,利用运动矢量预测、非对称模板、灵活有效的中止准则,获得了比较理想的搜索结果。
2009.11.13
UMHexagonS算法
在H.264的编码过程中, 运动估计无疑是复杂度和运算最高的两部分. 目前h.264已经正式采纳了"非对称十字形多层次六边形格点搜索"(UMHexagonS算法), 它的运算量相对于快速搜索算法可节约90%以上,同时能保持较好的率失真性能. 在JM的测试模型中采用了该算法作为整像素运动估计算法, 其性能非常接近全搜索算法.
算法过程:(参考<<快速运动估计 UMHexagonS 算法的探讨与改进 >>)
- 先确定初始搜索点
- 从起始搜索点开始进行的搜索算法
UMHexagonS算法的特点
在运动搜索算法中, 一个很重要的步骤是对开始搜索前对运动矢量的预测, 利用运动矢量在空间域和时间域上的相关性可以有如下几种预测方法:
(1)中值预测:
- 上层块模式(Uplayer Preditction)
- 时间域上的预测方法.
a、前帧对应块运动矢量预测(Corresponding-block Prediction)
b、时间域的邻近参考帧运动运动矢量预测(Neighboring Reference-frame Prediction)