Skip to content

Latest commit

 

History

History

FastGlobalRegistration

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Fast Global Registration

Introduction

This is an open source C++ implementation based on the technique presented in the following paper:

Zhou QY., Park J., Koltun V. Fast Global Registration. Computer Vision – ECCV 2016

Objective

Consider two point sets P and Q. Our task is to find a rigid transformation T that aligns Q to P. The algorithm optimizes a robust objective on correspondences K between P and Q. These correspondences are established by rapid feature matching (FPFH) that is performed before the objective is optimized. The correspondences are not recomputed during the optimization. The objective has the following form:

where (p,q) in K are the correspondent points in P and Q. The robust penalty function, si the scaled Geman-McClure estimator.

Dependencies

  • CMake
  • PCL 1.8 (this will install all the other dependencies)

Compilation

FastGlobalRegistration is compiled using CMake.

> mkdir build
> cd build
> cmake ..
> make

To add the debug symbols (with no code optimization) add the flag run cmake -DCMAKE_BUILD_TYPE=Debug ...

Tested and MacOS 10.12 and Ubuntu 16.04.

Usage

The FastGlobalRegistration program takes two point clouds, P and Q, in pcd format:

> ./FastGlobalRegistration -p pointcloud_P.pcd -q pointcloud_Q.pcd

and prints the estimated rigid transformation matrix that aligns Q to P.

To see all available options, execute the program whit the flag -h

>./FastGlobalRegistration -h
Required arguments:
  -p [ --pointcloudP ] arg              Point cloud filename [*.pcd].
  -q [ --pointcloudQ ] arg              Point cloud filename [*.pcd].


Miscellaneous:
  -h [ --help ]                         Print help messages.
  
  -v [ --verbose ]                      Verbose output.
  
  -o [ --output ] arg                   Output filename, save the
                                        transformation matrix.
                                        
  -r [ --report ] arg                   Save an HTML report.
  
  -j [ --json ] arg                     Save the report as JSON file.

Algorithm parameters:
  -a [ --abs-scale ]                    If enabled, measure distance in
                                        absolute scale, otherwise in scale
                                        relative to the diameter of the model.

  -c [ --closed-form ]                  Use closed form solution for
                                        transformation estimation.

  --div-factor arg (=1.4)               Division factor used for graduated
                                        non-convexity.

  --stop-rmse arg (=0.01)               Optimization stops when reach the given
                                        RMSE.

  -n [ --iterations ] arg (=64)         Maximum number of iteration.

  --tuple-scale arg (=0.95)             Similarity measure used for tuples of
                                        feature points.

  -m [ --tuple-max-count ] arg (=100)   Maximum tuple numbers.

  --normals-search-radius arg (=0.03)   Normals estimation search radius.

  --fpfh-search-radius arg (=0.2)       FPFH estimation search radius.

If the abs-scale flag is not enabled, all the distances of the model (e.g., search radii and correspondence distance) are measured relatively to the diameter of the point cloud. This is the default behavior with synthetic data. For real-world data, where the absolute scale is known a priori, these parameters can be set accordingly.

The options stop-rmse and iterations determine when the optimization will stop. The first one is specifies the desired RMSE, the latter the maximum number of iterations.

The option tuple-max-count trades off between speed and accuracy. Increasing it will make the optimization slower, but the result can be more accurate.

By enabling the flag -c (default disabled), the transformation matrix is estimated by closed form solution. In particular, it's used the Horn’s method for the registration of 3D point clouds.

Reports

It is possible to export a JSON od HTML report of the registration process, it contains:

  • Final transformation matrix
  • Timing information
  • RMSE vs/ iterations
  • A summary of the parameters

License

This project is licensed under the MIT License - see the LICENSE file for details.