GDAL中的SURF算法

114 篇文章 245 订阅
5 篇文章 0 订阅

在去年的时候,在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快很多,当然由于两者的参数没有进行相同的设置,可能也会影响速度。


评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值