如何使用OpenCV和SIFT查找训练图像的多个实例
到目前为止,我已经能够非常准确地使用BFMatcher从我的训练图像中检测到关键点,这些训练图像是蜜蜂,而查询图像是蜂箱的画面。不过,我在查询图像中有很多蜜蜂的实例。请问,能否使用SIFT来寻找多个独立的蜜蜂图像呢?
理想情况下,我希望能在上面的图像中,将查询图像中的4个关键点与多个独立的蜜蜂进行匹配。
2 个回答
1
我记得有一些关于蜜蜂的研究,使用了特征向量技术来进行检测(还有粒子滤波器来跟踪),这可能会有帮助,也可能没有 : )
总之,研究员Zia Khan在跟踪方面做了很多出色的工作,特别是在粒子滤波器方面,他研究了各种类型的蜜蜂和蚂蚁,看看他的其他研究,可能会对你有帮助!
3
我对OpenCV不太了解,不确定它是否有专门的工具来帮助处理这个问题。不过,如果你有像numpy这样的数值库,自己动手做数学计算其实也不是太难。在Lowe 2004年的论文中,匹配是通过两个最接近的匹配之间的比例来判断的。如果你计算出“查询图像”中的所有关键点,然后应用这个标准,如果有多个匹配的话,你会很容易得到多个结果(数据库中任何两个关键点的比例相同,误差在±epsilon范围内,都是匹配)。不过,这样可能会出现一些错误的匹配。因此,除了Lowe论文中的基本测试外,还可以使用RANSAC来排除那些与“训练图像”和“查询图像”之间的单应性不一致的候选匹配。想了解更多,可以查阅David Lowe的《从尺度不变关键点提取独特图像特征》以及搜索“RANSAC homography”。我不确定你特别想匹配4个关键点是否很重要。我提到的技术会在每次RANSAC迭代中使用4个点来计算候选的单应性,但如果有更多的匹配点符合单应性,匹配的总数可以轻松超过4个。仅使用4个点只通过比例测试是可以的,但使用RANSAC就不行了。