Point Cloud Library (PCL)  1.9.1-dev
List of all members | Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes
pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT > Class Template Reference

This class implements Implicit Shape Model algorithm described in "Hough Transforms and 3D SURF for robust three dimensional classication" by Jan Knopp1, Mukta Prasad, Geert Willems1, Radu Timofte, and Luc Van Gool. More...

#include <pcl/recognition/implicit_shape_model.h>

Classes

struct  LocationInfo
 This structure stores the information about the keypoint. More...
 
struct  TC
 This structure is used for determining the end of the k-means clustering process. More...
 
struct  VisualWordStat
 Structure for storing the visual word. More...
 

Public Types

typedef boost::shared_ptr< pcl::features::ISMModelISMModelPtr
 

Public Member Functions

 ImplicitShapeModelEstimation ()
 Simple constructor that initializes everything. More...
 
virtual ~ImplicitShapeModelEstimation ()
 Simple destructor. More...
 
std::vector< typename pcl::PointCloud< PointT >::Ptr > getTrainingClouds ()
 This method simply returns the clouds that were set as the training clouds. More...
 
void setTrainingClouds (const std::vector< typename pcl::PointCloud< PointT >::Ptr > &training_clouds)
 Allows to set clouds for training the ISM model. More...
 
std::vector< unsigned int > getTrainingClasses ()
 Returns the array of classes that indicates which class the corresponding training cloud belongs. More...
 
void setTrainingClasses (const std::vector< unsigned int > &training_classes)
 Allows to set the class labels for the corresponding training clouds. More...
 
std::vector< typename pcl::PointCloud< NormalT >::Ptr > getTrainingNormals ()
 This method returns the corresponding cloud of normals for every training point cloud. More...
 
void setTrainingNormals (const std::vector< typename pcl::PointCloud< NormalT >::Ptr > &training_normals)
 Allows to set normals for the training clouds that were passed through setTrainingClouds method. More...
 
float getSamplingSize ()
 Returns the sampling size used for cloud simplification. More...
 
void setSamplingSize (float sampling_size)
 Changes the sampling size used for cloud simplification. More...
 
boost::shared_ptr< pcl::Feature< PointT, pcl::Histogram< FeatureSize > > > getFeatureEstimator ()
 Returns the current feature estimator used for extraction of the descriptors. More...
 
void setFeatureEstimator (boost::shared_ptr< pcl::Feature< PointT, pcl::Histogram< FeatureSize > > > feature)
 Changes the feature estimator. More...
 
unsigned int getNumberOfClusters ()
 Returns the number of clusters used for descriptor clustering. More...
 
void setNumberOfClusters (unsigned int num_of_clusters)
 Changes the number of clusters. More...
 
std::vector< float > getSigmaDists ()
 Returns the array of sigma values. More...
 
void setSigmaDists (const std::vector< float > &training_sigmas)
 This method allows to set the value of sigma used for calculating the learned weights for every single class. More...
 
bool getNVotState ()
 Returns the state of Nvot coeff from [Knopp et al., 2010, (4)], if set to false then coeff is taken as 1.0. More...
 
void setNVotState (bool state)
 Changes the state of the Nvot coeff from [Knopp et al., 2010, (4)]. More...
 
bool trainISM (ISMModelPtr &trained_model)
 This method performs training and forms a visual vocabulary. More...
 
boost::shared_ptr< pcl::features::ISMVoteList< PointT > > findObjects (ISMModelPtr model, typename pcl::PointCloud< PointT >::Ptr in_cloud, typename pcl::PointCloud< Normal >::Ptr in_normals, int in_class_of_interest)
 This function is searching for the class of interest in a given cloud and returns the list of votes. More...
 

Protected Types

typedef struct PCL_EXPORTS pcl::ism::ImplicitShapeModelEstimation::TC TermCriteria
 This structure is used for determining the end of the k-means clustering process. More...
 

Protected Member Functions

bool extractDescriptors (std::vector< pcl::Histogram< FeatureSize > > &histograms, std::vector< LocationInfo, Eigen::aligned_allocator< LocationInfo > > &locations)
 Extracts the descriptors from the input clouds. More...
 
bool clusterDescriptors (std::vector< pcl::Histogram< FeatureSize > > &histograms, Eigen::MatrixXi &labels, Eigen::MatrixXf &clusters_centers)
 This method performs descriptor clustering. More...
 
void calculateSigmas (std::vector< float > &sigmas)
 This method calculates the value of sigma used for calculating the learned weights for every single class. More...
 
