Image Component Library (ICL)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Types | Public Member Functions | Private Attributes
icl::geom::PointCloudCreator Class Reference

Utility class that allows to create 3D (optionally colored) point clouds from given 2D core::depth images. More...

#include <PointCloudCreator.h>

List of all members.

Public Types

enum  DepthImageMode { DistanceToCamCenter, DistanceToCamPlane, KinectRAW11Bit }
 Representation of the given core::depth images. More...

Public Member Functions

 PointCloudCreator ()
 creates a null instance
 PointCloudCreator (const Camera &depthCam, DepthImageMode mode=DistanceToCamPlane)
 creates a new instance with given core::depth camera (no rgbd mapping is available then)
 PointCloudCreator (const Camera &depthCam, const Camera &colorCam, DepthImageMode mode=DistanceToCamPlane)
 creates a new instance with given core::depth camera and color camera for rgbd mapping
 PointCloudCreator (const PointCloudCreator &other)
 deep copy constructor
PointCloudCreatoroperator= (const PointCloudCreator &other)
 deep copy assginment operator
 ~PointCloudCreator ()
 Destructor.
void init (const Camera &depthCam, DepthImageMode mode=DistanceToCamPlane)
 initializes with given core::depth camera (no rgbd mapping is available then)
void init (const Camera &depthCam, const Camera &colorCam, DepthImageMode mode=DistanceToCamPlane)
 initializes with given core::depth camera and color camera for rgbd mapping
void create (const core::Img32f &depthImage, PointCloudObjectBase &destination, const core::Img8u *rgbImage=0, float depthScaling=1)
 creates a point cloud
const CameragetDepthCamera () const
 returns the current core::depth camera
const CameragetColorCamera () const throw (utils::ICLException)
 returns the current camera camera (if this was not given, an exception is thrown)
bool hasColorCamera () const
 returns whether a color camera was given (and therefore whether RGBD-mapping is supported)
void mapImage (const core::ImgBase *src, core::ImgBase **dst, const core::Img32f *depthImageMM=0)
 maps another given image just like the rgbImage would be mapped
void setUseCL (bool use)
 Enables/disables openCL accelaration.
RGBDMapping getMapping () const throw (utils::ICLException)
 returns the internal mapping

Private Attributes

Data * m_data

Detailed Description

Utility class that allows to create 3D (optionally colored) point clouds from given 2D core::depth images.

The PointCloudCreator utility class can be used to two differenct modes. It's basic functionality is to transform a core::depth-image into a 3D point cloud. For this, a Camera instances is needed, which can be obtained from ICL's camera calibration tool icl-cam-calib-2 for real core::depth cameras such as Kinect.

If also a second camera file is provided for the color camera, then the PointCloudCreator class can also be used for mapping optionally given RGB-byte images to the contained point's colors.

Benchmarks

For VGA point clouds, creation with RGBD mapping takes about 8ms on a 2.5 GHz Core2Duo machine. If RGBD-mapping is not performed, the simple point cloud creation is performed in about 6 ms. For futher speed optimizations, we plan to add openmp optimization in the future.


Member Enumeration Documentation

Representation of the given core::depth images.

Depth image values can either be understood as distance values to the the camera center or as distances from the camera's viewing plane

Enumerator:
DistanceToCamCenter 

distances are given w.r.t. the camera center

DistanceToCamPlane 

distances are given w.r.t. the camera plance

KinectRAW11Bit 

default kinect raw values in range [0,2047]


Constructor & Destructor Documentation

creates a null instance

creates a new instance with given core::depth camera (no rgbd mapping is available then)

icl::geom::PointCloudCreator::PointCloudCreator ( const Camera depthCam,
const Camera colorCam,
DepthImageMode  mode = DistanceToCamPlane 
)

creates a new instance with given core::depth camera and color camera for rgbd mapping

deep copy constructor

Destructor.


Member Function Documentation

void icl::geom::PointCloudCreator::create ( const core::Img32f depthImage,
PointCloudObjectBase destination,
const core::Img8u rgbImage = 0,
float  depthScaling = 1 
)

creates a point cloud

returns the current camera camera (if this was not given, an exception is thrown)

returns the current core::depth camera

returns the internal mapping

Only if both- depth and camera camera parameters are available. Please note, that the returned shallowly copies the internal depth camera viewray array

returns whether a color camera was given (and therefore whether RGBD-mapping is supported)

initializes with given core::depth camera (no rgbd mapping is available then)

void icl::geom::PointCloudCreator::init ( const Camera depthCam,
const Camera colorCam,
DepthImageMode  mode = DistanceToCamPlane 
)

initializes with given core::depth camera and color camera for rgbd mapping

void icl::geom::PointCloudCreator::mapImage ( const core::ImgBase src,
core::ImgBase **  dst,
const core::Img32f depthImageMM = 0 
)

maps another given image just like the rgbImage would be mapped

Parameters:
srcimage assumed to be captured from the perspective of the color camera
dstdestimation image (automatically adapted)
depthImageMMoptionally given depth image (if NULL, then the last depthImage passed to the "create"-is used, which should usually be the right one)
PointCloudCreator& icl::geom::PointCloudCreator::operator= ( const PointCloudCreator other)

deep copy assginment operator

Enables/disables openCL accelaration.

In case of having no opencl support, this function does nothing


Member Data Documentation


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines