• GDAL中的SURF算法


    在去年的时候,在GDAL的邮件列表中发现有人提出要在GDAL中添加自动提取匹配点(GCP)的算法,在经过了将近半年的时间,GDAL中的匹配算法终于有了实质性的进展。在目前GDAL的开发版本(GDAL1.10beta)中已经提交,该匹配算法是基于SURF算法来实现的。

    实现该算法的人叫Andrew Migal,邮件地址为:migal.drew@gmail.com。同时在实现SURF算法的时候,Andrew通过博客记录了所有的过程,有兴趣的童鞋可以访问这里看看:http://correlatorgsoc2012.blogspot.com。

    在Andrew研究SURF的时候,最初写了一个C#版本的程序,代码挂靠在github上,下载地址为:https://github.com/migal-drew/SimpleSURF_csharp。之后又写了一个基于GDAL库的C++代码,代码下载地址为:https://github.com/migal-drew/GDAL-correlator。不过我记得这个C++版本的好像需要FLANN的库才能编译过去,不知道之后有没有修改。最后在GDAL库中也有相关的代码,有兴趣的童鞋可以更新开发版本的GDAL看看源代码。

    目前比较遗憾的是,对于SURF算法,还不支持大图像处理,看来处理的时候只能自己分块来处理了。

    下面是用andrew的C#版本程序处理了一下,感觉速度很快,比SIFT要快不少。对比的SIFT库是Rob Hess维护的SIFT库,同时测试数据也是使用Rob Hess库中里面的beaver和beaver_xform。


    beaver


    beaver_xform

    上面两个图像找到的特征点如下图所示,使用SURF阈值为0.001,分别找到了57个和59个特征点。如下图所示:


    接下来使用匹配阈值为1,进行匹配,发现只剩下了7对点,其中有一个明显是错误的(尾巴上的最右侧的那个点),如下图所示:


    点匹配的结果如下图所示。通过简单的直观感觉,SURF确实要比SIFT快很多,(通过这两个库可以比较一下,SIFT是C++的库,SURF是C#的库,C#的运行效率肯定不及C++的高),尤其是在查找特征点的时候,SURF的速度要比SIFT快很多,当然由于两者的参数没有进行相同的设置,可能也会影响速度。


  • 相关阅读:
    tomcat虚拟目录配置
    关于JS闭包
    数据列表里结合负边距做间隔线的技巧需注意的小细节
    前端优化技巧笔记
    浏览器工作原理相关笔记
    工作小心得(关于绝对定位元素)
    关于定位和溢出处理的一些小经历
    关于定位和z-index的一些小经历
    fullpage实现(-)
    移动端布局-实例
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6313965.html
Copyright © 2020-2023  润新知