void calculateWeights (const std::vector< LocationInfo, Eigen::aligned_allocator< LocationInfo > > &locations, const Eigen::MatrixXi &labels, std::vector< float > &sigmas, std::vector< std::vector< unsigned int > > &clusters, std::vector< std::vector< float > > &statistical_weights, std::vector< float > &learned_weights)
 This function forms a visual vocabulary and evaluates weights described in [Knopp et al., 2010, (5)]. More...
 
void simplifyCloud (typename pcl::PointCloud< PointT >::ConstPtr in_point_cloud, typename pcl::PointCloud< NormalT >::ConstPtr in_normal_cloud, typename pcl::PointCloud< PointT >::Ptr out_sampled_point_cloud, typename pcl::PointCloud< NormalT >::Ptr out_sampled_normal_cloud)
 Simplifies the cloud using voxel grid principles. More...
 
void shiftCloud (typename pcl::PointCloud< PointT >::Ptr in_cloud, Eigen::Vector3f shift_point)
 This method simply shifts the clouds points relative to the passed point. More...
 
Eigen::Matrix3f alignYCoordWithNormal (const NormalT &in_normal)
 This method simply computes the rotation matrix, so that the given normal would match the Y axis after the transformation. More...
 
void applyTransform (Eigen::Vector3f &io_vec, const Eigen::Matrix3f &in_transform)
 This method applies transform set in in_transform to vector io_vector. More...
 
void estimateFeatures (typename pcl::PointCloud< PointT >::Ptr sampled_point_cloud, typename pcl::PointCloud< NormalT >::Ptr normal_cloud, typename pcl::PointCloud< pcl::Histogram< FeatureSize > >::Ptr feature_cloud)
 This method estimates features for the given point cloud. More...
 
double computeKMeansClustering (const Eigen::MatrixXf &points_to_cluster, int number_of_clusters, Eigen::MatrixXi &io_labels, TermCriteria criteria, int attempts, int flags, Eigen::MatrixXf &cluster_centers)
 Performs K-means clustering. More...
 
void generateCentersPP (const Eigen::MatrixXf &data, Eigen::MatrixXf &out_centers, int number_of_clusters, int trials)
 Generates centers for clusters as described in Arthur, David and Sergei Vassilvitski (2007) k-means++: The Advantages of Careful Seeding. More...
 
void generateRandomCenter (const std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > > &boxes, Eigen::VectorXf &center)
 Generates random center for cluster. More...
 
float computeDistance (Eigen::VectorXf &vec_1, Eigen::VectorXf &vec_2)
 Computes the square distance between two vectors. More...
 
ImplicitShapeModelEstimationoperator= (const ImplicitShapeModelEstimation &)
 Forbids the assignment operator. More...
 

Protected Attributes

std::vector< typename pcl::PointCloud< PointT >::Ptr > training_clouds_
 Stores the clouds used for training. More...
 
std::vector< unsigned int > training_classes_
 Stores the class number for each cloud from training_clouds_. More...
 
std::vector< typename pcl::PointCloud< NormalT >::Ptr > training_normals_
 Stores the normals for each training cloud. More...
 
std::vector< float > training_sigmas_
 This array stores the sigma values for each training class. More...
 
float sampling_size_
 This value is used for the simplification. More...
 
boost::shared_ptr< pcl::Feature< PointT, pcl::Histogram< FeatureSize > > > feature_estimator_
 Stores the feature estimator. More...
 
unsigned int number_of_clusters_
 Number of clusters, is used for clustering descriptors during the training. More...
 
bool n_vot_ON_
 If set to false then Nvot coeff from [Knopp et al., 2010, (4)] is equal 1.0. More...
 

Static Protected Attributes

static const int PP_CENTERS = 2
 This const value is used for indicating that for k-means clustering centers must be generated as described in Arthur, David and Sergei Vassilvitski (2007) k-means++: The Advantages of Careful Seeding. More...
 
static const int USE_INITIAL_LABELS = 1
 This const value is used for indicating that input labels must be taken as the initial approximation for k-means clustering. More...
 

Detailed Description

template<int FeatureSize, typename PointT, typename NormalT = pcl::Normal>
class pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >

This class implements Implicit Shape Model algorithm described in "Hough Transforms and 3D SURF for robust three dimensional classication" by Jan Knopp1, Mukta Prasad, Geert Willems1, Radu Timofte, and Luc Van Gool.

It has two main member functions. One for training, using the data for which we know which class it belongs to. And second for investigating a cloud for the presence of the class of interest. Implementation of the ISM algorithm described in "Hough Transforms and 3D SURF for robust three dimensional classication" by Jan Knopp, Mukta Prasad, Geert Willems, Radu Timofte, and Luc Van Gool

