【问题标题】:Compare SURF descriptors in one image to a list of descriptors in other images将一个图像中的 SURF 描述符与其他图像中的描述符列表进行比较
【发布时间】:2012-01-09 15:03:33
【问题描述】:

我想将一张图像 (A) 中的 SURF 描述符与其他几张图像 (B,C,D,..) 中的描述符进行比较,以找到与 A 最相似的图像。描述符有 64 个维度。

使用 C# 和 Emgu,通过将 A 的描述符与 B 的描述符进行比较来完成匹配,然后是 C 的描述符,然后是 D 的描述符,依此类推。当图像数量超过 10 时,这非常慢,因为必须搜索许多不相关的描述符。

为了加快这个过程,正确的方法(根据文章)似乎是为 (B,C,D,..) 中的描述符构建一个 kd-tree 以快速匹配找到 A 中的描述符.kd-tree根据层级进行维度拆分。第一次拆分由第一维决定,第二次拆分由第二维等决定。但是,在描述符(64)的维数很高时,使用 KD-tree 的好处变得更小。

所以我的问题是:在使用 KD-tree/其他方法将 SURF 描述符从一个图像 (A) 匹配到多个图像 (B、C、D..) 方面,您有什么经验或知识。哪些工作做得好,哪些做得不好,你做过这样的事情吗?

FLANN 在这里是一个选项,因为它被 OpenCV 使用,但我找不到 C# 的版本。大约最近的 Neightboor 也是加速 kd-tree 的一个选项,但它是否适用于匹配图像?

最好的问候 莫腾

【问题讨论】:

    标签: c# opencv computer-vision surf kdtree


    【解决方案1】:

    您可以在 C 或 C++ 上尝试FLANN。也不算太复杂。

    但是,我在 C++ 上测试 FLANN,但匹配时间(使用 SURF 特征,FLANN,查询 1000 张图像)非常长,从 20 秒到 400 秒(取决于每个图像的特征向量数量)。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 2015-06-29
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多