Test bench for different ICP implementations.
The goal of this project is to provide a test bench for the OpenCV ICP algorithm, the main objective being to determine the influence of all the matching problem's parameyers (point cloud properties, transformation parameters and ICP initialization) on the efficiency and precision of the ICP's resulting transformation pose.
Contains different C++ files for ICP tests. Models/ Default folder for the point clouds that could be used for the testing. test_files Default folder for output files (testing results).
The first ICP algoruthm we tested is the matching algorithm that can be found in the ppf_match_3d
class in OpenCV's surface matching module.
This class implements a relatively efficient and robust variant of the iterative closest point (ICP) algorithm. The task is to register a 3D model (or point cloud) against a set of noisy target data. This implementation is able to compute from two point clouds (the model the 'original' point cloud, and the scene the coorespending moved point cloud) as well as a number of input parameters, the transformation's matrix and therfore its parameters.
This project is built with Cmake and uses the OpenCV
librairy, when in the source folder:
mkdir build
cmake -S . -B build/
Compile with make
in the build folder.
The file param.txt contains all the input parameters (ICP and motion parameters). Under each parameter the user can specify the start and end of the testing interval as well as the number of testing points:
parameter
start end number_of_test_points
An example and more explanation are provided in the input file.
NOTE: Only one parameter can be varied in one execution run, the third field of all the other parameters is to remain 0.
To execute the code on sample point cloud sample.ply using ICP parameters located in file param.txt when in build/:
make sample.ply param.txt
The output is a .csv file named after the parameter the user chose to change: it details through different metrics (L1,L2,Linf and L2inv norms) between the real and ICP transfomation matrices as well as the difference betwen the real and ICP motion parameters.
<script type="text/javascript" src="https://viewer.diagrams.net/js/viewer-static.min.js"></script>