我想将一张图像 (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 的一个选项,但是这对匹配图像有效吗?
最好的问候莫腾