Authors: Roman Shapovalov, Alexander Velizhev, Sergey Ushakov

Definition at line 240 of file implicit_shape_model.h.

Member Typedef Documentation

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
typedef boost::shared_ptr<pcl::features::ISMModel> pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::ISMModelPtr

Definition at line 244 of file implicit_shape_model.h.

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
typedef struct PCL_EXPORTS pcl::ism::ImplicitShapeModelEstimation::TC pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::TermCriteria
protected

This structure is used for determining the end of the k-means clustering process.

Constructor & Destructor Documentation

template<int FeatureSize, typename PointT , typename NormalT >
pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::ImplicitShapeModelEstimation ( )

Simple constructor that initializes everything.

Definition at line 550 of file implicit_shape_model.hpp.

template<int FeatureSize, typename PointT , typename NormalT >
pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::~ImplicitShapeModelEstimation ( )
virtual

Member Function Documentation

template<int FeatureSize, typename PointT , typename NormalT >
Eigen::Matrix3f pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::alignYCoordWithNormal ( const NormalT in_normal)
protected

This method simply computes the rotation matrix, so that the given normal would match the Y axis after the transformation.

This is done because the algorithm needs to be invariant to the affine transformations.

Parameters
[in]in_normalnormal for which the rotation matrix need to be computed

Definition at line 1202 of file implicit_shape_model.hpp.

