pcl::IntegralImageNormalEstimation< PointInT, PointOutT > Class Template Reference

Surface normal estimation on organized data using integral images. More...

`#include <pcl/features/integral_image_normal.h>`

Inheritance diagram for pcl::IntegralImageNormalEstimation< PointInT, PointOutT >:

## Public Types

enum | BorderPolicy { BORDER_POLICY_IGNORE, BORDER_POLICY_MIRROR }
| Different types of border handling. More...
enum | NormalEstimationMethod { COVARIANCE_MATRIX, AVERAGE_3D_GRADIENT, AVERAGE_DEPTH_CHANGE, SIMPLE_3D_GRADIENT }
| Different normal estimation methods. More...
typedef boost::shared_ptr< IntegralImageNormalEstimation< PointInT, PointOutT > > | Ptr
typedef boost::shared_ptr< const IntegralImageNormalEstimation< PointInT, PointOutT > > | ConstPtr
typedef Feature< PointInT, PointOutT >::PointCloudIn | PointCloudIn
typedef Feature< PointInT, PointOutT >::PointCloudOut | PointCloudOut
Public Types inherited from pcl::Feature< PointInT, PointOutT >
typedef PCLBase< PointInT > | BaseClass
typedef boost::shared_ptr< Feature< PointInT, PointOutT > > | Ptr
typedef boost::shared_ptr< const Feature< PointInT, PointOutT > > | ConstPtr
typedef pcl::search::Search< PointInT > | KdTree
typedef pcl::search::Search< PointInT >::Ptr | KdTreePtr
typedef pcl::PointCloud< PointInT > | PointCloudIn
typedef PointCloudIn::Ptr | PointCloudInPtr
typedef PointCloudIn::ConstPtr | PointCloudInConstPtr
typedef pcl::PointCloud< PointOutT > | PointCloudOut
typedef boost::function< int(size_t, double, std::vector< int > &, std::vector< float > &)> | SearchMethod
typedef boost::function< int(const PointCloudIn &cloud, size_t index, double, std::vector< int > &, std::vector< float > &)> | SearchMethodSurface
Public Types inherited from pcl::PCLBase< PointInT >
typedef pcl::PointCloud< PointInT > | PointCloud
typedef PointCloud::Ptr | PointCloudPtr
typedef PointCloud::ConstPtr | PointCloudConstPtr
typedef boost::shared_ptr< PointIndices > | PointIndicesPtr
typedef boost::shared_ptr< PointIndices const > | PointIndicesConstPtr

## Public Member Functions

