Home

Awesome

<div align = "center"> <img src = "https://kzampog.github.io/images/cilantro_logo.png" width="300" alt = "Logo" /> </div> <div align = "center"> <a href = "https://github.com/kzampog/cilantro/actions/workflows/build.yml/badge.svg"> <img src = "https://github.com/kzampog/cilantro/actions/workflows/build.yml/badge.svg" alt = "Build Status" /> </a> <a href = "http://cilantro.readthedocs.io/en/latest/?badge=latest"> <img src = "https://readthedocs.org/projects/cilantro/badge/?version=latest" alt = "Documentation Status" /> </a> <a href = "https://codedocs.xyz/kzampog/cilantro/"> <img src = "https://codedocs.xyz/kzampog/cilantro.svg" alt = "Documentation" /> </a> <a href = "https://github.com/kzampog/cilantro/blob/master/LICENSE"> <img src = "https://img.shields.io/github/license/kzampog/cilantro" alt = "License" /> </a> </div>

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:

<div align = "center"> <img src = "https://kzampog.github.io/images/convex.png" width="800" /> </div>

Clustering:

<div align = "center"> <img src = "https://kzampog.github.io/images/conn_comp.png" width="800" /> </div>

Geometric registration:

<div align = "center"> <img src = "https://kzampog.github.io/images/fusion.png" width="800" /> <br> <img src = "https://kzampog.github.io/images/non_rigid.png" width="800" /> </div>

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}
}