简体   繁体   English

将一个图像中的SURF描述符与其他图像中的描述符列表进行比较

[英]Compare SURF descriptors in one image to a list of descriptors in other images

I want to compare the SURF descriptors in one image (A), with the descriptors in several other images (B,C,D,..) to find the most similar image to A. The descriptors have 64 dimensions. 我想比较一个图像(A)中的SURF描述符和几个其他图像(B,C,D,..)中的描述符,以找到与A最相似的图像。描述符有64个维度。

Using C# and Emgu, the match is done by comparing A's descriptors to B's, then C's, then D's and so on. 使用C#和Emgu,匹配是通过将A的描述符与B,然后是C,然后是D'等进行比较来完成的。 This is very slow when the image count exceed 10, because many irrelevant descriptors have to be searched. 当图像数超过10时,这非常慢,因为必须搜索许多不相关的描述符。

To speed up the process, the right way to go (according to articles) seem to be to build one kd-tree for the descriptors in (B,C,D,..) to quickly match find the descriptor in A. The kd-tree is split in dimensions according to the level. 为了加快这个过程,正确的方法(根据文章)似乎是为(B,C,D,..)中的描述符构建一个kd树,以快速匹配在A中找到描述符.kd -tree根据级别进行尺寸分割。 First split is decided by 1st dimension, second split by 2nd dimension etc. However, at the number of dimensions are high for the descriptors (64), the benefit of using a KD-tree becomes smaller. 第一次分割由第一维度决定,第二次分割由第二维度等决定。但是,对于描述符(64),在维度数量高的情况下,使用KD树的好处变小。

So my question is: What experience or knowledge do you have with using a KD-tree/other method to match SURF descriptors from one image (A) to several images (B,C,D..). 所以我的问题是:使用KD树/其他方法将SURF描述符从一个图像(A)与几个图像(B,C,D ......)匹配时,您有什么经验或知识。 What works well and not so well and have you done anything like this? 什么运作良好,不太好,你做过这样的事情吗?

FLANN would be an option here, as it is used by OpenCV, but I can't find a version for C#. FLANN将是一个选项,因为OpenCV使用它,但我找不到C#的版本。 Approximately Nearest Neightboor would also be an option to speed up the kd-tree, but does that work well with matching images? 近似最近的Neightboor也可以选择加速kd树,但这对匹配图像有效吗?

Best regards Morten 最好的问候莫滕

You can try FLANN it on C or C++. 您可以在C或C ++上尝试FLANN It is not too complicated. 这不是太复杂。

However, I am testing FLANN on C++, but matching time (using SURF features, FLANN, query on 1,000 images) is very long, from 20 seconds to 400 seconds (depending on number of feature vectors per image). 但是,我在C ++上测试FLANN,但是匹配时间(使用SURF功能,FLANN,1000个图像上的查询)非常长,从20秒到400秒(取决于每个图像的特征向量的数量)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM