OpenCV - SURF特征比较

Bre*_*ett 9 c++ graphics opencv objective-c computer-vision

我很好奇如何OpenCV比较功能描述符.例如,我可以使用cvExtractSURF()获取功能列表及其64位(或128位)描述符,在哪里可以找到如何比较两个描述符?

在逐步介绍一些示例代码时,对我来说,看起来我的两个"匹配"特征具有非常不同的描述符(至少通过数值).

有没有人想出如何采取两个描述符数组并进行比较?

谷歌搜索没有太多帮助......

干杯,布雷特

Kar*_*nek 7

您可能希望查看本文不变特征检测器:调查.这是一篇很棒的论文,描述了广泛使用的特征探测器,包括SURF.

  • 我其实看过那篇论文.我希望能看到代码,所以我可以看到它是如何实现的.但是,这些学术论文似乎都没有开源代码.令人失望,因为重塑他们的工作从来都不是微不足道的. (4认同)

Sté*_*ard 3

在OpenCV 2.1示例文件find_obj.cpp中,提出了两种方法:

  • 内置的 C++ Flann 函数(flann 给出近似解决方案并且工作速度更快),我不知道它到底是如何工作的,但它记录在此处
  • 一个更简单的 C 函数 (findPairs()),它通过计算描述符之间的简单欧几里得距离来查找最近的邻居(请查看compareSURFDescriptors() 函数)。拉普拉斯算子还可以用作相似性的第一指示符,因为匹配点具有不同的拉普拉斯算子(1或-1)。该示例可在此处获取。