This project contains the Matlab code for the algorithm described in our paper:

This project contains the matlab and python code of the point set registration algorithm described in our paper:

Q. Liao, D. Sun, and H. Andreasson, "Point Set Registration for 3D Range Scans Using Fuzzy Cluster-based Metric and Efficient Global Optimization", TPAMI.

DOI: 10.1109/TPAMI.2020.2978477

\ No newline at end of file

DOI: 10.1109/TPAMI.2020.2978477

For matlab, there are six function files named 'fuzzyPSReg', 'normPoints', 'fuzzyClustering', 'fuzzyMetric', 'outerSearch' and 'innerSearch'.

The matlab code has been improved to be more efficient. Now its time costs are apparently lower than the results presented in the paper.

For python, the functions are included in a class named 'FuzzyPSReg' given in fuzzypsreg.py.

There are five pairs of point clouds for test. You can run demoi.m/demoi.py (i = 1,...,5) in matlab/python to see the results.

Please note that:

1. The fuzzy c-means clustering uses random initialization for fuzzy membership grades. Different values of the initialization may lead to different registration processes and results.

2. There are three methods for normalizing point clouds in the code. You can also try other methods.

3. The robust fuzzy c-means algorithm for postprocessing the results of fuzzy c-means as described in Section 3 of the paper is not included.

4. The grid steps ('gsF', 'gsM', 'gsF_fine' and 'gsM_fine') of box grid filter for downsampling point clouds are estimated based on the sizes of original fixed and moving point sets (not normalized point sets).

5. Using a relatively larger number of fuzzy clusters in coarse registration can better guarantee the validity of Strategy 2 described in the paper. You may try N_CMTrim larger than 100 for some cases.

6. The value of AFPCD is meaningless when the number of fuzzy clusters gets close to or is equal to the number of points, because it cannot correctly reflect the points' dispersion and distribution around fuzzy cluster centers without sufficient points in the fuzzy clusters. Therefore, Strategy 2 in the paper is used under the condition that the number of fuzzy clusters is much smaller than the number of points (AFPCD is positive and valid in this condition). In the experiments of the paper, AFCCD and AFPCD are calculated based on the fuzzy clusters of coarse registration, which satisfy the condition.