Point Cloud Library (PCL)  1.14.0-dev
List of all members | Classes | Public Types | Public Member Functions | 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 classification" by Jan Knopp, Mukta Prasad, Geert Willems, Radu Timofte, and Luc Van Gool. More...

#include <pcl/recognition/implicit_shape_model.h>

+ Collaboration diagram for pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >:

Classes

struct  LocationInfo
 This structure stores the information about the keypoint. More...
 
struct  TermCriteria
 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

using ISMModelPtr = pcl::features::ISMModel::Ptr
 
using Feature = pcl::Feature< PointT, pcl::Histogram< FeatureSize > >
 
using FeaturePtr = typename Feature::Ptr
 

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...
 
FeaturePtr getFeatureEstimator ()
 Returns the current feature estimator used for extraction of the descriptors. More...
 
void setFeatureEstimator (FeaturePtr 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...
 
pcl::features::ISMVoteList< PointT >::Ptr 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 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_ {0.1f}
 This value is used for the simplification. More...
 
Feature::Ptr feature_estimator_
 Stores the feature estimator. More...
 
unsigned int number_of_clusters_ {184}
 Number of clusters, is used for clustering descriptors during the training. More...
 
bool n_vot_ON_ {true}
 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 classification" by Jan Knopp, Mukta Prasad, Geert Willems, 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 classification" by Jan Knopp, Mukta Prasad, Geert Willems, Radu Timofte, and Luc Van Gool

Authors: Roman Shapovalov, Alexander Velizhev, Sergey Ushakov

Definition at line 241 of file implicit_shape_model.h.

Member Typedef Documentation

◆ Feature

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
using pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::Feature = pcl::Feature<PointT, pcl::Histogram<FeatureSize> >

Definition at line 246 of file implicit_shape_model.h.

◆ FeaturePtr

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
using pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::FeaturePtr = typename Feature::Ptr

Definition at line 247 of file implicit_shape_model.h.

◆ ISMModelPtr

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
using pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::ISMModelPtr = pcl::features::ISMModel::Ptr

Definition at line 245 of file implicit_shape_model.h.

Constructor & Destructor Documentation

◆ ImplicitShapeModelEstimation()

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

Simple constructor that initializes everything.

◆ ~ImplicitShapeModelEstimation()

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

Simple destructor.

Definition at line 534 of file implicit_shape_model.hpp.

Member Function Documentation

◆ alignYCoordWithNormal()

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 1164 of file implicit_shape_model.hpp.

References pcl::B.

◆ applyTransform()

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 1195 of file implicit_shape_model.hpp.

◆ calculateSigmas()

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::calculateSigmas ( std::vector< float > &  sigmas)
protected

This method calculates the value of sigma used for calculating the learned weights for every single class.

Parameters
[out]sigmascomputed sigmas.

Definition at line 905 of file implicit_shape_model.hpp.

◆ calculateWeights()

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 956 of file implicit_shape_model.hpp.

◆ clusterDescriptors()

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 879 of file implicit_shape_model.hpp.

◆ computeDistance()

template<int FeatureSize, typename PointT , typename NormalT >
float pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::computeDistance ( Eigen::VectorXf &  vec_1,
Eigen::VectorXf &  vec_2 
)
protected

Computes the square distance between two vectors.

Parameters
[in]vec_1first vector
[in]vec_2second vector

Definition at line 1485 of file implicit_shape_model.hpp.

References pcl::geometry::distance().

◆ computeKMeansClustering()

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 1227 of file implicit_shape_model.hpp.

References pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::TermCriteria::epsilon_, pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::TermCriteria::max_count_, and pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::TermCriteria::type_.

◆ estimateFeatures()

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 1202 of file implicit_shape_model.hpp.

References pcl::PointCloud< PointT >::makeShared(), and pcl::FeatureFromNormals< PointInT, PointNT, PointOutT >::setInputNormals().

◆ extractDescriptors()

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

Extracts the descriptors from the input clouds.

Parameters
[out]histogramsit will store the descriptors for each key point
[out]locationsit will contain the comprehensive information (such as direction, initial keypoint) for the corresponding descriptors

Definition at line 818 of file implicit_shape_model.hpp.

References pcl::PointCloud< PointT >::begin(), pcl::geometry::distance(), and pcl::PointCloud< PointT >::points.

◆ findObjects()

template<int FeatureSize, typename PointT , typename NormalT >
pcl::features::ISMVoteList< PointT >::Ptr 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 
)

This function is searching for the class of interest in a given cloud and returns the list of votes.

Parameters
[in]modeltrained model which will be used for searching the objects
[in]in_cloudinput cloud that need to be investigated
[in]in_normalscloud of normals corresponding to the input cloud
[in]in_class_of_interestclass which we are looking for

Definition at line 723 of file implicit_shape_model.hpp.

