All Projects → chrdiller → Kinectfusionlib

chrdiller / Kinectfusionlib

Licence: mit
Implementation of the KinectFusion approach in modern C++14 and CUDA

Projects that are alternatives of or similar to Kinectfusionlib

Kinectfusionapp
Sample implementation of an application using KinectFusionLib
Stars: ✭ 69 (-73.56%)
Mutual labels:  point-cloud, mesh, kinect
Draco
Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.
Stars: ✭ 4,611 (+1666.67%)
Mutual labels:  point-cloud, mesh
Easy3d
A lightweight, easy-to-use, and efficient C++ library for processing and rendering 3D data
Stars: ✭ 383 (+46.74%)
Mutual labels:  point-cloud, mesh
3dhop
3D Heritage Online Presenter
Stars: ✭ 89 (-65.9%)
Mutual labels:  point-cloud, mesh
Point Cloud Utils
A Python library for common tasks on 3D point clouds
Stars: ✭ 281 (+7.66%)
Mutual labels:  point-cloud, mesh
Msn Point Cloud Completion
Morphing and Sampling Network for Dense Point Cloud Completion (AAAI2020)
Stars: ✭ 196 (-24.9%)
Mutual labels:  point-cloud, cuda
3d Machine Learning
A resource repository for 3D machine learning
Stars: ✭ 7,405 (+2737.16%)
Mutual labels:  point-cloud, mesh
Fast gicp
A collection of GICP-based fast point cloud registration algorithms
Stars: ✭ 307 (+17.62%)
Mutual labels:  point-cloud, cuda
Meshlab
The open source mesh processing system
Stars: ✭ 2,619 (+903.45%)
Mutual labels:  point-cloud, mesh
Openmvs
open Multi-View Stereo reconstruction library
Stars: ✭ 1,842 (+605.75%)
Mutual labels:  point-cloud, mesh
Polylidar
Polylidar3D - Fast polygon extraction from 3D Data
Stars: ✭ 106 (-59.39%)
Mutual labels:  point-cloud, mesh
Point2Mesh
Meshing Point Clouds with Predicted Intrinsic-Extrinsic Ratio Guidance (ECCV2020)
Stars: ✭ 61 (-76.63%)
Mutual labels:  point-cloud, mesh
Cupoch
Robotics with GPU computing
Stars: ✭ 225 (-13.79%)
Mutual labels:  point-cloud, cuda
volumentations
Augmentation package for 3d data based on albumentaitons
Stars: ✭ 26 (-90.04%)
Mutual labels:  point-cloud, mesh
PyTorchTOP
GPU PyTorch TOP in TouchDesigner with CUDA-enabled OpenCV
Stars: ✭ 58 (-77.78%)
Mutual labels:  cuda
LuisaRender
High-Performance Multiple-Backend Renderer Based on LuisaCompute
Stars: ✭ 47 (-81.99%)
Mutual labels:  cuda
pc2vid
converts set of point clouds to a video using three.js
Stars: ✭ 18 (-93.1%)
Mutual labels:  point-cloud
crowdsource-video-experiments-on-android
Crowdsourcing video experiments (such as collaborative benchmarking and optimization of DNN algorithms) using Collective Knowledge Framework across diverse Android devices provided by volunteers. Results are continuously aggregated in the open repository:
Stars: ✭ 29 (-88.89%)
Mutual labels:  cuda
Splatnet
SPLATNet: Sparse Lattice Networks for Point Cloud Processing (CVPR2018)
Stars: ✭ 259 (-0.77%)
Mutual labels:  point-cloud
cuda-cmake-gtest-gbench-starter
A cross-platform CUDA/C++14 starter project with google test and google benchmark support.
Stars: ✭ 24 (-90.8%)
Mutual labels:  cuda

KinectFusion

This is an implementation of KinectFusion, based on Newcombe, Richard A., et al. KinectFusion: Real-time dense surface mapping and tracking. It makes heavy use of graphics hardware and thus allows for real-time fusion of depth image scans. Furthermore, exporting of the resulting fused volume is possible either as a pointcloud or a dense surface mesh.

Features

  • Real-time fusion of depth scans and corresponding RGB color images
  • Easy to use, modern C++14 interface
  • Export of the resulting volume as pointcloud
  • Export also as dense surface mesh using the MarchingCubes algorithm
  • Functions for easy export of pointclouds and meshes into the PLY file format
  • Retrieval of calculated camera poses for further processing

Dependencies

  • GCC 5 as higher versions do not work with current nvcc (as of 2017).
  • CUDA 8.0. In order to provide real-time reconstruction, this library relies on graphics hardware. Running it exclusively on the CPU is not possible.
  • OpenCV 3.0 or higher. This library heavily depends on the GPU features of OpenCV that have been refactored in the 3.0 release. Therefore, OpenCV 2 is not supported.
  • Eigen3 for efficient matrix and vector operations.

Prerequisites

  • Adjust CUDA architecture: Set the CUDA architecture version to that of your graphics hardware SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-O3 -gencode arch=compute_52,code=sm_52) Tested with a nVidia GeForce 970, compute capability 5.2, Maxwell architecture
  • Set custom opencv path (if necessary): SET("OpenCV_DIR" "/opt/opencv/usr/local/share/OpenCV")

Usage

#include <kinectfusion.h>

// Define the data source
XtionCamera camera {};

// Get a global configuration (comes with default values) and adjust some parameters
kinectfusion::GlobalConfiguration configuration;
configuration.voxel_scale = 2.f;
configuration.init_depth = 700.f;
configuration.distance_threshold = 10.f;
configuration.angle_threshold = 20.f;

// Create a KinectFusion pipeline with the camera intrinsics and the global configuration
kinectfusion::Pipeline pipeline { camera.get_parameters(), configuration };

// Then, just loop over the incoming frames
while ( !end ) {
    // 1) Grab a frame from the data source
    InputFrame frame = camera.grab_frame();

    // 2) Have the pipeline fuse it into the global volume
    bool success = pipeline.process_frame(frame.depth_map, frame.color_map);
    if (!success)
        std::cout << "Frame could not be processed" << std::endl;
}

// Retrieve camera poses
auto poses = pipeline.get_poses();

// Export surface mesh
auto mesh = pipeline.extract_mesh();
kinectfusion::export_ply("data/mesh.ply", mesh);

// Export pointcloud
auto pointcloud = pipeline.extract_pointcloud();
kinectfusion::export_ply("data/pointcloud.ply", pointcloud);

For a more in-depth example and implementations of the data sources, have a look at the KinectFusionApp.

License

This library is licensed under MIT.

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].