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)
void setCameras (const Camera &depthCam, const Camera &colorCam)
 sets new cameras (reinitializes data structures internally)
void setDepthCamera (const Camera &depthCam)
 sets the internally used depthCamera
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
void setFixes (float focalLengthMultiplier=1, float positionOffsetAlongNorm=0)
 sets up internal heuristical fixes applied to the used depth camera parameters

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

If the PointCloudCreator instance is set up to provide color information and the destionation point cloud does not support color information, the detination point cloud is tried to be adapted using PointCloudObjectBase::canAddFeature and PointCloudObjectBase::addFeature

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

void icl::geom::PointCloudCreator::setCameras ( const Camera depthCam,
const Camera colorCam 
)

sets new cameras (reinitializes data structures internally)

This functions is relatively complex, so it should be performed only when it is needed

sets the internally used depthCamera

This functions is relatively complex, so it should be performed only when it is needed. After using this function, the creator will have no color camera any more

void icl::geom::PointCloudCreator::setFixes ( float  focalLengthMultiplier = 1,
float  positionOffsetAlongNorm = 0 
)

sets up internal heuristical fixes applied to the used depth camera parameters

Parameters:
focalLengthMultiplieris used as multiplicative adaption to the orginal depth camera's focal length. 1 is the neutral value for this
positionOffsetAlongNormis used as additive displacement for the used depth camera along the camera's view normal

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