zoukankan      html  css  js  c++  java
  • 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快很多,当然由于两者的参数没有进行相同的设置,可能也会影响速度。


  • 相关阅读:
    gitlab搭建
    java数组
    安裝nextcloud
    Spring的定时任务@Scheduled(cron = "0 0 1 * * *")
    java内存结构(下)
    java内存结构(上)
    多线程的三个特性
    @RequestBody用法
    SwaggerAPI注解详解(转载)
    在jpanel中添加jbutton并自由设置按钮大小和位置
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6313965.html
Copyright © 2011-2022 走看看