LIBICP: C++ Library for Iterative Closest Point Matching
LIBICP (LIBrary for Iterative Closest Point fitting) is a cross-platfrom C++ library with MATLAB wrappers for fitting 2d or 3d point clouds with respect to each other. Currently it implements the SVD-based point-to-point algorithm as well as the linearized point-to-plane algorithm. It also supports outlier rejection and is accelerated by the use of k-d trees as well as a coarse matching stage using only a subset of all points.
Changelog
- 16.02.2016: Incorporated an optional numerically more stable (but slower) solver for the linear least squares problem and fixed a bug in the 2D version of point-to-plane ICP. Thanks to Manolis Lourakis for providing this patch.
- 19.05.2015: Incorporated patches for parallel processing (OpenMP) and fixed some bugs. Thanks to Manolis Lourakis for providing them.
- 23.01.2015: Fixed a bug which occasionally led to a negative determinant of the rotation matrix. Thanks to Johannes Merkle for reporting.
- 21.09.2011: First version online
Prerequisites
We tried to keep dependencies as small as possible, but to get started you are going to need at least:
- BOOST libraries (needed by kd tree)
- CMAKE (if you want to compile the c++ demo program)
- MATLAB (if you want to use the MATLAB wrappers)
Download
This code is published under the
GNU General Public License.
Citation
If you find this software useful or if you use this software for your research, we would be happy if you cite the following related publication, where we used it for registering the ground truth point clouds for the stereo and optical flow benchmarks:
@inproceedings{
Geiger2012CVPR,
author = {
Andreas Geiger and
Philip Lenz and
Raquel Urtasun},
title = {Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite},
booktitle = {Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2012}
}