| IntegralImageNormalEstimation ()
| Constructor. More...
virtual | ~IntegralImageNormalEstimation ()
| Destructor. More...
void | setRectSize (const int width, const int height)
| Set the regions size which is considered for normal estimation. More...
void | setBorderPolicy (const BorderPolicy border_policy)
| Sets the policy for handling borders. More...
void | computePointNormal (const int pos_x, const int pos_y, const unsigned point_index, PointOutT &normal)
| Computes the normal at the specified position. More...
void | computePointNormalMirror (const int pos_x, const int pos_y, const unsigned point_index, PointOutT &normal)
| Computes the normal at the specified position with mirroring for border handling. More...
void | setMaxDepthChangeFactor (float max_depth_change_factor)
| The depth change threshold for computing object borders. More...
void | setNormalSmoothingSize (float normal_smoothing_size)
| Set the normal smoothing size. More...
void | setNormalEstimationMethod (NormalEstimationMethod normal_estimation_method)
| Set the normal estimation method. More...
void | setDepthDependentSmoothing (bool use_depth_dependent_smoothing)
| Set whether to use depth depending smoothing or not. More...
virtual void | setInputCloud (const typename PointCloudIn::ConstPtr &cloud)
| Provide a pointer to the input dataset (overwrites the PCLBase::setInputCloud method) More...
float * | getDistanceMap ()
| Returns a pointer to the distance map which was computed internally. More...
void | setViewPoint (float vpx, float vpy, float vpz)
| Set the viewpoint. More...
void | getViewPoint (float &vpx, float &vpy, float &vpz)
| Get the viewpoint. More...
void | useSensorOriginAsViewPoint ()
| sets whether the sensor origin or a user given viewpoint should be used. More...
Public Member Functions inherited from pcl::Feature< PointInT, PointOutT >
| Feature ()
| Empty constructor. More...
virtual | ~Feature ()
| Empty destructor. More...
void | setSearchSurface (const PointCloudInConstPtr &cloud)
| Provide a pointer to a dataset to add additional information to estimate the features for every point in the input dataset. More...
PointCloudInConstPtr | getSearchSurface () const
| Get a pointer to the surface point cloud dataset. More...
void | setSearchMethod (const KdTreePtr &tree)
| Provide a pointer to the search object. More...
KdTreePtr | getSearchMethod () const
| Get a pointer to the search method used. More...
double | getSearchParameter () const
| Get the internal search parameter. More...
void | setKSearch (int k)
| Set the number of k nearest neighbors to use for the feature estimation. More...
int | getKSearch () const
| get the number of k nearest neighbors used for the feature estimation. More...
void | setRadiusSearch (double radius)
| Set the sphere radius that is to be used for determining the nearest neighbors used for the feature estimation. More...
double | getRadiusSearch () const
| Get the sphere radius used for determining the neighbors. More...
void | compute (PointCloudOut &output)
| Base method for feature estimation for all points given in <setInputCloud (), setIndices ()> using the surface in setSearchSurface () and the spatial locator in setSearchMethod () More...
Public Member Functions inherited from pcl::PCLBase< PointInT >
| PCLBase ()
| Empty constructor. More...
| PCLBase (const PCLBase &base)
| Copy constructor. More...
virtual | ~PCLBase ()
| Destructor. More...
virtual void | setInputCloud (const PointCloudConstPtr &cloud)
| Provide a pointer to the input dataset. More...
PointCloudConstPtr const | getInputCloud () const
| Get a pointer to the input point cloud dataset. More...
virtual void | setIndices (const IndicesPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (const IndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (const PointIndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)
| Set the indices for the points laying within an interest region of the point cloud. More...
IndicesPtr const | getIndices ()
| Get a pointer to the vector of indices used. More...
IndicesConstPtr const | getIndices () const
| Get a pointer to the vector of indices used. More...
const PointInT & | operator[] (size_t pos) const
| Override PointCloud operator[] to shorten code. More...

## Protected Member Functions

void | computeFeature (PointCloudOut &output)
| Computes the normal for the complete cloud or only indices_ if provided. More...
void | computeFeatureFull (const float *distance_map, const float &bad_point, PointCloudOut &output)
| Computes the normal for the complete cloud. More...
void | computeFeaturePart (const float *distance_map, const float &bad_point, PointCloudOut &output)
| Computes the normal for part of the cloud specified by indices_. More...
void | initData ()
| Initialize the data structures, based on the normal estimation method chosen. More...
Protected Member Functions inherited from pcl::Feature< PointInT, PointOutT >
const std::string & | getClassName () const
| Get a string representation of the name of this class. More...
virtual bool | deinitCompute ()
| This method should get called after ending the actual computation. More...
int | searchForNeighbors (size_t index, double parameter, std::vector< int > &indices, std::vector< float > &distances) const
| Search for k-nearest neighbors using the spatial locator from setSearchmethod, and the given surface from setSearchSurface. More...
int | searchForNeighbors (const PointCloudIn &cloud, size_t index, double parameter, std::vector< int > &indices, std::vector< float > &distances) const
| Search for k-nearest neighbors using the spatial locator from setSearchmethod, and the given surface from setSearchSurface. More...
Protected Member Functions inherited from pcl::PCLBase< PointInT >
bool | initCompute ()
| This method should get called before starting the actual computation. More...
bool | deinitCompute ()
| This method should get called after finishing the actual computation. More...

## Additional Inherited Members

Protected Attributes inherited from pcl::Feature< PointInT, PointOutT >
std::string | feature_name_
| The feature name. More...
SearchMethodSurface | search_method_surface_
| The search method template for points. More...
PointCloudInConstPtr | surface_
| An input point cloud describing the surface that is to be used for nearest neighbors estimation. More...
KdTreePtr | tree_
| A pointer to the spatial search object. More...
double | search_parameter_
| The actual search parameter (from either search_radius_ or k_). More...
double | search_radius_
| The nearest neighbors search radius for each point. More...
int | k_
| The number of K nearest neighbors to use for each point. More...
bool | fake_surface_
| If no surface is given, we use the input PointCloud as the surface. More...
Protected Attributes inherited from pcl::PCLBase< PointInT >
PointCloudConstPtr | input_
| The input point cloud dataset. More...
IndicesPtr | indices_
| A pointer to the vector of point indices to use. More...
bool | use_indices_
| Set to true if point indices are used. More...
bool | fake_indices_
| If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. More...

## Detailed Description

### template<typename PointInT, typename PointOutT>
class pcl::IntegralImageNormalEstimation< PointInT, PointOutT >

Surface normal estimation on organized data using integral images.

For detailed information about this method see:

S. Holzer and R. B. Rusu and M. Dixon and S. Gedikli and N. Navab, Adaptive Neighborhood Selection for Real-Time Surface Normal Estimation from Organized Point Cloud Data Using Integral Images, IROS 2012.

D. Holz, S. Holzer, R. B. Rusu, and S. Behnke (2011, July). Real-Time Plane Segmentation using RGB-D Cameras. In Proceedings of the 15th RoboCup International Symposium, Istanbul, Turkey. http://www.ais.uni-bonn.de/~holz/papers/holz_2011_robocup.pdf

Author
  Stefan Holzer

Definition at line 68 of file integral_image_normal.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointInT, typename PointOutT>

typedef boost::shared_ptr<const IntegralImageNormalEstimation<PointInT, PointOutT> > pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::ConstPtr

Definition at line 78 of file integral_image_normal.h.

## PointCloudIn

template<typename PointInT, typename PointOutT>

typedef Feature<PointInT, PointOutT>::PointCloudIn pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::PointCloudIn

Definition at line 106 of file integral_image_normal.h.

## PointCloudOut

template<typename PointInT, typename PointOutT>

typedef Feature<PointInT, PointOutT>::PointCloudOut pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::PointCloudOut

Definition at line 107 of file integral_image_normal.h.

## Ptr

template<typename PointInT, typename PointOutT>

typedef boost::shared_ptr<IntegralImageNormalEstimation<PointInT, PointOutT> > pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::Ptr

Definition at line 77 of file integral_image_normal.h.

## Member Enumeration Documentation

## BorderPolicy

template<typename PointInT, typename PointOutT>

enum pcl::IntegralImageNormalEstimation::BorderPolicy

Different types of border handling.

Enumerator
BORDER_POLICY_IGNORE |
BORDER_POLICY_MIRROR |

Definition at line 81 of file integral_image_normal.h.

## NormalEstimationMethod

template<typename PointInT, typename PointOutT>

enum pcl::IntegralImageNormalEstimation::NormalEstimationMethod

Different normal estimation methods.

- COVARIANCE_MATRIX - creates 9 integral images to compute the normal for a specific point from the covariance matrix of its local neighborhood.
- AVERAGE_3D_GRADIENT - creates 6 integral images to compute smoothed versions of horizontal and vertical 3D gradients and computes the normals using the cross-product between these two gradients.
- AVERAGE_DEPTH_CHANGE - creates only a single integral image and computes the normals from the average depth changes.

Enumerator
COVARIANCE_MATRIX |
AVERAGE_3D_GRADIENT |
AVERAGE_DEPTH_CHANGE |
SIMPLE_3D_GRADIENT |

Definition at line 98 of file integral_image_normal.h.

## Constructor & Destructor Documentation

## IntegralImageNormalEstimation()

template<typename PointInT, typename PointOutT>

pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::IntegralImageNormalEstimation | ( |  | ) |

inline

Constructor.

Definition at line 110 of file integral_image_normal.h.

## ~IntegralImageNormalEstimation()

template<typename PointInT , typename PointOutT >

pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::~IntegralImageNormalEstimation | ( |  | ) |

virtual

Destructor.

Definition at line 46 of file integral_image_normal.hpp.

Referenced by pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::IntegralImageNormalEstimation().

## Member Function Documentation

## computeFeature()

template<typename PointInT , typename PointOutT >

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computeFeature | ( | PointCloudOut & | output | ) |

protected virtual

Computes the normal for the complete cloud or only indices_ if provided.

Parameters

  [out] | output | the resultant normals

Implements pcl::Feature< PointInT, PointOutT >.

Definition at line 722 of file integral_image_normal.hpp.

Referenced by pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::useSensorOriginAsViewPoint().

## computeFeatureFull()

template<typename PointInT , typename PointOutT >

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computeFeatureFull | ( | const float * | distance_map,
|  | const float & | bad_point,
|  | PointCloudOut & | output
| ) |  |

protected

Computes the normal for the complete cloud.

Parameters

  [in] | distance_map | distance map
  [in] | bad_point | constant given to invalid normal components
  [out] | output | the resultant normals

Definition at line 829 of file integral_image_normal.hpp.

Referenced by pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::useSensorOriginAsViewPoint().

## computeFeaturePart()

template<typename PointInT , typename PointOutT >

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computeFeaturePart | ( | const float * | distance_map,
|  | const float & | bad_point,
|  | PointCloudOut & | output
| ) |  |

protected

Computes the normal for part of the cloud specified by indices_.

Parameters

  [in] | distance_map | distance map
  [in] | bad_point | constant given to invalid normal components
  [out] | output | the resultant normals

Definition at line 1016 of file integral_image_normal.hpp.

Referenced by pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::useSensorOriginAsViewPoint().

## computePointNormal()

template<typename PointInT , typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computePointNormal | ( | const int | pos_x,
|  | const int | pos_y,
|  | const unsigned | point_index,
|  | PointOutT & | normal
| ) |  |

Computes the normal at the specified position.

Parameters

  [in] | pos_x | x position (pixel)
  [in] | pos_y | y position (pixel)
  [in] | point_index | the position index of the point
  [out] | normal | the output estimated normal

Definition at line 207 of file integral_image_normal.hpp.

Referenced by pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::setBorderPolicy().

## computePointNormalMirror()

template<typename PointInT , typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computePointNormalMirror | ( | const int | pos_x,
|  | const int | pos_y,
|  | const unsigned | point_index,
|  | PointOutT & | normal
| ) |  |

Computes the normal at the specified position with mirroring for border handling.

Parameters

  [in] | pos_x | x position (pixel)
  [in] | pos_y | y position (pixel)
  [in] | point_index | the position index of the point
  [out] | normal | the output estimated normal

Definition at line 462 of file integral_image_normal.hpp.

Referenced by pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::setBorderPolicy().

## getDistanceMap()

template<typename PointInT, typename PointOutT>

float* pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::getDistanceMap | ( |  | ) |

inline

Returns a pointer to the distance map which was computed internally.

Definition at line 260 of file integral_image_normal.h.

## getViewPoint()

template<typename PointInT, typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::getViewPoint | ( | float & | vpx,
|  | float & | vpy,
|  | float & | vpz
| ) |  |

inline

Get the viewpoint.

Parameters

  [out] | vpx | x-coordinate of the view point
  [out] | vpy | y-coordinate of the view point
  [out] | vpz | z-coordinate of the view point

Note
  this method returns the currently used viewpoint for normal flipping. If the viewpoint is set manually using the setViewPoint method, this method will return the set view point coordinates. If an input cloud is set, it will return the sensor origin otherwise it will return the origin (0, 0, 0)

Definition at line 288 of file integral_image_normal.h.

## initData()

template<typename PointInT , typename PointOutT >

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::initData | ( |  | ) |

protected

Initialize the data structures, based on the normal estimation method chosen.

Definition at line 56 of file integral_image_normal.hpp.

Referenced by pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::setInputCloud(), and pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::useSensorOriginAsViewPoint().

## setBorderPolicy()

template<typename PointInT, typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setBorderPolicy | ( | const BorderPolicy | border_policy | ) |

inline

Sets the policy for handling borders.

Parameters

  [in] | border_policy | the border policy.

Definition at line 155 of file integral_image_normal.h.

## setDepthDependentSmoothing()

template<typename PointInT, typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setDepthDependentSmoothing | ( | bool | use_depth_dependent_smoothing | ) |

inline

Set whether to use depth depending smoothing or not.

Parameters

  [in] | use_depth_dependent_smoothing | decides whether the smoothing is depth dependent

Definition at line 226 of file integral_image_normal.h.

## setInputCloud()

template<typename PointInT, typename PointOutT>

virtual void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setInputCloud | ( | const typename PointCloudIn::ConstPtr & | cloud | ) |

inline virtual

Provide a pointer to the input dataset (overwrites the PCLBase::setInputCloud method)

Parameters

  [in] | cloud | the const boost shared pointer to a PointCloud message

Definition at line 235 of file integral_image_normal.h.

Referenced by pcl::HarrisKeypoint6D< PointInT, PointOutT, NormalT >::detectKeypoints(), pcl::TrajkovicKeypoint3D< PointInT, PointOutT, NormalT >::initCompute(), pcl::HarrisKeypoint3D< PointInT, PointOutT, NormalT >::initCompute(), pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::initCompute(), and pcl::ISSKeypoint3D< PointInT, PointOutT, NormalT >::initCompute().

## setMaxDepthChangeFactor()

template<typename PointInT, typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setMaxDepthChangeFactor | ( | float | max_depth_change_factor | ) |

inline

The depth change threshold for computing object borders.

Parameters

  [in] | max_depth_change_factor | the depth change threshold for computing object borders based on depth changes

Definition at line 183 of file integral_image_normal.h.

Referenced by pcl::gpu::people::OrganizedPlaneDetector::setNeMaxDepthChangeFactor().

## setNormalEstimationMethod()

template<typename PointInT, typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setNormalEstimationMethod | ( | NormalEstimationMethod | normal_estimation_method | ) |

inline

Set the normal estimation method.

The current implemented algorithms are:

- COVARIANCE_MATRIX - creates 9 integral images to compute the normal for a specific point from the covariance matrix of its local neighborhood.
- AVERAGE_3D_GRADIENT - creates 6 integral images to compute smoothed versions of horizontal and vertical 3D gradients and computes the normals using the cross-product between these two gradients.
- AVERAGE_DEPTH_CHANGE - creates only a single integral image and computes the normals from the average depth changes.

Parameters

  [in] | normal_estimation_method | the method used for normal estimation

Definition at line 217 of file integral_image_normal.h.

Referenced by pcl::HarrisKeypoint6D< PointInT, PointOutT, NormalT >::detectKeypoints(), pcl::TrajkovicKeypoint3D< PointInT, PointOutT, NormalT >::initCompute(), pcl::HarrisKeypoint3D< PointInT, PointOutT, NormalT >::initCompute(), pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::initCompute(), and pcl::ISSKeypoint3D< PointInT, PointOutT, NormalT >::initCompute().

## setNormalSmoothingSize()

template<typename PointInT, typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setNormalSmoothingSize | ( | float | normal_smoothing_size | ) |

inline

Set the normal smoothing size.

Parameters

  [in] | normal_smoothing_size | factor which influences the size of the area used to smooth normals (depth dependent if useDepthDependentSmoothing is true)

Definition at line 193 of file integral_image_normal.h.

Referenced by pcl::HarrisKeypoint6D< PointInT, PointOutT, NormalT >::detectKeypoints(), pcl::TrajkovicKeypoint3D< PointInT, PointOutT, NormalT >::initCompute(), pcl::HarrisKeypoint3D< PointInT, PointOutT, NormalT >::initCompute(), pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::initCompute(), pcl::ISSKeypoint3D< PointInT, PointOutT, NormalT >::initCompute(), and pcl::gpu::people::OrganizedPlaneDetector::setNeNormalSmoothingSize().

## setRectSize()

template<typename PointInT , typename PointOutT >

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setRectSize | ( | const int | width,
|  | const int | height
| ) |  |

Set the regions size which is considered for normal estimation.

Parameters

  [in] | width | the width of the search rectangle
  [in] | height | the height of the search rectangle

Definition at line 93 of file integral_image_normal.hpp.

Referenced by pcl::IntegralImageNormalEstimation< pcl::PointXYZRGBA, pcl::Normal >::IntegralImageNormalEstimation().

## setViewPoint()

template<typename PointInT, typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setViewPoint | ( | float | vpx,
|  | float | vpy,
|  | float | vpz
| ) |  |

inline

Set the viewpoint.

Parameters

  vpx | the X coordinate of the viewpoint
  vpy | the Y coordinate of the viewpoint
  vpz | the Z coordinate of the viewpoint

Definition at line 271 of file integral_image_normal.h.

## useSensorOriginAsViewPoint()

template<typename PointInT, typename PointOutT>

void pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::useSensorOriginAsViewPoint | ( |  | ) |

inline

sets whether the sensor origin or a user given viewpoint should be used.

After this method, the normal estimation method uses the sensor origin of the input cloud. to use a user defined view point, use the method setViewPoint

Definition at line 300 of file integral_image_normal.h.

The documentation for this class was generated from the following files:

- /build/pcl-qv3n_B/pcl-1.8.1+dfsg1/features/include/pcl/features/integral_image_normal.h
- /build/pcl-qv3n_B/pcl-1.8.1+dfsg1/features/include/pcl/features/impl/integral_image_normal.hpp