C++ - 使用 Bag of Words 将图片匹配在一起?

标签 c++ opencv matching sift

我想将一张图片(带有他的描述符)与数据库中的数千张图片进行比较,以便进行匹配。 (如果两张图片是一样的,也就是说是同一件事,但是可以旋转,有点模糊,比例不同等)。

例如: enter image description here

我在 StackOverflaw 上看到,为每张图片计算描述符并将它们一一比较是一个非常漫长的过程。 我做了一些研究,发现我可以做一个基于词袋的算法。

我还不知 Prop 体是如何工作的,但看起来不错。但是仔细想想,我可能会误会,它只是检测它不是什么样的物体?

根据您的说法,我想知道使用它是否是一个很好的解决方案,可以使用 Sift 等描述符将一张图片与数千张图片进行比较。冲浪?

如果是,您对我如何做到这一点有什么建议吗?

谢谢

最佳答案

是的,这是可能的。您唯一需要注意的是计算要求,这可能有点让人不知所措。如果您可以缩小搜索范围,通常会有所帮助。

为了支持我的回答,我将从我们最近的工作中提取一些例子。我们旨在使用 SIFT + RANSAC 匹配识别博物馆墙上的一幅画。我们有一个包含博物馆中所有画作的数据库,以及每幅画的 SIFT 描述符。我们的目标是识别可以从不同视角(所有模板都是正面的)或在不同光照条件下录制的视频中的疼痛。这张图片应该给你一个想法:在左边你可以看到模板和当前框架。第二张图是SIFT匹配,第三张图是RANSAC后的结果。

enter image description here

一旦您的图像与数据库中的每个 SIFT 描述符匹配,您就可以计算重投影误差,即匹配点(在 RANSAC 之后)与关键点总数之间的比率。可以对每个图像重复此操作,并且可以将具有最低重投影误差的图像声明为匹配项。

我们将它用于绘画,但我认为它可以推广到每一种图像(我认为你在问题中发布的 android Logo 是一个很好的例子)。

希望这对您有所帮助!

关于C++ - 使用 Bag of Words 将图片匹配在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24650243/

相关文章:

c++ - Struct 内部的指针

c++ - 如何从一段 HTML 源代码中获取字体颜色?

opencv - CVBlob : OSX installation

excel - 如何根据第一行和第一列中的值对一系列矩阵求和 - Excel VBA

c++ - 组织类层次结构的最佳方式,包括可重写的 "Update"函数

c++ - 将 Child 对象数组传递给接受 Parent* 的函数

opencv - 使用Inpaint进行拼接

opencv - 使用opencv进行频域傅里叶变换

Rust 匹配和借用检查器

r - 我怎样才能得到一个按谱系相互关联的值(value)指数列表? [R]