All Projects → kzampog → Cilantro

kzampog / Cilantro

Licence: mit
A lean C++ library for working with point cloud data

Projects that are alternatives of or similar to Cilantro

Maskfusion
MaskFusion: Real-Time Recognition, Tracking and Reconstruction of Multiple Moving Objects
Stars: ✭ 404 (-29.98%)
Mutual labels:  segmentation, reconstruction, rgbd
3dmatch Toolbox
3DMatch - a 3D ConvNet-based local geometric descriptor for aligning 3D meshes and point clouds.
Stars: ✭ 571 (-1.04%)
Mutual labels:  3d, point-cloud, rgbd
Awesome Gan For Medical Imaging
Awesome GAN for Medical Imaging
Stars: ✭ 1,814 (+214.38%)
Mutual labels:  segmentation, reconstruction, registration
Probreg
Python package for point cloud registration using probabilistic model (Coherent Point Drift, GMMReg, SVR, GMMTree, FilterReg, Bayesian CPD)
Stars: ✭ 306 (-46.97%)
Mutual labels:  3d, point-cloud, registration
Open3d
Open3D: A Modern Library for 3D Data Processing
Stars: ✭ 5,860 (+915.6%)
Mutual labels:  3d, reconstruction, registration
Depth clustering
🚕 Fast and robust clustering of point clouds generated with a Velodyne sensor.
Stars: ✭ 657 (+13.86%)
Mutual labels:  point-cloud, segmentation, clustering
Co Fusion
Co-Fusion: Real-time Segmentation, Tracking and Fusion of Multiple Objects
Stars: ✭ 400 (-30.68%)
Mutual labels:  segmentation, reconstruction, rgbd
Apc Vision Toolbox
MIT-Princeton Vision Toolbox for the Amazon Picking Challenge 2016 - RGB-D ConvNet-based object segmentation and 6D object pose estimation.
Stars: ✭ 277 (-51.99%)
Mutual labels:  3d, segmentation, rgbd
3dgnn pytorch
3D Graph Neural Networks for RGBD Semantic Segmentation
Stars: ✭ 187 (-67.59%)
Mutual labels:  point-cloud, segmentation, rgbd
3d Pointcloud
Papers and Datasets about Point Cloud.
Stars: ✭ 179 (-68.98%)
Mutual labels:  point-cloud, segmentation, registration
Volumetriccapture
A multi-sensor capture system for free viewpoint video.
Stars: ✭ 243 (-57.89%)
Mutual labels:  3d, reconstruction, rgbd
Superpoint graph
Large-scale Point Cloud Semantic Segmentation with Superpoint Graphs
Stars: ✭ 533 (-7.63%)
Mutual labels:  point-cloud, segmentation, clustering
Deca
DECA: Detailed Expression Capture and Animation
Stars: ✭ 292 (-49.39%)
Mutual labels:  3d, reconstruction
Pointnet
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
Stars: ✭ 3,517 (+509.53%)
Mutual labels:  point-cloud, segmentation
So Net
SO-Net: Self-Organizing Network for Point Cloud Analysis, CVPR2018
Stars: ✭ 297 (-48.53%)
Mutual labels:  3d, point-cloud
Fast gicp
A collection of GICP-based fast point cloud registration algorithms
Stars: ✭ 307 (-46.79%)
Mutual labels:  point-cloud, registration
Fcgf
Fully Convolutional Geometric Features: Fast and accurate 3D features for registration and correspondence.
Stars: ✭ 328 (-43.15%)
Mutual labels:  3d, registration
Intrinsic3d
Intrinsic3D - High-Quality 3D Reconstruction by Joint Appearance and Geometry Optimization with Spatially-Varying Lighting (ICCV 2017)
Stars: ✭ 297 (-48.53%)
Mutual labels:  3d, rgbd
Easy3d
A lightweight, easy-to-use, and efficient C++ library for processing and rendering 3D data
Stars: ✭ 383 (-33.62%)
Mutual labels:  point-cloud, reconstruction
Dipy
DIPY is the paragon 3D/4D+ imaging library in Python. Contains generic methods for spatial normalization, signal processing, machine learning, statistical analysis and visualization of medical images. Additionally, it contains specialized methods for computational anatomy including diffusion, perfusion and structural imaging.
Stars: ✭ 417 (-27.73%)
Mutual labels:  segmentation, registration
Logo

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:

  • General dimension kd-trees (using bundled nanoflann)
  • Surface normal and curvature (robust) estimation from raw point clouds
  • General dimension grid-based point cloud resampling
  • Principal Component Analysis
  • Basic I/O utilities for 3D point clouds (in PLY format, using bundled tinyply) and Eigen matrices
  • RGBD image pair to/from point cloud conversion utilities

Convex hulls and spatial reasoning:

  • A general dimension convex polytope representation that is computed (using bundled Qhull) from either vertex or half-space intersection input and allows for easy switching between the respective representations
  • A representation of generic (general dimension) space regions as unions of convex polytopes that implements set operations

Clustering:

  • General dimension k-means clustering that supports all distance metrics supported by nanoflann
  • Spectral clustering based on various graph Laplacian types (using bundled Spectra)
  • Mean-shift clustering with custom kernel support
  • Connected component based point cloud segmentation that supports arbitrary point-wise similarity functions

Geometric registration:

  • Multiple generic Iterative Closest Point implementations that support arbitrary correspondence search methods in arbitrary point feature spaces for:
    • Rigid or affine alignment under the point-to-point metric (general dimension), point-to-plane metric (2D or 3D), or any combination thereof
    • Non-rigid alignment of 2D or 3D point sets, by means of a robustly regularized, locally-rigid or locally-affine deformation field, under any combination of the point-to-point and point-to-plane metrics; implementations for both densely and sparsely (by means of an Embedded Deformation Graph) supported warp fields are provided

Robust model estimation:

  • A RANSAC estimator template and instantiations thereof for general dimension:
    • Robust hyperplane estimation
    • Rigid point cloud registration given noisy correspondences

Visualization:

  • Classical Multidimensional Scaling (using bundled Spectra for eigendecompositions)
  • A powerful, extensible, and easy to use 3D visualizer

Dependencies

  • Eigen (version 3.3 or newer) [required]
  • Pangolin (built with Eigen enabled) [optional; needed for visualization modules and most examples]

Building

cilantro is developed and tested on Ubuntu variants (16.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}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].