我想比较一个图像(A)中的SURF描述符和几个其他图像(B,C,D,..)中的描述符,以找到与A最相似的图像。描述符有64个维度。 / p>
使用C#和Emgu,匹配是通过将A的描述符与B,然后是C,然后D'等进行比较来完成的。当图像数超过10时,这非常慢,因为必须搜索许多不相关的描述符。
为了加快这个过程,正确的方法(根据文章)似乎是为(B,C,D,..)中的描述符构建一个kd树以快速匹配在A中找到描述符.kd树根据级别进行维度分割。第一次分割由第一维决定,第二次由第二维分割等。但是,对于描述符(64),维数较高时,使用KD树的好处变小。
所以我的问题是:使用KD树/其他方法将SURF描述符从一个图像(A)与几个图像(B,C,D ......)匹配时,您有什么样的经验或知识。什么效果不错,不是很好,你做过这样的事吗?
FLANN将是一个选项,因为OpenCV使用它,但我找不到C#的版本。近似最近的Neightboor也可以选择加速kd树,但这对匹配图像有效吗?
祝你好运 莫滕
答案 0 :(得分:0)
您可以在C或C ++上尝试FLANN。它并不太复杂。
但是,我在C ++上测试FLANN,但匹配时间(使用SURF功能,FLANN,1000个图像上的查询)非常长,从20秒到400秒(取决于每个图像的特征向量数)。
答案 1 :(得分:0)