jstraub / cudaPcl

depth image processing using CUDA
Other
99 stars 24 forks source link

This gpu-enhanced library implements edge-preserving smoothing of depth frames from standard rgb-d sensors as well as surface normal extraction at a frame rate of 100Hz.

Depth before and after smoothing

Raw depth image vs. guided filter smoothed image on the right. Note that similar to a bilateral filter the guided filter performs edge preserving filtering as can be observed at the sharp discontinuities of the windows.

smoothed surface normals

Extracting surface normals using gradients of the depth image and a cross-product operation yields smoothed surface normals.

Dependencies

This code depends on the following other libraries and was tested under Ubuntu 14.04.

The GPU kernels were tested on a Nvidia Quadro K2000M with compute capability 3.0.

Install

This package uses the pods build system. Used widely at CSAIL MIT the build system makes it easy to break up software projects into small packages that can be checked out and compiled automatically (see below).

Plug in your Kinect and run the following from the cudaPcl folder:

 ./build/bin/openniSmoothNormals 

Library

libcudaPcl.so collects all the cuda code into one shared library. The rest of the code is in the form of header files.

Executables