你知道 David Nister 和 Henrik Stewenius 提出的图像匹配方法的任何实现或改进,称为“ Scalable Recognition with a Vocabulary Tree ”吗?我正在尝试实现它,但我无法理解算法的某些部分(更具体地说,计算分数)。
6 回答
这是词汇树的一个很好的实现 - libvot。它使用 C++11 标准多线程库来加速构建过程,因此运行速度非常快。
它使用三个步骤来构建词汇树。第一步是使用筛选描述符构建一个 kmeans 树。第二步是使用您在第一步中构建的词汇树来构建图像数据库。第三步是根据图像数据库查询图像。一些先进的技术,如倒排列表和 L1 距离测量也反映在这个存储库中。
关于词汇树,我发现这篇论文(http://www.tango-controls.org/Members/srubio/MasterThesis-VocabularyTree-SergiRubio-2009.pdf)用 C++/python 实现了它们。但是,我在任何地方都找不到代码,所以我联系了作者获取代码,但直到现在都没有成功。
此外,我发现了这个其他实现(http://www.inf.ethz.ch/personal/fraundof/page2.html),但是我无法让它发挥作用。
你已经实施了吗??我想对图像识别做同样的事情,但这似乎是一项非常痛苦的任务。
最好的祝福。
Sergio Rubio 在http://sourceforge.net/projects/vocabularytree/上发布了使用词汇树进行图像分类的实现。我不得不重新编写他发布的大部分 C 代码以使其在我的 Windows 系统上运行,但总的来说,它是实现原始论文中提出的想法的非常好的资源。
最近我在 C++ 中发现了一个非常棒的非免费词汇树实现,称为 DBow。
代码组织得很好,有很多注释。
您想查找空间填充曲线或空间索引。sfc 将 2d 复杂性降低到 1d 复杂性,尽管它只是表面的重新排序。sfc recursivley 将表面细分为更小的瓷砖,并不断挑选附近瓷砖的信息。它可以与四叉树进行比较。这对于比较图像很有用,因为您可以在附近进行比较。困难在于使瓷砖具有可比性。我相信 DCT 在这里很有用。您想查找 Nick 的希尔伯特曲线四叉树空间索引博客。
我相信 Grauman 和 Darrell 提出的Pyramid Match 核方法通常被认为更好。您可以在此处获得 C++ 库实现。