The following method for registration of point sets is part of many publications, so only a short summary is given here. The complete algorithm was invented in 1991 and can be found, e.g., in [4,6,22]. The method is called Iterative Closest Points (ICP) algorithm.
Given two independently acquired sets of 3D points, (model set, ) and (data set, ) which correspond to a single shape, we want to find the transformation consisting of a rotation and a translation which minimizes the following cost function:
The ICP algorithm calculates iteratively the point correspondence. In each iteration step, the algorithm selects the closest points as correspondences and calculates the transformation () for minimizing equation (1). It is shown that the iteration terminates in a minimum [4]. The assumption is that in the last iteration step the point correspondences are correct.
In each iteration, the transformation is calculated by the quaternion based method of Horn [12]. A unit quaternion is a 4 vector , where . It describes a rotation axis and an angle to rotate around that axis. A rotation matrix is calculated from the unit quaternion according the the following scheme:
To determine the transformation, the mean values (centroid
vectors) and are subtracted from all points in
and , respectively, resulting in the sets and .
The rotation expressed as quaternion that minimizes equation
(1) is the largest eigenvalue of the cross-covariance
matrix
The time complexity of the algorithm mainly depends on determination of the closest points (brute force search O() for 3D scans of points). Several enhancements have been proposed [4,17]. We have implemented d-trees as proposed by Simon et al., combined with the above-described reduced points. Table 1 summarizes the results of different experiments on a Pentium-III-800. The starting point for optimization is given by the robot odometry.
points used | time | # iter. |
all points & brute force | 3 hours 47 min | 27 |
reduced points & brute force | 3 min 6 sec | 25 |
all points & D-tree | 6 sec | 27 |
reduced points & D-tree | 1.4 sec | 25 |