PointCloudLibrary/pcl — pull request #435 by andersgb1 (2014-01-09 21:37:24+00:00)
Title: A new interface to FLANN's multiple randomized trees for high-dimensional (feature) searches

This PR addresses PCL's missing interface to a proper search structure for high-dimensional data, as discussed here:

[http://www.pcl-users.org/KdTree-radiusSearch-giving-bad-output-td3806817.html](http://www.pcl-users.org/KdTree-radiusSearch-giving-bad-output-td3806817.html)

CHANGES IN THE COMMIT:
- A new nested class **KdTreeIndexMultiCreator** inside **FlannSearch** for creating FLANN's multiple randomized tree index, suitable for approximate high-dimensional searches. The number of trees defaults to 4 (as in FLANN), but can be changed within the creator class constructor.
- A new member variable **checks_** for controlling the search accuracy during all instantiations of **flann::SearchParams** performed inside **FlannSearch**. The default value is set to the same as the one used in FLANN (32) upon construction of **FlannSearch**.
- Made the typedefs inside **FlannSearch** public, because they are needed from outside.

TODO:
- Automatic use of **DefaultFeatureRepresentation** instead of the current **DefaultPointRepresentation** when passing **KdTreeMultiIndexCreator** to the constructor of **FlannSearch. Even though **DefaultPointRepresentation** already correctly vectorizes the feature part of features, it is semantically bad.
- Automatic initialization of the multi-index instead of the single one when **FlannSearch** is templated on a feature (dimension > 10).
- As far as I can see, Histogram is the only feature that does not have a **DefaultPointRepresentation**, I guess because it does not have a fixed size like e.g. **SHOT352** has. It would be nice to provide point registrations of this class for *N = {1, ..., N_max}*, making **DefaultFeatureRepresentation** complete for all possible built-in PCL features. Otherwise, the user has to call **POINT_CLOUD_REGISTER_POINT_STRUCT()** when he wants to use a **Histogram**.
- Unit test and tutorial, if needed?