FLANN (Fast Library for Approximate Nearest Neighbors) is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It contains a collection of algorithms we found to work best for nearest neighbor search and a system for automatically choosing the best algorithm and optimum parameters depending on the dataset. FLANN is written in C++ and contains bindings for the following languages: C, MATLAB, Python, and Ruby. https://github.com/mariusmuja/flann
What are the algorithms available to FLANN and how does it choose which algorithm and parameters to use?
I ask because, I noticed a x10 speed decrease using a voxel filter prior to using FLANN and wish to figure out what to attribute it to. The voxel filter removes 70% of the points in the data, but the speed decrease seems to much greater.
FLANN uses these algorithms (defines.h):
Section 2, last paragraph, from FAST APPROXIMATE NEAREST NEIGHBORS WITH AUTOMATIC ALGORITHM CONFIGURATION, Mins, Lowe, 2009, it mentions:
Section 3.3 answers your question about how FLANN chooses the algorithm it appears (from the sample) to be the best at hand. Here is half of it: