I want to compare SURF descriptors in one image (A) with descriptors in several other images (B, C, D, ..) to find the most similar image in A. Descriptors have 64 dimensions.
Using C # and Emgu, matching is done by comparing the descriptors A with B, then C, then D, etc. This is very slow when the number of images exceeds 10, because you need to look for many irrelevant descriptors.
To speed up the process, the right way (according to the articles) seems to be to build one kd tree for descriptors in (B, C, D, ..) in order to quickly match the descriptor search in A. The Kd tree is split by sizes according to level. The first split is determined by the 1st dimension, the second is divided into the 2nd dimension, etc. However, with the number of measurements for the descriptors (64), the advantage of using the KD tree becomes less.
So my question is: what kind of experience or knowledge do you have using the KD tree / another method for matching SURF descriptors from one image (A) to several images (B, C, D ..). What works well and not so good, and you did something like that?
FLANN will be an option here since it is used by OpenCV, but I cannot find a version for C #. About Nearest Neightboor will also be an opportunity to speed up the work of the kd-tree, but does it work well with the corresponding images?
Regards Morten
source share