Sift特征点匹配过程

来源:互联网 发布:数据存储四种方式 编辑:程序博客网 时间:2024/05/21 11:21


由步骤一我们已经获得了图片的特征点向量集合。现在来看看特征点匹配,特征点匹配的一个应用就是物体的识别,比如说我有2张图片A和B,图片的内容相同,只是图片的大小尺寸不同。假设A图片尺寸比较大,且我们已经采用sift算法对图片A和B都进行了检测,获得了它们的特征点集合,现在我们的问题是需要把A和B中相应的特征点给对应连线起来。

  既然是匹配,当然每个特征点向量要相似才能匹配到一起,这里采用的是欧式距离来衡量其相似度。

  对B中的特征点x,去寻找A中最相似的点y,最简单的方法就是拿x与A中所有点进行相似度比较,距离最小的那个为匹配点。但是如果图片中特征点数目很多的话,这样效率会很低。所以我们需要把A中特征点向量集合用一种数据结构来描述,这种描述要有利于x在A中的搜索,即减少时间复杂度。在sift匹配中,这种数据结构采用的是kd-tree。

  关于kd-tree的讲解,可以参考博文http://underthehood.blog.51cto.com/2531780/687160

  里面讲得比较详细,且举了例子,很容易理解,这里就没有必要重复了。

     同样,采用Rob Hess的代码做了个sift匹配的实验,开发环境与上面的一样。

     打开软件后,单击Open Image按钮,依次打开需要匹配的2张图片,如下图所示:


单击Sift Detect按钮,则程序会单独对这2幅图片进行sift特征点检测,结果如下图所示:


单击Sift Match按钮,则会对这2幅图的特征点结果进行匹配,本次实验的匹配图如下所示:


原创粉丝点击