References pcl::features::ISMVoteList< PointT >::addVote(), pcl::PointCloud< PointT >::points, pcl::PointCloud< PointT >::size(), and pcl::InterestPoint::strength.

◆ generateCentersPP()

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 1393 of file implicit_shape_model.hpp.

◆ generateRandomCenter()

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 1469 of file implicit_shape_model.hpp.

◆ getFeatureEstimator()

template<int FeatureSize, typename PointT , typename NormalT >
pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::FeaturePtr pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::getFeatureEstimator

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

Definition at line 610 of file implicit_shape_model.hpp.

◆ getNumberOfClusters()

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 624 of file implicit_shape_model.hpp.

◆ getNVotState()

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 655 of file implicit_shape_model.hpp.

◆ getSamplingSize()

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 595 of file implicit_shape_model.hpp.

◆ getSigmaDists()

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 639 of file implicit_shape_model.hpp.

◆ getTrainingClasses()

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 562 of file implicit_shape_model.hpp.

◆ getTrainingClouds()

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 545 of file implicit_shape_model.hpp.

◆ getTrainingNormals()

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 578 of file implicit_shape_model.hpp.

◆ operator=()

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.

◆ setFeatureEstimator()

template<int FeatureSize, typename PointT , typename NormalT >
void pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::setFeatureEstimator ( FeaturePtr  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 617 of file implicit_shape_model.hpp.

◆ setNumberOfClusters()

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 631 of file implicit_shape_model.hpp.

◆ setNVotState()

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 662 of file implicit_shape_model.hpp.

◆ setSamplingSize()

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 602 of file implicit_shape_model.hpp.

◆ setSigmaDists()

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 646 of file implicit_shape_model.hpp.

◆ setTrainingClasses()

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 569 of file implicit_shape_model.hpp.

◆ setTrainingClouds()

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 552 of file implicit_shape_model.hpp.

◆ setTrainingNormals()

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 585 of file implicit_shape_model.hpp.

◆ shiftCloud()

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 1150 of file implicit_shape_model.hpp.

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

◆ simplifyCloud()

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

Simplifies the cloud using voxel grid principles.

Parameters
[in]in_point_cloudcloud that need to be simplified
[in]in_normal_cloudnormals of the cloud that need to be simplified
[out]out_sampled_point_cloudsimplified cloud
[out]out_sampled_normal_cloudand the corresponding normals

Definition at line 1086 of file implicit_shape_model.hpp.

References pcl::geometry::distance(), pcl::FilterIndices< PointT >::filter(), pcl::Filter< PointT >::filter(), pcl::VoxelGrid< PointT >::getCentroidIndex(), pcl::PCLBase< PointT >::setIndices(), pcl::PCLBase< PointT >::setInputCloud(), pcl::VoxelGrid< PointT >::setLeafSize(), pcl::VoxelGrid< PointT >::setSaveLeafLayout(), and pcl::PointCloud< PointT >::size().

◆ trainISM()

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

This method performs training and forms a visual vocabulary.

It returns a trained model that can be saved to file for later usage.

Parameters
[out]trained_modeltrained model

Definition at line 669 of file implicit_shape_model.hpp.

Member Data Documentation

◆ feature_estimator_

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
Feature::Ptr pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::feature_estimator_
protected

Stores the feature estimator.

Definition at line 602 of file implicit_shape_model.h.

◆ n_vot_ON_

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
bool pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::n_vot_ON_ {true}
protected

If set to false then Nvot coeff from [Knopp et al., 2010, (4)] is equal 1.0.

Definition at line 608 of file implicit_shape_model.h.

◆ number_of_clusters_

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
unsigned int pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::number_of_clusters_ {184}
protected

Number of clusters, is used for clustering descriptors during the training.

Definition at line 605 of file implicit_shape_model.h.

◆ PP_CENTERS

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 613 of file implicit_shape_model.h.

◆ sampling_size_

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
float pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::sampling_size_ {0.1f}
protected

This value is used for the simplification.

It sets the size of grid bin.

Definition at line 599 of file implicit_shape_model.h.

◆ training_classes_

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
std::vector<unsigned int> pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_classes_ {}
protected

Stores the class number for each cloud from training_clouds_.

Definition at line 588 of file implicit_shape_model.h.

◆ training_clouds_

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

Stores the clouds used for training.

Definition at line 585 of file implicit_shape_model.h.

◆ training_normals_

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

Stores the normals for each training cloud.

Definition at line 591 of file implicit_shape_model.h.

◆ training_sigmas_

template<int FeatureSize, typename PointT , typename NormalT = pcl::Normal>
std::vector<float> pcl::ism::ImplicitShapeModelEstimation< FeatureSize, PointT, NormalT >::training_sigmas_ {}
protected

This array stores the sigma values for each training class.

If this array has a size equals 0, then sigma values will be calculated automatically.

Definition at line 596 of file implicit_shape_model.h.

◆ USE_INITIAL_LABELS

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 617 of file implicit_shape_model.h.


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