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

#include <ObjectEdgeDetector.h>

List of all members.

Public Types

enum  Mode { BEST, GPU, CPU }

Public Member Functions

 ObjectEdgeDetector (Mode mode=BEST)
 Create new ObjectEdgeDetector.
virtual ~ObjectEdgeDetector ()
 Destructor.
const core::Img8ucalculate (const core::Img32f &depthImage, bool filter, bool average, bool gauss)
 One call function for calculation of the complete processingpipeline.
void setDepthImage (const core::Img32f &depthImg)
 Sets the input depth image (input for median filter).
void applyMedianFilter ()
 Calculates a filtered image using a median filter.
const core::Img32fgetFilteredDepthImage ()
 Returns the filtered depth image.
void setFilteredDepthImage (const core::Img32f &filteredImg)
 Sets the (filtered) depth image (input for normal calculation)
void applyNormalCalculation ()
 Calculates the point normals.
void applyLinearNormalAveraging ()
 Recalculates the normals by linear averaging.
void applyGaussianNormalSmoothing ()
 Recalculates the normals by gaussian smoothing in a given range.
const core::DataSegment< float, 4 > getNormals ()
 Returns the Pointer to the normals.
void applyWorldNormalCalculation (const Camera &cam)
 Transforms the normals to the world space and calculates normal image.
const core::DataSegment< float, 4 > getWorldNormals ()
 Returns the point normals in world space.
const core::Img8ugetRGBNormalImage ()
 Returns the RGB normal image.
void setNormals (core::DataSegment< float, 4 > pNormals)
 Sets the point normals (input for angle image calculation).
void applyAngleImageCalculation ()
 Calculates the angle image.
const core::Img32fgetAngleImage ()
 Returns the angle image.
void setAngleImage (const core::Img32f &angleImg)
 Sets the angle image (input for image binarization).
void applyImageBinarization ()
 Binarizes the angle image to detect edges.
const core::Img8ugetBinarizedAngleImage ()
 Returns the binarized angle image (final output).
void setMedianFilterSize (int size)
 Sets the mask size for applyMedianFilter()
void setNormalCalculationRange (int range)
 Sets the range for applyNormalCalculation().
void setNormalAveragingRange (int range)
 Sets the averaging range for applyNormalAveraging()
void setAngleNeighborhoodMode (int mode)
 Sets the neighborhood mode for applyAngleImageCalculation()
void setAngleNeighborhoodRange (int range)
 Sets the neighborhood range for applyAngleImageCalculation()
void setBinarizationThreshold (float threshold)
 Sets the binarization threshold for applyImageBinarization().
void setUseNormalAveraging (bool use)
 Sets normal averaging enabled/disabled.
void setUseGaussSmoothing (bool use)
 Sets normal averaging by gauss smoothing enabled/disabled.

Private Member Functions

void initialize (utils::Size size)

Private Attributes

Data * m_data
 internal data type
ObjectEdgeDetectorPlugin * objectEdgeDetector

Detailed Description

This class calculates an edge image based on angles between normals from an input depth image (e.g. Kinect). The common way to use this class is the calculate() method, getting a depth image and returning an edge image. This method computes the whole pipeline (image filtering, normal calculation and smoothing, angle image calculation and binarization). The performance of this method is optimized with minimal read/write for the underlying OpenCL implementation. The interim results can be accessed with getNormals() and getAngleImage() afterwards. It is also possible to use subparts of the pipeline using the setter methods to set the interim data.


Member Enumeration Documentation

Enumerator:
BEST 
GPU 
CPU 

Constructor & Destructor Documentation

Create new ObjectEdgeDetector.

Constructs an object of this class. All default parameters are set. Use setters for desired values.

Parameters:
modeselects the implementation (GPU, CPU or BEST)

Destructor.


Member Function Documentation

Calculates the angle image.

The mode is set by setAngleNeighborhoodMode(int mode). The range is set by setAngleNeighborhoodRange(int range)

Recalculates the normals by gaussian smoothing in a given range.

Alternative to applyTemporalNormalAveraging that uses a simpler gaussian filter for smoothing

if it is enabled width setUseNormalAveraging(bool use). The range is set by setNormalAveragingRange(int range). Alternative: normalAveraging() with setUseGaussSmoothing(false).

Binarizes the angle image to detect edges.

The threshold is set by setBinarizationThreshold(float threshold).

Recalculates the normals by linear averaging.

This reduces the noise of the normal image. The function is called from calculateNormals() if it is enabled width setUseNormalAveraging(bool use). The range is set by setNormalAveragingRange(int range).
Alternative: normalGaussSmoothing() with setUseGaussSmoothing(true).

Calculates a filtered image using a median filter.

The mask size is set by setMedianFilterSize(int size)

Calculates the point normals.

The range for calculation is set by setNormalCalculationRange(int range).

Transforms the normals to the world space and calculates normal image.

Parameters:
camthe camera of the depth image
const core::Img8u& icl::geom::ObjectEdgeDetector::calculate ( const core::Img32f depthImage,
bool  filter,
bool  average,
bool  gauss 
)

One call function for calculation of the complete processingpipeline.

Order: ((filter)->normals->(normalAvg)->angles->binarization)

Parameters:
depthImagethe input depth image
filterenable/disable filtering
averageenable/disable normal averaging
gausstrue=gauss smoothing, false=linear smoothing
Returns:
the binarized angle image

Returns the angle image.

Returns:
the angle image

Returns the binarized angle image (final output).

Returns:
the (final) binarized angle image

Returns the filtered depth image.

Returns:
the filtered depth image

Returns the Pointer to the normals.

Returns:
the point normals

Returns the RGB normal image.

Returns:
the RGB normal image

Returns the point normals in world space.

Returns:
the point normals in world space

Sets the angle image (input for image binarization).

This call is not necessary if angleImageCalculation() is executed before.

Parameters:
angleImgthe angle image

Sets the neighborhood mode for applyAngleImageCalculation()

0=max, 1=mean. (default 0)

Parameters:
modethe neighborhood mode

Sets the neighborhood range for applyAngleImageCalculation()

(default 3, min 1)

Parameters:
rangethe neighborhood range

Sets the binarization threshold for applyImageBinarization().

Value n for acos(n). A value of 0 maps to 90 degree, a value of 1 maps to o degree (default 0.89)

Parameters:
thresholdbinarization threshold

Sets the input depth image (input for median filter).

Parameters:
depthImgthe input depth image

Sets the (filtered) depth image (input for normal calculation)

This call is not necessary if medianFilter() is executed before

Parameters:
filteredImgthe (filtered) depth image

Sets the mask size for applyMedianFilter()

size n corresponds to mask size n x n. (default 3, min 3, max 9, odd only)

Parameters:
sizethe mask size

Sets the averaging range for applyNormalAveraging()

(default 1)

Parameters:
rangethe normal averaging range

Sets the range for applyNormalCalculation().

(default 2)

Parameters:
rangethe normal calculation range

Sets the point normals (input for angle image calculation).

This call is not necessary if normalCalculation() is executed before.

Parameters:
pNormalsthe point normals

Sets normal averaging by gauss smoothing enabled/disabled.

(default false=linear smoothing if normal averaging enabled)

Parameters:
useenable/disable gauss smoothing

Sets normal averaging enabled/disabled.

(default true=enabled)

Parameters:
useenable/disable normal averaging

Member Data Documentation

internal data type

internal data pointer

ObjectEdgeDetectorPlugin* icl::geom::ObjectEdgeDetector::objectEdgeDetector [private]

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