Go-ICP: A Globally Optimal Solution to 3D ICP Point-Set Registration

The Iterative Closest Point (ICP) algorithm is one of the most widely used methods for point-set registration. However, being based on local iterative optimization, ICP is known to be susceptible to local minima. Its performance critically relies on the quality of the initialization and only local optimality is guaranteed. This paper presents the first globally optimal algorithm, named Go-ICP, for Euclidean (rigid) registration of two 3D point-sets under the L2 error metric defined in ICP. The Go-ICP method is based on a branch-and-bound (BnB) scheme that searches the entire 3D motion space SE(3). By exploiting the special structure of SE(3) geometry, we derive novel upper and lower bounds for the registration error function. Local ICP is integrated into the BnB scheme, which speeds up the new method while guaranteeing global optimality. We also discuss extensions, addressing the issue of outlier robustness. The evaluation demonstrates that the proposed method is able to produce reliable registration results regardless of the initialization. Go-ICP can be applied in scenarios where an optimal solution is desirable or where a good initialization is not always available.


YouTube | YouKu | Download (13.4MB)

Source Code

The latest C++ code, together with the documentation and demo files, can be downloaded here: Go-ICP_V1.3.zip (853KB).
The code is released under the GNU General Public License (GPL) v3.
Please email us if you have questions, advices or find a bug.

NEW: The source code can be found on Github.

Publications and Submissions

<< Home