PointCloudLibrary / PointCloudLibrary/pcl

[registration] Support use of search methods other than KdTreeFLANN

Open
#5,619 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

kind: request module: registration status: triage
Dominant language
C++
Stars
11.1k
Forks
4.7k
Avg merge
4d 10h
Merged PRs (30d)
6

Description

The Registration class has a hardcoded assumption that the KdTree implementation is KdTreeFLANN. It uses an alias here:

https://github.com/PointCloudLibrary/pcl/blob/master/registration/include/pcl/registration/registration.h#L70

and does not expose the second template parameter to the KdTree base class, which then defaults to KdTreeFLANN

https://github.com/PointCloudLibrary/pcl/blob/master/search/include/pcl/search/kdtree.h#L60

Is it possible to support other search methods?

Context

I am currently trying unsuccessfully to shoehorn OrganizedNeighbor into my registration pipeline, since building the KdTree can take a lot of time for each new cloud, and mine are organized.

Expected behavior

Registration classes work with any search method exposing nearestKSearch() and radiusSearch() methods.

Current Behavior

Registration can only use KdTreeFLANN

Describe the solution you'd like

Encapsulating the use of setPointRepresentation() in some registration classes, and make the search method configurable with setSearchMethodSource(), setSearchMethodTarget().

Describe alternatives you've considered

n/a

Additional context

n/a

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Registration class and its alias in registration/include/pcl/registration/registration.h, then compare the KdTree template default in search/include/pcl/search/kdtree.h. Trace how nearestKSearch() and radiusSearch() are used and how setPointRepresentation() is exposed. Done means registration can configure source and target search methods instead of assuming KdTreeFLANN.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-vision
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.