References pcl::B.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::calculateWeights(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::extractDescriptors(), and pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::findObjects().

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::applyTransform ( Eigen::Vector3f &  io_vec,
const Eigen::Matrix3f &  in_transform 
)
protected

This method applies transform set in in_transform to vector io_vector.

Parameters
[in]io_vecvector that need to be transformed
[in]in_transformmatrix that contains the transformation

Definition at line 1233 of file implicit_shape_model.hpp.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::calculateWeights(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::extractDescriptors(), and pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::findObjects().

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::calculateSigmas ( std::vector< float > &  sigmas)
protected
template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::calculateWeights ( const std::vector< LocationInfo, Eigen::aligned_allocator< LocationInfo > > &  locations,
const Eigen::MatrixXi &  labels,
std::vector< float > &  sigmas,
std::vector< std::vector< unsigned int > > &  clusters,
std::vector< std::vector< float > > &  statistical_weights,
std::vector< float > &  learned_weights 
)
protected

This function forms a visual vocabulary and evaluates weights described in [Knopp et al., 2010, (5)].

Parameters
[in]locationsarray containing description of each keypoint: its position, which cloud belongs and expected direction to center
[in]labelslabels that were obtained during k-means clustering
[in]sigmasarray of sigmas for each class
[in]clustersclusters that were obtained during k-means clustering
[out]statistical_weightsstores the computed statistical weights
[out]learned_weightsstores the computed learned weights

Definition at line 993 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::alignYCoordWithNormal(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::applyTransform(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::calculateSigmas(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::n_vot_ON_, pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::number_of_clusters_, and pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_classes_.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::trainISM().

template<int FeatureSize, typename PointT , typename NormalT >
bool pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::clusterDescriptors ( std::vector< pcl::Histogram< FeatureSize > > &  histograms,
Eigen::MatrixXi &  labels,
Eigen::MatrixXf &  clusters_centers 
)
protected

This method performs descriptor clustering.

Parameters
[in]histogramsdescriptors to cluster
[out]labelsit contains labels for each descriptor
[out]clusters_centersstores the centers of clusters

Definition at line 916 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeKMeansClustering(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::number_of_clusters_, and pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::PP_CENTERS.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::trainISM().

template<int FeatureSize, typename PointT , typename NormalT >
float pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeDistance ( Eigen::VectorXf &  vec_1,
Eigen::VectorXf &  vec_2 
)
protected
template<int FeatureSize, typename PointT , typename NormalT >
double pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeKMeansClustering ( const Eigen::MatrixXf &  points_to_cluster,
int  number_of_clusters,
Eigen::MatrixXi &  io_labels,
TermCriteria  criteria,
int  attempts,
int  flags,
Eigen::MatrixXf &  cluster_centers 
)
protected

Performs K-means clustering.

Parameters
[in]points_to_clusterpoints to cluster
[in]number_of_clustersdesired number of clusters
[out]io_labelsoutput parameter, which stores the label for each point
[in]criteriadefines when the computational process need to be finished. For example if the desired accuracy is achieved or the iteration number exceeds given value
[in]attemptsnumber of attempts to compute clustering
[in]flagsif set to USE_INITIAL_LABELS then initial approximation of labels is taken from io_labels
[out]cluster_centersit will store the cluster centers

Definition at line 1265 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeDistance(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::generateCentersPP(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::generateRandomCenter(), pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::PP_CENTERS, and pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::USE_INITIAL_LABELS.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::clusterDescriptors().

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::estimateFeatures ( typename pcl::PointCloud< PointT >::Ptr  sampled_point_cloud,
typename pcl::PointCloud< NormalT >::Ptr  normal_cloud,
typename pcl::PointCloud< pcl::Histogram< FeatureSize > >::Ptr  feature_cloud 
)
protected

This method estimates features for the given point cloud.

Parameters
[in]sampled_point_cloudsampled point cloud for which the features must be computed
[in]normal_cloudnormals for the original point cloud
[out]feature_cloudit will store the computed histograms (features) for the given cloud

Definition at line 1240 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::feature_estimator_, pcl::PointCloud< PointT >::makeShared(), and pcl::FeatureFromNormals< PointInT, PointNT, PointOutT >::setInputNormals().

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::extractDescriptors(), and pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::findObjects().

template<int FeatureSize, typename PointT , typename NormalT >
bool pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::extractDescriptors ( std::vector< pcl::Histogram< FeatureSize > > &  histograms,
std::vector< LocationInfo, Eigen::aligned_allocator< LocationInfo > > &  locations 
)
protected
template<int FeatureSize, typename PointT , typename NormalT >
boost::shared_ptr< pcl::features::ISMVoteList< PointT > > pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::findObjects ( ISMModelPtr  model,
typename pcl::PointCloud< PointT >::Ptr  in_cloud,
typename pcl::PointCloud< Normal >::Ptr  in_normals,
int  in_class_of_interest 
)
template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::generateCentersPP ( const Eigen::MatrixXf &  data,
Eigen::MatrixXf &  out_centers,
int  number_of_clusters,
int  trials 
)
protected

Generates centers for clusters as described in Arthur, David and Sergei Vassilvitski (2007) k-means++: The Advantages of Careful Seeding.

Parameters
[in]datapoints to cluster
[out]out_centersit will contain generated centers
[in]number_of_clustersdefines the number of desired cluster centers
[in]trialsnumber of trials to generate a center

Definition at line 1431 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeDistance().

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeKMeansClustering().

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::generateRandomCenter ( const std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > > &  boxes,
Eigen::VectorXf &  center 
)
protected

Generates random center for cluster.

Parameters
[in]boxescontains min and max values for each dimension
[out]centerit will the contain generated center

Definition at line 1507 of file implicit_shape_model.hpp.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeKMeansClustering().

template<int FeatureSize, typename PointT , typename NormalT >
boost::shared_ptr< pcl::Feature< PointT, pcl::Histogram< FeatureSize > > > pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getFeatureEstimator ( )

Returns the current feature estimator used for extraction of the descriptors.

Definition at line 640 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::feature_estimator_.

template<int FeatureSize, typename PointT , typename NormalT >
unsigned int pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getNumberOfClusters ( )

Returns the number of clusters used for descriptor clustering.

Definition at line 655 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::number_of_clusters_.

template<int FeatureSize, typename PointT , typename NormalT >
bool pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getNVotState ( )

Returns the state of Nvot coeff from [Knopp et al., 2010, (4)], if set to false then coeff is taken as 1.0.

It is just a kind of heuristic. The default behavior is as in the article. So you can ignore this if you want.

Definition at line 686 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::n_vot_ON_.

template<int FeatureSize, typename PointT , typename NormalT >
float pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getSamplingSize ( )

Returns the sampling size used for cloud simplification.

Definition at line 625 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::sampling_size_.

template<int FeatureSize, typename PointT , typename NormalT >
std::vector< float > pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getSigmaDists ( )

Returns the array of sigma values.

Definition at line 670 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_sigmas_.

template<int FeatureSize, typename PointT , typename NormalT >
std::vector< unsigned int > pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getTrainingClasses ( )

Returns the array of classes that indicates which class the corresponding training cloud belongs.

Definition at line 592 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_classes_.

template<int FeatureSize, typename PointT , typename NormalT >
std::vector< typename pcl::PointCloud< PointT >::Ptr > pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getTrainingClouds ( )

This method simply returns the clouds that were set as the training clouds.

Definition at line 575 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_clouds_.

template<int FeatureSize, typename PointT , typename NormalT >
std::vector< typename pcl::PointCloud< NormalT >::Ptr > pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getTrainingNormals ( )

This method returns the corresponding cloud of normals for every training point cloud.

Definition at line 608 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_normals_.

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
ImplicitShapeModelEstimation& pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::operator= ( const ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT > &  )
protected

Forbids the assignment operator.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setFeatureEstimator ( boost::shared_ptr< pcl::Feature< PointT, pcl::Histogram< FeatureSize > > >  feature)

Changes the feature estimator.

Parameters
[in]featurefeature estimator that will be used to extract the descriptors. Note that it must be fully initialized and configured.

Definition at line 647 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::feature_estimator_.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setNumberOfClusters ( unsigned int  num_of_clusters)

Changes the number of clusters.

Parameters
num_of_clustersdesired number of clusters

Definition at line 662 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::number_of_clusters_.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setNVotState ( bool  state)

Changes the state of the Nvot coeff from [Knopp et al., 2010, (4)].

Parameters
[in]statedesired state, if false then Nvot is taken as 1.0

Definition at line 693 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::n_vot_ON_.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setSamplingSize ( float  sampling_size)

Changes the sampling size used for cloud simplification.

Parameters
[in]sampling_sizedesired size of grid bin

Definition at line 632 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::sampling_size_.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setSigmaDists ( const std::vector< float > &  training_sigmas)

This method allows to set the value of sigma used for calculating the learned weights for every single class.

Parameters
[in]training_sigmasnew sigmas for every class. If you want these values to be computed automatically, just pass the empty array. The automatic regime calculates the maximum distance between the objects points and takes 10% of this value as recommended in the article. If there are several objects of the same class, then it computes the average maximum distance and takes 10%. Note that each class has its own sigma value.

Definition at line 677 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_sigmas_.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setTrainingClasses ( const std::vector< unsigned int > &  training_classes)

Allows to set the class labels for the corresponding training clouds.

Parameters
[in]training_classesarray of class labels

Definition at line 599 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_classes_.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setTrainingClouds ( const std::vector< typename pcl::PointCloud< PointT >::Ptr > &  training_clouds)

Allows to set clouds for training the ISM model.

Parameters
[in]training_cloudsarray of point clouds for training

Definition at line 582 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_clouds_.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setTrainingNormals ( const std::vector< typename pcl::PointCloud< NormalT >::Ptr > &  training_normals)

Allows to set normals for the training clouds that were passed through setTrainingClouds method.

Parameters
[in]training_normalsarray of clouds, each cloud is the cloud of normals

Definition at line 615 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_normals_.

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::shiftCloud ( typename pcl::PointCloud< PointT >::Ptr  in_cloud,
Eigen::Vector3f  shift_point 
)
protected

This method simply shifts the clouds points relative to the passed point.

Parameters
[in]in_cloudcloud to shift
[in]shift_pointpoint relative to which the cloud will be shifted

Definition at line 1187 of file implicit_shape_model.hpp.

References pcl::PointCloud< PointT >::points.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::extractDescriptors().

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::simplifyCloud ( typename pcl::PointCloud< PointT >::ConstPtr  in_point_cloud,
typename pcl::PointCloud< NormalT >::ConstPtr  in_normal_cloud,
typename pcl::PointCloud< PointT >::Ptr  out_sampled_point_cloud,
typename pcl::PointCloud< NormalT >::Ptr  out_sampled_normal_cloud 
)
protected
template<int FeatureSize, typename PointT , typename NormalT >
bool pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::trainISM ( ISMModelPtr trained_model)

Member Data Documentation

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
boost::shared_ptr<pcl::Feature<PointT, pcl::Histogram<FeatureSize> > > pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::feature_estimator_
protected
template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
bool pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::n_vot_ON_
protected
template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
unsigned int pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::number_of_clusters_
protected
template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
const int pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::PP_CENTERS = 2
staticprotected

This const value is used for indicating that for k-means clustering centers must be generated as described in Arthur, David and Sergei Vassilvitski (2007) k-means++: The Advantages of Careful Seeding.

Definition at line 611 of file implicit_shape_model.h.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::clusterDescriptors(), and pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeKMeansClustering().

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
float pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::sampling_size_
protected
template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
std::vector<unsigned int> pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_classes_
protected
template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
std::vector<typename pcl::PointCloud<PointT>::Ptr> pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_clouds_
protected
template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
std::vector<typename pcl::PointCloud<NormalT>::Ptr> pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_normals_
protected
template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
std::vector<float> pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_sigmas_
protected
template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
const int pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::USE_INITIAL_LABELS = 1
staticprotected

This const value is used for indicating that input labels must be taken as the initial approximation for k-means clustering.

Definition at line 615 of file implicit_shape_model.h.

Referenced by pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeKMeansClustering().


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