MAC++: Going Further with Maximal Cliques for 3D Registration
March 30, 2026 · View on GitHub
Source code of MAC++: Going Further with Maximal Cliques for 3D Registration.
Introduction
Maximal cliques (MAC) represent a novel state-of-the-art approach for 3D registration from correspondences, however, it still suffers from extremely severe outliers. In this paper, we introduce a robust learning-free estimator called MAC++, exploring maximal cliques for 3D registration from the following two perspectives:
- A novel hypothesis generation method utilizing putative seeds through voting to guide the construction of maximal clique pools, effectively preserving more potential correct hypotheses.
- A progressive hypothesis evaluation method that continuously reduces the solution space in a ''global-clusters-cluster-individual'' manner rather than traditional one-shot techniques, greatly alleviating the issue of missing good hypotheses.
Experiments conducted on U3M, 3DMatch/3DLoMatch, and KITTI-LC datasets show the new state-of-the-art performance of MAC++. MAC++ demonstrates the capability to handle extremely low inlier ratio data where MAC fails (e.g., showing 27.1%/30.6% registration recall improvements on 3DMatch/3DLoMatch with <1% inliers).
Build
MAC depends on PCL (version 1.12.1 is recommended) and igraph(=0.10.6). Please install these libraries first.
To build MAC, you need CMake and, of course, a compiler that supports >= C++11.
- Option 1 (purely on the command line): Use CMake to generate Makefiles and then
make.- You can simply run
$ cd path-to-root-dir-of-MAC $ mkdir Release $ cd Release $ cmake -DCMAKE_BUILD_TYPE=Release .. $ make
- You can simply run
- Option 2: Use any IDE that can directly handle CMakeLists files to open the
CMakeLists.txtin the root directory of MAC. Then you should have obtained a usable project and just build it. I recommend using CLion. - NOTICE: Please compile in RELEASE mode!
Usage: ./Boot --args
--helplist all usages.--demorun the demo.
Required args:
--output_pathoutput path for saving results.--input_pathinput data path.--dataset_namedataset name.--descriptordescriptor name.--start_index(begin from 0) run from given index.
Optional args:
--no_logsforbid generation of log files.
Datasets
All tested datasets can be found at this link, password:6666.
Citation
If you find this code useful for your work or use it in your project, please consider citing:
@inproceedings{zhang2025mac++,
title={MAC++: Going Further with Maximal Cliques for 3D Registration},
author={Zhang, Xiyu and Zhang, Yanning and Yang, Jiaqi},
booktitle={International Conference on 3D Vision 2025}
}