thumb|Idea behind the iterative closest point algorithm

Iterative closest point (ICP)

The ICP algorithm was first introduced by Chen and Medioni, proposes a modified k-d tree algorithm for efficient closest point computation. In this work a statistical method based on the distance distribution is used to deal with outliers, occlusion, appearance, and disappearance, which enables subset-subset matching.

There exist many ICP variants, from which point-to-point and point-to-plane are the most popular. The latter usually performs better in structured environments.

Non-rigid ICP

thumb|Registration of two point clouds using a non-rigid ICP method

While traditional ICP assumes rigid transformations, non-rigid ICP methods extend the algorithm to handle deformable objects and non-rigid registration scenarios. These methods incorporate additional constraints and regularization terms to model local deformations while maintaining surface coherence.

Implementations

  • MeshLab an open source mesh processing tool that includes a GNU General Public License implementation of the ICP algorithm.
  • CloudCompare an open source point and model processing tool that includes an implementation of the ICP algorithm. Released under the GNU General Public License.
  • PCL (Point Cloud Library) is an open-source framework for n-dimensional point clouds and 3D geometry processing. It includes several variants of the ICP algorithm.
  • Open source C++ implementations of the ICP algorithm are available in VTK, ITK and Open3D libraries.
  • libpointmatcher is an implementation of point-to-point and point-to-plane ICP released under a BSD license.
  • simpleICP is an implementation of a rather simple version of the ICP algorithm in various languages.
  • 3D-nonrigid-ICP is an open-source implementation of a non-rigid ICP method.

See also

  • Normal distributions transform

References