adakri / chp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

chp

icp-testbench

Test bench for different ICP implementations.

OpenCV's ICP

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.

src/opencv_icp

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).

OpenCV's ICP implementation

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.

How to build and compile this project

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.

How to use the OpenCV ICP test bench:

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>

About


Languages

Language:C 52.5%Language:C++ 47.5%