在去年的时候,在GDAL的邮件列表中发现有人提出要在GDAL中添加自动提取匹配点(GCP)的算法,在经过了将近半年的时间,GDAL中的匹配算法终于有了实质性的进展。在目前GDAL的开发版本(GDAL1.10beta)中已经提交,该匹配算法是基于SURF算法来实现的。
目前比较遗憾的是,对于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快很多,当然由于两者的参数没有进行相同的设置,可能也会影响速度。