Home

Awesome

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

Getting Started

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

  Allowed options:
    -h [ --help ]         produce help message
    -f [ --f_d ] arg      focal length of depth camera
    -e [ --eps ] arg      sqrt of the epsilon parameter of the guided filter
    -b [ --B ] arg        guided filter windows size (size will be (2B+1)x(2B+1))
    -c [ --compress ]     compress the computed normals
  Allowed options:
    -h [ --help ]         produce help message
    -e [ --eps ] arg      sqrt of the epsilon parameter of the guided filter
    -b [ --B ] arg        guided filter windows size (size will be (2B+1)x(2B+1))
  Allowed options:
    -h [ --help ]         produce help message
    -i [ --input ] arg    path to input
    -o [ --output ] arg   path to output
    -s [ --scale ] arg    scale for normal extraction search radius