A Difference of Normals (DoN) scale filter implementation for point cloud data. More...
#include <don.h>
Public Types | |
typedef boost::shared_ptr < const DifferenceOfNormalsEstimation < PointInT, PointNT, PointOutT > > | ConstPtr |
typedef boost::shared_ptr < DifferenceOfNormalsEstimation < PointInT, PointNT, PointOutT > > | Ptr |
Public Member Functions | |
virtual void | computeFeature (PointCloudOut &output) |
DifferenceOfNormalsEstimation () | |
virtual bool | initCompute () |
void | setNormalScaleLarge (const PointCloudNConstPtr &normals) |
void | setNormalScaleSmall (const PointCloudNConstPtr &normals) |
virtual | ~DifferenceOfNormalsEstimation () |
Private Types | |
typedef pcl::PointCloud< PointNT > | PointCloudN |
typedef PointCloudN::ConstPtr | PointCloudNConstPtr |
typedef PointCloudN::Ptr | PointCloudNPtr |
typedef Feature< PointInT, PointOutT >::PointCloudOut | PointCloudOut |
Private Member Functions | |
void | compute (PointCloudOut &) |
Make the compute (&PointCloudOut); inaccessible from outside the class. | |
Private Attributes | |
PointCloudNConstPtr | input_normals_large_ |
The largest radius (scale) used in the DoN filter. | |
PointCloudNConstPtr | input_normals_small_ |
The smallest radius (scale) used in the DoN filter. |
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.
typedef boost::shared_ptr<const DifferenceOfNormalsEstimation<PointInT, PointNT, PointOutT> > pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::ConstPtr |
Reimplemented from pcl::Feature< PointInT, PointOutT >.
typedef pcl::PointCloud<PointNT> pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::PointCloudN [private] |
typedef PointCloudN::ConstPtr pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::PointCloudNConstPtr [private] |
typedef PointCloudN::Ptr pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::PointCloudNPtr [private] |
typedef Feature<PointInT, PointOutT>::PointCloudOut pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::PointCloudOut [private] |
Reimplemented from pcl::Feature< PointInT, PointOutT >.
typedef boost::shared_ptr<DifferenceOfNormalsEstimation<PointInT, PointNT, PointOutT> > pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::Ptr |
Reimplemented from pcl::Feature< PointInT, PointOutT >.
pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::DifferenceOfNormalsEstimation | ( | ) | [inline] |
virtual pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::~DifferenceOfNormalsEstimation | ( | ) | [inline, virtual] |
void pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::compute | ( | PointCloudOut & | ) | [inline, private] |
Make the compute (&PointCloudOut); inaccessible from outside the class.
[out] | output | the output point cloud |
Reimplemented from pcl::Feature< PointInT, PointOutT >.
void pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::computeFeature | ( | PointCloudOut & | output | ) | [virtual] |
Computes the DoN vector for each point in the input point cloud and outputs the vector cloud to the given output.
output | the cloud to output the DoN vector cloud to. |
Implements pcl::Feature< PointInT, PointOutT >.
bool pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::initCompute | ( | ) | [virtual] |
Initialize for computation of features.
Reimplemented from pcl::Feature< PointInT, PointOutT >.
void pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::setNormalScaleLarge | ( | const PointCloudNConstPtr & | normals | ) | [inline] |
void pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::setNormalScaleSmall | ( | const PointCloudNConstPtr & | normals | ) | [inline] |
PointCloudNConstPtr pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::input_normals_large_ [private] |
PointCloudNConstPtr pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT >::input_normals_small_ [private] |