Point Cloud Library (PCL)  1.7.0
Public Member Functions | Protected Member Functions
pcl::NormalRefinement< NormalT > Class Template Reference

Normal vector refinement class More...

#include <pcl/filters/normal_refinement.h>

+ Inheritance diagram for pcl::NormalRefinement< NormalT >:

List of all members.

Public Member Functions

 NormalRefinement ()
 Empty constructor, sets default convergence parameters.
 NormalRefinement (const std::vector< std::vector< int > > &k_indices, const std::vector< std::vector< float > > &k_sqr_distances)
 Constructor for setting correspondences, sets default convergence parameters.
void setCorrespondences (const std::vector< std::vector< int > > &k_indices, const std::vector< std::vector< float > > &k_sqr_distances)
 Set correspondences calculated from nearest neighbor search.
void getCorrespondences (std::vector< std::vector< int > > &k_indices, std::vector< std::vector< float > > &k_sqr_distances)
 Get correspondences (copy)
void setMaxIterations (unsigned int max_iterations)
 Set maximum iterations.
unsigned int getMaxIterations ()
 Get maximum iterations.
void setConvergenceThreshold (float convergence_threshold)
 Set convergence threshold.
float getConvergenceThreshold ()
 Get convergence threshold.

Protected Member Functions

void applyFilter (PointCloud &output)
 Filter a Point Cloud.

Detailed Description

template<typename NormalT>
class pcl::NormalRefinement< NormalT >

Normal vector refinement class

This class refines a set of already estimated normals by iteratively updating each normal to the (weighted) mean of all normals in its neighborhood. The intention is that you reuse the same point correspondences as used when estimating the original normals in order to avoid repeating a nearest neighbor search.

Note:
This class avoids points for which a NaN is encountered in the neighborhood. In the special case where a point has only NaNs in its neighborhood, the resultant refined normal will be set to zero, i.e. this class only produces finite normals.

Usage example:

 // Input point cloud
 pcl::PointCloud<PointT> cloud;
 
 // Fill cloud...
 
 // Estimated and refined normals
 pcl::PointCloud<NormalT> normals;
 pcl::PointCloud<NormalT> normals_refined;
 
 // Search parameters
 const int k = 5;
 std::vector<std::vector<int> > k_indices;
 std::vector<std::vector<float> > k_sqr_distances;
 
 // Run search
 pcl::search::KdTree<pcl::PointXYZRGB> search;
 search.setInputCloud (cloud.makeShared ());
 search.nearestKSearch (cloud, std::vector<int> (), k, k_indices, k_sqr_distances);
 
 // Use search results for normal estimation
 pcl::NormalEstimation<PointT, NormalT> ne;
 for (unsigned int i = 0; i < cloud.size (); ++i)
 {
   NormalT normal;
   ne.computePointNormal (cloud, k_indices[i]
                          normal.normal_x, normal.normal_y, normal.normal_z, normal.curvature);
   pcl::flipNormalTowardsViewpoint (cloud[i], cloud.sensor_origin_[0], cloud.sensor_origin_[1], cloud.sensor_origin_[2],
                                    normal.normal_x, normal.normal_y, normal.normal_z);
   normals.push_back (normal);
 }
 
 // Run refinement using search results
 pcl::NormalRefinement<NormalT> nr (k_indices, k_sqr_distances);
 nr.setInputCloud (normals.makeShared ());
 nr.filter (normals_refined);
Author:
Anders Glent Buch

Definition at line 188 of file normal_refinement.h.


Constructor & Destructor Documentation

template<typename NormalT>
pcl::NormalRefinement< NormalT >::NormalRefinement ( ) [inline]
template<typename NormalT>
pcl::NormalRefinement< NormalT >::NormalRefinement ( const std::vector< std::vector< int > > &  k_indices,
const std::vector< std::vector< float > > &  k_sqr_distances 
) [inline]

Constructor for setting correspondences, sets default convergence parameters.

Parameters:
k_indicesindices of neighboring points
k_sqr_distancessquared distances to the neighboring points

Definition at line 213 of file normal_refinement.h.

References pcl::Filter< NormalT >::filter_name_, pcl::NormalRefinement< NormalT >::setConvergenceThreshold(), pcl::NormalRefinement< NormalT >::setCorrespondences(), and pcl::NormalRefinement< NormalT >::setMaxIterations().


Member Function Documentation

template<typename NormalT >
void pcl::NormalRefinement< NormalT >::applyFilter ( PointCloud &  output) [protected]

Filter a Point Cloud.

Parameters:
outputthe resultant point cloud message

Definition at line 48 of file normal_refinement.hpp.

References pcl::refineNormal().

template<typename NormalT>
float pcl::NormalRefinement< NormalT >::getConvergenceThreshold ( ) [inline]

Get convergence threshold.

Returns:
convergence threshold

Definition at line 275 of file normal_refinement.h.

template<typename NormalT>
void pcl::NormalRefinement< NormalT >::getCorrespondences ( std::vector< std::vector< int > > &  k_indices,
std::vector< std::vector< float > > &  k_sqr_distances 
) [inline]

Get correspondences (copy)

Parameters:
k_indicesindices of neighboring points
k_sqr_distancessquared distances to the neighboring points

Definition at line 238 of file normal_refinement.h.

template<typename NormalT>
unsigned int pcl::NormalRefinement< NormalT >::getMaxIterations ( ) [inline]

Get maximum iterations.

Returns:
maximum iterations

Definition at line 257 of file normal_refinement.h.

template<typename NormalT>
void pcl::NormalRefinement< NormalT >::setConvergenceThreshold ( float  convergence_threshold) [inline]

Set convergence threshold.

Parameters:
convergence_thresholdconvergence threshold

Definition at line 266 of file normal_refinement.h.

Referenced by pcl::NormalRefinement< NormalT >::NormalRefinement().

template<typename NormalT>
void pcl::NormalRefinement< NormalT >::setCorrespondences ( const std::vector< std::vector< int > > &  k_indices,
const std::vector< std::vector< float > > &  k_sqr_distances 
) [inline]

Set correspondences calculated from nearest neighbor search.

Parameters:
k_indicesindices of neighboring points
k_sqr_distancessquared distances to the neighboring points

Definition at line 227 of file normal_refinement.h.

Referenced by pcl::NormalRefinement< NormalT >::NormalRefinement().

template<typename NormalT>
void pcl::NormalRefinement< NormalT >::setMaxIterations ( unsigned int  max_iterations) [inline]

Set maximum iterations.

Parameters:
max_iterationsmaximum iterations

Definition at line 248 of file normal_refinement.h.

Referenced by pcl::NormalRefinement< NormalT >::NormalRefinement().


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