项目

一般

简介

A high-precision localization algorithm by improved SIFT-keypoints

这篇文章着重讲了两方面的内容:1.修改SIFT算法,提升匹配效率。2.改进对特征点的定位算法,使获得的图像变换矩阵比传统SIFT算法更精确。

算法描述

提升匹配效率的策略:在提取特征点,计算特征点主方向两个方面与SIFT相同,但该文的算法免去了建立描述子的工作。具体流程如下

FOR 任一模板图中的特征点A
FOR 任一目标图中的特征点B
记SITA=A的主方向-B的主方向
记S=A的尺度-B的尺度
FOR 模板图中的所有特征点F(I)
F(I)'.X=S*(F(I).X*COS(SITA)-F(I).Y*SIN(SITA))
F(I)'.Y=S*(F(I).X*SIN(SITA)+F(I).Y*COS(SITA))
END FOR
记匹配点对总数为0
FOR 任一F(I)'
IF 目标图中有特征点的坐标与F(I)'相近则
匹配点总数加一
END IF
END FOR
更新匹配点总数的最大值
END FOR
END FOR
IF 匹配点总数的最大值>某阈值则
该最大值相对应的坐标变换是最佳的,用这个变换来得到匹配点对
ELSE
该模板图与目标图不匹配
END IF

改进对特征点的定位算的策略

  1. 利用上文的匹配算法算得的所有匹配点对,用最小二乘解的方法算出两幅图像I1,I2的变换矩阵(因为这些点对包括了错配,所以精度低,记矩阵为H1)
  2. 用H1对模板图I1做坐标变换,得到I1'(显然I1'中的特征点无需重复提取)
  3. 将每个I1'特征点的邻域(如N*N像素)与I2中特征点的邻域进行匹配(由于只需定性判断,这里用简单高效的灰度匹配,一般I1'特征点的邻域比I2中特征点的邻域小),获得去掉错配后的I1',I2间的精确匹配点对集合S'
  4. 找出I1中与I1'中属于S'的特征点对应的特征点,获得I1,I2间的精确匹配点对集合S。由这些点对最小二乘解的方法计算高精度的变换矩阵H2,即最终所求矩阵。

创新点

  • 这两个改进事实上是一个整体,它在保证最后变换矩阵结果精确的前提下,对中间步骤进行了调整。
  • SIFT走的路线是:高精度的特征点,得到高精度的描述子,用高精度的匹配KDTree+RANSAC得到高精度的点对,再对点对用LM算得高精度的矩阵。而本文算法的路线是:高精度的特征点,用低精度但高效的粗匹配得到低精度矩阵,用所得矩阵对模板图进行几何变换,用模板匹配筛去错配特征点,再进行矩阵计算,最后得到高精度的矩阵。
  • 对于第一个改进,它的创新在于略去了计算耗时在整个SIFT中占比重最大的描述子计算,而直接进行低精度快速匹配。该匹配时间复杂度O(NM2LOG),但由于无需算描述子,速度比传统SIFT快。对于第二个改进,它的创新在于矩阵计算分两步到位(即计算,匹配,再计算),在保证最后结果高精度的条件下提升了速度。

结果比较

从作者的分析看,本文算法运行的结果在时效和精度上都胜于SIFT,但由于作者测试的图像太少,情形单一,算法稳定性还有待进一步证实。

_A_high-precision_localization_algorithm_by.pdf (471 KB) 胡 直, 2012-08-11 09:44