kzampog / cilantro

A lean C++ library for working with point cloud data
MIT License
1.03k stars 208 forks source link
3d 3d-visualization clustering convex convex-hull icp iterative-closest-point k-means mds mean-shift model-fitting non-rigid-registration pca point-cloud ransac reconstruction registration rgbd segmentation spectral-clustering
Logo
Build Status Documentation Status Documentation License

A Lean and Efficient Library for Point Cloud Data Processing

cilantro is a lean and fast C++ library for working with point cloud data, with emphasis given to the 3D case. It includes efficient implementations for a variety of common operations, providing a clean API and attempting to minimize the amount of boilerplate code. The library is extensively templated, enabling operations on data of arbitrary numerical type and dimensionality (where applicable) and featuring a modular/extensible design of the more complex procedures. At the same time, convenience aliases/wrappers for the most common cases are provided. A high-level description of cilantro can be found in our technical report.

Supported functionality

Basic operations:

Convex hulls and spatial reasoning:

Clustering:

Geometric registration:

Robust model estimation:

Visualization:

Dependencies

Building

cilantro is developed and tested on Ubuntu variants (18.04 and newer) using CMake. To clone and build the library (with bundled examples), execute the following in a terminal:

git clone https://github.com/kzampog/cilantro.git
cd cilantro
mkdir build
cd build
cmake ..
make -j

Documentation

Documentation (readthedocs.io, Doxygen API reference) is a work in progress. The short provided examples (built by default) cover a significant part of the library's functionality. Most of them expect a single command-line argument (path to a point cloud file in PLY format). One such input is bundled in examples/test_clouds for quick testing.

License

The library is released under the MIT license. If you use cilantro in your research, please cite our technical report:

@inproceedings{zampogiannis2018cilantro,
    author = {Zampogiannis, Konstantinos and Fermuller, Cornelia and Aloimonos, Yiannis},
    title = {cilantro: A Lean, Versatile, and Efficient Library for Point Cloud Data Processing},
    booktitle = {Proceedings of the 26th ACM International Conference on Multimedia},
    series = {MM '18},
    year = {2018},
    isbn = {978-1-4503-5665-7},
    location = {Seoul, Republic of Korea},
    pages = {1364--1367},
    doi = {10.1145/3240508.3243655},
    publisher = {ACM},
    address = {New York, NY, USA}
}