Iterative closest point
Iterative Closest Point (ICP) is an algorithm 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 models, etc.
The algorithm is conceptually simple and is commonly used in real-time. It iteratively revises the transformation (translation, rotation) needed to minimize the distance between the points of two raw scans.
Inputs: points from two raw scans, initial estimation of the transformation, criteria for stopping the iteration.
Output: refined transformation.
Essentially the algorithm steps are :
- Associate points by the nearest neighbor criteria.
- Estimate transformation parameters using a mean square cost function.
- Transform the points using the estimated parameters.
- Iterate (re-associate the points and so on).
The main algorithm drawback is that it is prone to accumulative errors, which can lead to the mapping algorithm failure.
[edit] See also
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.
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.
[edit] External links
- Iterative Point Matching for Registration of Free-Form Curves and Surfaces (1992) (Zhengyou Zhang)
- Derivation of ICP Equations
- Efficient Variants of the ICP Algorithm
- Finite Iterative Closest Point Method Matlab
- Iterative Closest Point Method in Matlab
- Iterative Closest Point Method in C++
| This applied mathematics-related article is a stub. You can help Wikipedia by expanding it. |