之前在学校里对机载视频数字稳像方面的一些研究,选其中的一些内容分享到CSDN,转载请注明出处:四种子块匹配数字稳像算法评价【武林麦客】
图像子块匹配法是最为常用的一种运动估计算法,该方法假定图像中所有像素有着相同的运动。为了减少计算量,通常通过求解局部运动向量来获取全局运动向量,这种方法称为图像子块匹配法(Sub-image matching algorithm)。如下图所示描述了图像子块匹配法的基本原理。
单一的局部运动向量LVM代替全局运动向量 的做法容易产生误差,一个较好的减小误差的方法是定义多个图像子块,对多个子块的局部运动向量进行均值处理,这样得到的运动向量具有全局代表性。通常可以选择一帧图像中四边的四个子块,对于每个图像子块都做上述匹配,就可以得到所定义的四个图像子块的局部运动向量 。对得到的四个局部运动向量做算术平均后得到全局运动向量 。
常用的搜索策略有耗尽搜索法又称全搜索法、三步搜索法、菱形搜索法,有相关文献在此基础上做出了改进,出现了改进的三步搜索法、简便高效的三步搜索法、四步搜索法等,还有搜索效率比较高的自适应十字模板搜索法。搜索区域对搜索效率有着直接的影响,搜索区域的定义需要结合实际进行,在开始对搜索策略进行研究之前,先对搜索块规则进行约定。如下图所示,其中p是搜索参数。
全搜索法在所有搜索法中所需要的计算量是最大的,它会在搜索区域中一个不留的匹配所有的位置,以期找到最为满意的匹配块。显然,这种方法也是最为精确的。全搜索的这种特性对于那些实时性要求比较高的数字稳像系统来说并不是好的选择。示意图如下:
三步搜索法是最早尝试的快速块匹配搜索算法之一,它的思想是搜索粒度逐渐放细。下图是该方法的演示图。搜索的起始步长设置为4,通常情况下的搜索参数为7。开始第一次搜索,将图像子块依次移动到初始位置周围的八个点,如图中圆点所示,按照匹配准则进行匹配,得到最佳匹配后开始第二次搜索;第二步搜索以第一次搜索得到的最佳匹配块为中心,设置步长为2,将图像子块依次与该中心周围的八个小正方块进行匹配,按照选取的匹配准则得到最佳匹配后,完成第二步搜索;第三步搜索是在第二次搜索的基础上,设置步长为1,以第二步搜索得到的最佳匹配块为中心,将图像子块一次与该中心周围的八个小三角形块进行匹配,按照匹配准则得到最佳匹配块。最后一步得到的最佳匹配块即为三步搜索法的最佳匹配。
菱形搜索法和四步搜索法十分相似,不同的是它将搜索模板由正方形改成了菱形,而且它对搜索步长没有限制。该方法用了两个不同的搜索模板,一种是9个搜索位置的大菱形模板(LDSP),一种是有5个搜索位置的小菱形模板(SDSP),如下图。
自适应十字模板搜索法利用了帧运动通常具有连贯性的特点,例如,若当前子块附近的子块向某一特定方向移动,那么当前子块与之具有相同运动矢量的可能性很大。这个策略是从一篇外文文献上看到的,下面介绍的比较啰嗦,方法还是很棒的,耐心的看下去吧!不同于前面的几种搜索策略,自适应十字模板有两个阶段组成:
1. 初始粗搜索阶段;
2. 局部精确搜索阶段
对于每一个子块,初始粗搜索阶段仅执行一次以便能找到一个好的起始点,这也是为后续的精确搜索做准备。通过这种方式,就可以大大减少不必要的中间搜索和陷入局部最小值的风险。在第一阶段,自适应十字模板被确定,模板的大小是根据每个子块附近的子块动态决定的,它依赖于附近可用的子块的运动矢量。在第二阶段,重复的利用第一阶段产生的模板进行精确搜索,直到寻找到最佳匹配子块。为了加速搜索,0矢量运动也会被判定,这会对那些包含许多小范围运动的视频序列产生很有益的效果。
对于检测小运动来说,小模板密集搜索比大模板稀疏搜索要好,因为对于检测来说搜索窗必须搜索的位置很少。然而,当检测大运动时,小模板可能陷入局部最小错误估计。另外,大模板有快速检测大运动的优点,但它会产生不必要的搜索。总之,基于模板的搜索算法,其速度和精度紧紧依赖于搜索模板的尺寸和目标运动矢量的量级。所以,根据当前块的运动矢量的量级来选择不同的搜索模板很有意义。由以上分析可知,自适应十字模板搜索需要解决两个问题:
1. 当前块的运动矢量的预估计;
2. 搜索模板大小和形状的确定
关于第一个问题,大多数情况下,临近的子块有着相似的运动,因此,当前块的运动行为可以通过它周围的块进行预测。至于第二个问题,我们用到两种类型的搜索模板。一个是有着十字臂的自适应十字模板,它是动态决定的。注意自动搜索模板在每个运动块搜索开始时仅仅使用一次,目的是为剩下的局部搜索找到一个好的起始点,这会避免不必要的中间搜索和减少陷入局部最小的风险,这个新定义的起始点预期逼近全局最小点。还需注意的是这个小搜索模板将会在精确的局部搜索中重复的不受限制的使用,直到最终找到最佳匹配块。
在第一个问题中,为了获得当前块精确的运动矢量预估计,需要考虑两个因素:(1)选择组成相邻块的区域,这些块是用来计算预测运动矢量的;(2)计算预测运动矢量的算法。通常参考帧中与当前块具有同样位置的块是首选,其次是相同的参考帧中的相邻块。然而,利用时间相关法需要记录全部的先前的运动矢量,这会产生存储空间的开销。所以,可用空间相关法。空间相关即在空间区域中,由于视频帧中所有的块都是光栅扫描的方式处理的,当前块的运动矢量可用相邻的左、上、左上、右上中的组合来预估。其他空间位置的相邻块相关性比较小,预估不用它们。常用的如下图中的四种,图中CB表示当前块。
第一次用CSDN写博客,码的太长怕大家看不下去,对于四种搜索策略的评价和执行效率仿真实验及代码分享有时间再去介绍