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
