Iterative Closest Point
   HOME

TheInfoList



OR:

Iterative closest point (ICP) is an
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algorithms are used as specificat ...
employed to minimize the difference between two clouds of points. ICP is often used to reconstruct 2D or 3D surfaces from different scans, to localize robots and achieve optimal path planning (especially when wheel odometry is unreliable due to slippery terrain), to co-register
bone A bone is a Stiffness, rigid Organ (biology), organ that constitutes part of the skeleton in most vertebrate animals. Bones protect the various other organs of the body, produce red blood cell, red and white blood cells, store minerals, provid ...
models, etc.


Overview

The Iterative Closest Point algorithm keeps one point cloud, the reference or target, fixed, while transforming the other, the source, to best match the reference. The transformation (combination of translation and rotation) is iteratively estimated in order to minimize an error metric, typically the sum of squared differences between the coordinates of the matched pairs. ICP is one of the widely used algorithms in aligning three dimensional models given an initial guess of the
rigid transformation In mathematics, a rigid transformation (also called Euclidean transformation or Euclidean isometry) is a geometric transformation of a Euclidean space that preserves the Euclidean distance between every pair of points. The rigid transformations ...
required. The ICP algorithm was first introduced by Chen and Medioni, and Besl and McKay. The Iterative Closest Point algorithm contrasts with the
Kabsch algorithm The Kabsch algorithm, named after Wolfgang Kabsch, is a method for calculating the optimal rotation matrix that minimizes the RMSD ( root mean squared deviation) between two paired sets of points. It is useful in graphics, cheminformatics to compar ...
and other solutions to the
orthogonal Procrustes problem The orthogonal Procrustes problem is a matrix approximation problem in linear algebra. In its classical form, one is given two matrices A and B and asked to find an orthogonal matrix \Omega which most closely maps A to B. Specifically, :R = \arg\m ...
in that the Kabsch algorithm requires correspondence between point sets as an input, whereas Iterative Closest Point treats correspondence as a variable to be estimated. Inputs: reference and source point clouds, initial estimation of the transformation to align the source to the reference (optional), criteria for stopping the iterations. Output: refined transformation. Essentially, the algorithm steps are: # For each point (from the whole set of vertices usually referred to as dense or a selection of pairs of vertices from each model) in the source point cloud, match the closest point in the reference point cloud (or a selected set). # Estimate the combination of rotation and translation using a root mean square point to point distance metric minimization technique which will best align each source point to its match found in the previous step. This step may also involve weighting points and rejecting outliers prior to alignment. # Transform the source points using the obtained transformation. #
Iterate Iteration is the repetition of a process in order to generate a (possibly unbounded) sequence of outcomes. Each repetition of the process is a single iteration, and the outcome of each iteration is then the starting point of the next iteration. ...
(re-associate the points, and so on). Zhang 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.François Pomerleau, Francis Colas, Roland Siegwart, and Stéphane Magnenat
Comparing ICP Variants on Real-World Data Sets.
In Autonomous Robots, 34(3), pages 133–148, DOI: 10.1007/s10514-013-9327-2, April 2013.


Implementations

*
MeshLab MeshLab is a 3D mesh processing software system that is oriented to the management and processing of unstructured large meshes and provides a set of tools for editing, cleaning, healing, inspecting, rendering, and converting these kinds of meshes ...
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) The Point Cloud Library (PCL) is an open-source library of algorithms for point cloud processing tasks and 3D geometry processing, such as occur in three-dimensional computer vision. The library contains algorithms for filtering, feature estimatio ...
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 The Visualization Toolkit (VTK) is an open-source software system for 3D computer graphics, image processing and scientific visualization.''Visualization Handbook'', Academic Press, 2005, Chapter 30: the Visualization Toolkit/ref> VTK is distrib ...
,
ITK Itk is a framework for building mega-widgets using the Incr Tcl incr Tcl (commonly stylised as '' ncr Tcl/nowiki>'', and often abbreviated to ''itcl'') is a set of object-oriented extensions for the Tcl programming language. It is widely us ...
an
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.


See also

*
Point set registration In computer vision, pattern recognition, and robotics, point-set registration, also known as point-cloud registration or scan matching, is the process of finding a spatial transformation (''e.g.,'' scaling, rotation and translation) that aligns t ...


References

{{reflist, 30em Geometry in computer vision Robot navigation