You are here

Why not quad trees for icp algorithm

sir,
It is known each node in quad tree gives 2^k=8 children( 'k=3 dimensions). But in kd tree it is only 2 children at a time. So it will be fast to search in quad tree than kdtree. Even then why kd-trees are preferred to quad trees for icp algorithm implementation.

Thank You,
Jagadish K

Forums: 
jlblanco's picture

Hi Jagadish,

> Even then why kd-trees are preferred to quad trees for icp algorithm implementation.

Good question. But it has a very shaming answer: because kd-tree was already there (from high-dimensionality descriptor classifiers, etc.).

It's a good idea to think of writing an equivalent of the present mrpt::utils::KDTreeCapable but for octrees for 3D point clouds (and, perhaps, quadtrees for 2D point clouds, but I think there'll be not a large performance penalty in using octrees even for 2D point clouds and the implementation will be clearer). Then, CPointsMap should be modified to use that new class instead of KDTreeCapable. The idea of making a generic class instead of implementing KD-trees (or octrees) directly in the CPointsMap's classes is to reuse all that code, for example, for sets of feature points on an image, etc...

Right now it's impossible for me to put on this, but if you (or someone else) wants to try it and arrives to something useful, can answer to this thread.

Thanks for sharing the idea here, Jagadish!

JL

jagadish's picture

Thank you

jlblanco's picture

Just reported this as a feature request so it doesn't got lost the mists of time...

http://www.mrpt.org/node/433