Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A new interface to FLANN's multiple randomized trees for high-dimensional (feature) searches #435

Merged
merged 1 commit into from
Feb 11, 2014

Conversation

andersgb1
Copy link
Contributor

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

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<FeatureT> instead of the current DefaultPointRepresentation<FeatureT> 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<N> 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?

randomized trees for high-dimensional searches, including a code example
in the class doxy.
- Made all typedefs of search::FlannSearch public.
@jspricke
Copy link
Member

Hi Anders, thanks for the contribution. What is your proposal for the TODO, do you want to add it into this pull request first, or should we merge it in the current state?
@amuetzel, as you are the original author, can you have a quick look, if you are ok with the patch? Thanks!

@andersgb1
Copy link
Contributor Author

Hi @jspricke

The TODOs (except for the last point which is trivial) are still very much unknowns from my side, and I would need help with decisions to make a PR. So my intention was to leave the current PR as is, and then open up a new issue with the first three points, if the current PR is accepted.

jspricke added a commit that referenced this pull request Feb 11, 2014
A new interface to FLANN's multiple randomized trees for high-dimensional (feature) searches
@jspricke jspricke merged commit c9e9f41 into PointCloudLibrary:master Feb 11, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants