Loading...
Searching...
No Matches
pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT > Class Template Reference
Module features

A Difference of Normals (DoN) scale filter implementation for point cloud data. More...

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

Inheritance diagram for pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >:

## Public Types

using | Ptr = shared_ptr< DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT > >
using | ConstPtr = shared_ptr< const DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT > >
Public Types inherited from pcl::Feature< PointInT, PointOutT >
using | BaseClass = PCLBase< PointInT >
using | Ptr = shared_ptr< Feature< PointInT, PointOutT > >
using | ConstPtr = shared_ptr< const Feature< PointInT, PointOutT > >
using | KdTree = pcl::search::Search< PointInT >
using | KdTreePtr = typename KdTree::Ptr
using | PointCloudIn = pcl::PointCloud< PointInT >
using | PointCloudInPtr = typename PointCloudIn::Ptr
using | PointCloudInConstPtr = typename PointCloudIn::ConstPtr
using | PointCloudOut = pcl::PointCloud< PointOutT >
using | SearchMethod = std::function< int(std::size_t, double, pcl::Indices &, std::vector< float > &)>
using | SearchMethodSurface = std::function< int(const PointCloudIn &cloud, std::size_t index, double, pcl::Indices &, std::vector< float > &)>
Public Types inherited from pcl::PCLBase< PointInT >
using | PointCloud = pcl::PointCloud< PointInT >
using | PointCloudPtr = typename PointCloud::Ptr
using | PointCloudConstPtr = typename PointCloud::ConstPtr
using | PointIndicesPtr = PointIndices::Ptr
using | PointIndicesConstPtr = PointIndices::ConstPtr

## Public Member Functions

| DifferenceOfNormalsEstimation ()
| Creates a new Difference of Normals filter.
| ~DifferenceOfNormalsEstimation () override=default
void | setNormalScaleSmall (const PointCloudNConstPtr &normals)
| Set the normals calculated using a smaller search radius (scale) for the DoN operator.
void | setNormalScaleLarge (const PointCloudNConstPtr &normals)
| Set the normals calculated using a larger search radius (scale) for the DoN operator.
void | computeFeature (PointCloudOut &output) override
| Computes the DoN vector for each point in the input point cloud and outputs the vector cloud to the given output.
bool | initCompute () override
| Initialize for computation of features.
Public Member Functions inherited from pcl::Feature< PointInT, PointOutT >
| Feature ()
| Empty constructor.
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.
PointCloudInConstPtr | getSearchSurface () const
| Get a pointer to the surface point cloud dataset.
void | setSearchMethod (const KdTreePtr &tree)
| Provide a pointer to the search object.
KdTreePtr | getSearchMethod () const
| Get a pointer to the search method used.
double | getSearchParameter () const
| Get the internal search parameter.
void | setKSearch (int k)
| Set the number of k nearest neighbors to use for the feature estimation.
int | getKSearch () const
| get the number of k nearest neighbors used for the feature estimation.
void | setRadiusSearch (double radius)
| Set the sphere radius that is to be used for determining the nearest neighbors used for the feature estimation.
double | getRadiusSearch () const
| Get the sphere radius used for determining the neighbors.
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 ()
Public Member Functions inherited from pcl::PCLBase< PointInT >
| PCLBase ()
| Empty constructor.
| PCLBase (const PCLBase &base)
| Copy constructor.
virtual | ~PCLBase ()=default
| Destructor.
virtual void | setInputCloud (const PointCloudConstPtr &cloud)
| Provide a pointer to the input dataset.
PointCloudConstPtr const | getInputCloud () const
| Get a pointer to the input point cloud dataset.
virtual void | setIndices (const IndicesPtr &indices)
| Provide a pointer to the vector of indices that represents the input data.
virtual void | setIndices (const IndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data.
virtual void | setIndices (const PointIndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data.
virtual void | setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols)
| Set the indices for the points laying within an interest region of the point cloud.
IndicesPtr | getIndices ()
| Get a pointer to the vector of indices used.
IndicesConstPtr const | getIndices () const
| Get a pointer to the vector of indices used.
const PointInT & | operator[] (std::size_t pos) const
| Override PointCloud operator[] to shorten code.

## Additional Inherited Members

Protected Member Functions inherited from pcl::Feature< PointInT, PointOutT >
const std::string & | getClassName () const
| Get a string representation of the name of this class.
virtual bool | deinitCompute ()
| This method should get called after ending the actual computation.
int | searchForNeighbors (std::size_t index, double parameter, pcl::Indices &indices, std::vector< float > &distances) const
| Search for k-nearest neighbors using the spatial locator from setSearchmethod, and the given surface from setSearchSurface.
int | searchForNeighbors (const PointCloudIn &cloud, std::size_t index, double parameter, pcl::Indices &indices, std::vector< float > &distances) const
| Search for k-nearest neighbors using the spatial locator from setSearchmethod, and the given surface from setSearchSurface.
Protected Member Functions inherited from pcl::PCLBase< PointInT >
bool | initCompute ()
| This method should get called before starting the actual computation.
bool | deinitCompute ()
| This method should get called after finishing the actual computation.
Protected Attributes inherited from pcl::Feature< PointInT, PointOutT >
std::string | feature_name_
| The feature name.
SearchMethodSurface | search_method_surface_
| The search method template for points.
PointCloudInConstPtr | surface_
| An input point cloud describing the surface that is to be used for nearest neighbors estimation.
KdTreePtr | tree_
| A pointer to the spatial search object.
double | search_parameter_
| The actual search parameter (from either search_radius_ or k_).
double | search_radius_
| The nearest neighbors search radius for each point.
int | k_
| The number of K nearest neighbors to use for each point.
bool | fake_surface_
| If no surface is given, we use the input PointCloud as the surface.
Protected Attributes inherited from pcl::PCLBase< PointInT >
PointCloudConstPtr | input_
| The input point cloud dataset.
IndicesPtr | indices_
| A pointer to the vector of point indices to use.
bool | use_indices_
| Set to true if point indices are used.
bool | fake_indices_
| If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud.

## Detailed Description

template<typename PointInT, typename PointNT, typename PointOutT>
class pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >

A Difference of Normals (DoN) scale filter implementation for point cloud data.

For each point in the point cloud two normals estimated with a differing search radius (sigma_s, sigma_l) are subtracted, the difference of these normals provides a scale-based feature which can be further used to filter the point cloud, somewhat like the Difference of Guassians in image processing, but instead on surfaces. Best results are had when the two search radii are related as sigma_l=10*sigma_s, the octaves between the two search radii can be though of as a filter bandwidth. For appropriate values and thresholds it can be used for surface edge extraction.

Attention
  The input normals given by setInputNormalsSmall and setInputNormalsLarge have to match the input point cloud given by setInputCloud. This behavior is different than feature estimation methods that extend FeatureFromNormals, which match the normals with the search surface.

Note
  For more information please see Yani Ioannou. Automatic Urban Modelling using Mobile Urban LIDAR Data. Thesis (Master, Computing), Queen's University, March, 2010.

Author
  Yani Ioannou.

Definition at line 68 of file don.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointInT , typename PointNT , typename PointOutT >

using pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::ConstPtr = shared_ptr<const DifferenceOfNormalsEstimation<PointInT, PointNT, PointOutT> >

Definition at line 79 of file don.h.

## Ptr

template<typename PointInT , typename PointNT , typename PointOutT >

using pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::Ptr = shared_ptr<DifferenceOfNormalsEstimation<PointInT, PointNT, PointOutT> >

Definition at line 78 of file don.h.

## Constructor & Destructor Documentation

## DifferenceOfNormalsEstimation()

template<typename PointInT , typename PointNT , typename PointOutT >

pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::DifferenceOfNormalsEstimation | ( |  | ) |

inline

Creates a new Difference of Normals filter.

Definition at line 84 of file don.h.

References pcl::Feature< PointInT, PointOutT >::feature_name_.

## ~DifferenceOfNormalsEstimation()

template<typename PointInT , typename PointNT , typename PointOutT >

pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::~DifferenceOfNormalsEstimation | ( |  | ) |

override default

## Member Function Documentation

## computeFeature()

template<typename PointInT , typename PointNT , typename PointOutT >

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

override virtual

Computes the DoN vector for each point in the input point cloud and outputs the vector cloud to the given output.

Parameters

  output | the cloud to output the DoN vector cloud to.

Implements pcl::Feature< PointInT, PointOutT >.

Definition at line 85 of file don.hpp.

## initCompute()

template<typename PointInT , typename PointNT , typename PointOutT >

bool pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::initCompute | ( |  | ) |

override virtual

Initialize for computation of features.

Returns
  true if parameters (input normals, input) are sufficient to perform computation.

Reimplemented from pcl::Feature< PointInT, PointOutT >.

Definition at line 44 of file don.hpp.

## setNormalScaleLarge()

template<typename PointInT , typename PointNT , typename PointOutT >

void pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::setNormalScaleLarge | ( | const PointCloudNConstPtr & | normals | ) |

inline

Set the normals calculated using a larger search radius (scale) for the DoN operator.

Parameters

  normals | the larger radius (scale) of the DoN filter.

Definition at line 106 of file don.h.

## setNormalScaleSmall()

template<typename PointInT , typename PointNT , typename PointOutT >

void pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::setNormalScaleSmall | ( | const PointCloudNConstPtr & | normals | ) |

inline

Set the normals calculated using a smaller search radius (scale) for the DoN operator.

Parameters

  normals | the smaller radius (scale) of the DoN filter.

Definition at line 96 of file don.h.

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

- pcl/features/don.h
- pcl/features/impl/don.hpp