如何使用 OpenCV 和 SIFT 查找我的训练图像的多个实例

Posted

技术标签:

【中文标题】如何使用 OpenCV 和 SIFT 查找我的训练图像的多个实例【英文标题】:How to find multiple instances of my training image with OpenCV and SIFT 【发布时间】:2014-05-20 12:43:12 【问题描述】:

到目前为止,我已经能够使用 BFMatcher 从我的查询图像中的训练图像中非常准确地检测到关键点。但是,我的查询图像(蜂箱的框架)中出现了几十个训练图像(蜜蜂)的实例。是否可以使用 SIFT 来查找另一个图像的多个独立实例?

理想情况下,我希望通过上面的图片能够将我的查询图像中的 4 个关键点与多个独立的蜜蜂进行匹配。

【问题讨论】:

【参考方案1】:

我不太了解 OpenCV,不知道它是否专门提供例程来提供帮助。也就是说,如果你有一个用于 SVD 的数值库,那么 DIY 的数学计算并不算太糟糕,例如麻木的。在 Lowe 2004 年的论文中,匹配取决于两个最接近匹配的比率。如果您计算“查询图像”中的所有关键点,然后应用此标准,您将很容易返回多个结果(如果它们存在)(数据库中具有相同比率 +/- epsilon 的任何 2 个关键点都是匹配的)。但是,这可能会导致虚假匹配。因此,除了 Lowe 论文中的基本测试之外,RANSAC 还可用于丢弃与“训练图像”和“查询图像”之间的单应性不一致的候选匹配。有关详细信息,请参阅 David Lowe 和谷歌“RANSAC 单应性”的“尺度不变关键点的独特图像特征”。我不确定您是否希望专门匹配 4 个关键点是否至关重要。我所指的技术将在每次 RANSAC 迭代中使用 4 个点来计算候选单应性,但是如果它们匹配并且与单应性一致,那么匹配的总数很容易大于 4。仅使用比率测试可以使用 4 点,但使用 RANSAC 则无法使用。

【讨论】:

【参考方案2】:

我记得一些关于蜜蜂的作品,它们使用特征向量技术进行检测(和粒子滤波器进行跟踪),也许会有帮助,也许没有:)

Khan, Z., Balch, T., & Dellaert, F. (2004, June). A rao-blackwellized particle filter for eigentracking. In Computer Vision and Pattern Recognition, 2004. CVPR 2004. Proceedings of the 2004 IEEE Computer Society Conference on (Vol. 2, pp. II-980). IEEE.

不管怎样,Zia Khan 研究员在追踪各种蜜蜂和蚂蚁方面(特别是粒子过滤器)做了一些出色的工作,看看他的其他作品,也许会有所帮助!

【讨论】:

以上是关于如何使用 OpenCV 和 SIFT 查找我的训练图像的多个实例的主要内容,如果未能解决你的问题,请参考以下文章

如何使用opencv查找手动定义的地标的描述符

Opencv实现图像无缝拼接,Sift查找特征点,Flann进行匹配

如何使用 C++ 在 OpenCV 4.2.0 中使用 SIFT? [关闭]

OpenCV+Python特征提取算法与图像描述符之SIFT / SURF / ORB

不能在 Python OpenCV v4.20 中使用 SIFT

c++ Opencv sift 位置检测