SURF的原理我不再叙述,本文主要是应用SURF进行两张图片的关键点匹配。
opencv二维特征点匹配常见的两种办法Brute Force匹配和FLANN匹配,分别对应BruteForceMatcher类和FlannBasedMatcher类。二者的区别在于BFMatcher总是尝试所有可能的匹配,从而使得它总能够找到最佳匹配,这也是Brute Force(暴力法)的原始含义。而FlannBasedMatcher中FLANN的含义是Fast Library forApproximate Nearest Neighbors,从字面意思可知它是一种近似法,算法更快但是找到的是最近邻近似匹配,所以当我们需要找到一个相对好的匹配但是不需要最佳匹配的时候往往使用FlannBasedMatcher。当然也可以通过调整FlannBasedMatcher的参数来提高匹配的精度或者提高算法速度,但是相应地算法速度或者算法精度会受到影响。
程序参考《OpenCV3编程入门》配套示例程序:SURF特征点匹配,对该程序进行了一些修改,主要有以下功能:
1.通过滚动条来实现hessian阈值的动态调节;
2.通过滚动条来实现绘点方式