pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT > Class Template Reference
[Module features]

OURCVFHEstimation estimates the Oriented, Unique and Repetable Clustered Viewpoint Feature Histogram (CVFH) descriptor for a given point cloud dataset given XYZ data and normals, as presented in:

More...

#include <pcl/features/our_cvfh.h>

Inheritance diagram for pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >:
Inheritance graph
[legend]
Collaboration diagram for pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef boost::shared_ptr
< OURCVFHEstimation< PointInT,
PointNT, PointOutT > > 
Ptr
typedef boost::shared_ptr
< const OURCVFHEstimation
< PointInT, PointNT, PointOutT > > 
ConstPtr
typedef Feature< PointInT,
PointOutT >::PointCloudOut 
PointCloudOut
typedef pcl::search::Search
< PointNormal >::Ptr 
KdTreePtr
typedef pcl::PointCloud
< PointInT >::Ptr 
PointInTPtr

Public Member Functions

 OURCVFHEstimation ()
 Empty constructor.
Eigen::Matrix4f createTransFromAxes (Eigen::Vector3f &evx, Eigen::Vector3f &evy, Eigen::Vector3f &evz, Eigen::Affine3f &transformPC, Eigen::Matrix4f &center_mat)
 Creates an affine transformation from the RF axes.
void computeRFAndShapeDistribution (PointInTPtr &processed, PointCloudOut &output, std::vector< pcl::PointIndices > &cluster_indices)
 Computes SGURF and the shape distribution based on the selected SGURF.
bool sgurf (Eigen::Vector3f &centroid, Eigen::Vector3f &normal_centroid, PointInTPtr &processed, std::vector< Eigen::Matrix4f, Eigen::aligned_allocator< Eigen::Matrix4f > > &transformations, PointInTPtr &grid, pcl::PointIndices &indices)
 Computes SGURF.
void filterNormalsWithHighCurvature (const pcl::PointCloud< PointNT > &cloud, std::vector< int > &indices_to_use, std::vector< int > &indices_out, std::vector< int > &indices_in, float threshold)
 Removes normals with high curvature caused by real edges or noisy data.
void setViewPoint (float vpx, float vpy, float vpz)
 Set the viewpoint.
void setRadiusNormals (float radius_normals)
 Set the radius used to compute normals.
void getViewPoint (float &vpx, float &vpy, float &vpz)
 Get the viewpoint.
void getCentroidClusters (std::vector< Eigen::Vector3f > &centroids)
 Get the centroids used to compute different CVFH descriptors.
void getCentroidNormalClusters (std::vector< Eigen::Vector3f > &centroids)
 Get the normal centroids used to compute different CVFH descriptors.
void setClusterTolerance (float d)
 Sets max.
void setEPSAngleThreshold (float d)
 Sets max.
void setCurvatureThreshold (float d)
 Sets curvature threshold for removing normals.
void setMinPoints (size_t min)
 Set minimum amount of points for a cluster to be considered.
void setNormalizeBins (bool normalize)
 Sets wether if the signatures should be normalized or not.
void getClusterIndices (std::vector< pcl::PointIndices > &indices)
 Gets the indices of the original point cloud used to compute the signatures.
void setRefineClusters (float rc)
 Sets the refinement factor for the clusters.
void getTransforms (std::vector< Eigen::Matrix4f, Eigen::aligned_allocator< Eigen::Matrix4f > > &trans)
 Returns the transformations aligning the point cloud to the corresponding SGURF.
void getValidTransformsVec (std::vector< bool > &valid)
 Returns a boolean vector indicating of the transformation obtained by getTransforms() represents a valid SGURF.
void setAxisRatio (float f)
 Sets the min axis ratio between the SGURF axes to decide if disambiguition is feasible.
void setMinAxisValue (float f)
 Sets the min disambiguition axis value to generate several SGURFs for the cluster when disambiguition is difficult.
void compute (PointCloudOut &output)
 Overloaded computed method from pcl::Feature.

Protected Attributes

std::vector< Eigen::Vector3f > centroids_dominant_orientations_
 Centroids that were used to compute different OUR-CVFH descriptors.
std::vector< Eigen::Vector3f > dominant_normals_
 Normal centroids that were used to compute different OUR-CVFH descriptors.
std::vector< pcl::PointIndicesclusters_
 Indices to the points representing the stable clusters.

Detailed Description

template<typename PointInT, typename PointNT, typename PointOutT = pcl::VFHSignature308>
class pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >

OURCVFHEstimation estimates the Oriented, Unique and Repetable Clustered Viewpoint Feature Histogram (CVFH) descriptor for a given point cloud dataset given XYZ data and normals, as presented in:

Aldoma, F. Tombari, R.B. Rusu and M. Vincze DAGM-OAGM 2012 Graz, Austria The suggested PointOutT is pcl::VFHSignature308.

Author:
Aitor Aldoma

Definition at line 62 of file our_cvfh.h.


Member Typedef Documentation

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
typedef boost::shared_ptr<const OURCVFHEstimation<PointInT, PointNT, PointOutT> > pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::ConstPtr

Reimplemented from pcl::FeatureFromNormals< PointInT, PointNT, PointOutT >.

Definition at line 66 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
typedef pcl::search::Search<PointNormal>::Ptr pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::KdTreePtr

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

Definition at line 76 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
typedef Feature<PointInT, PointOutT>::PointCloudOut pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::PointCloudOut

Reimplemented from pcl::FeatureFromNormals< PointInT, PointNT, PointOutT >.

Definition at line 75 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
typedef pcl::PointCloud<PointInT>::Ptr pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::PointInTPtr

Definition at line 77 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
typedef boost::shared_ptr<OURCVFHEstimation<PointInT, PointNT, PointOutT> > pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::Ptr

Reimplemented from pcl::FeatureFromNormals< PointInT, PointNT, PointOutT >.

Definition at line 65 of file our_cvfh.h.


Constructor & Destructor Documentation

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::OURCVFHEstimation (  )  [inline]

Member Function Documentation

template<typename PointInT , typename PointNT , typename PointOutT >
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::compute ( PointCloudOut output  )  [inline]

Overloaded computed method from pcl::Feature.

Parameters:
[out] output the resultant point cloud model dataset containing the estimated features

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

Definition at line 52 of file our_cvfh.hpp.

References pcl::Feature< PointInT, PointOutT >::deinitCompute(), pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::points, and pcl::PointCloud< PointT >::width.

template<typename PointInT , typename PointNT , typename PointOutT >
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::computeRFAndShapeDistribution ( PointInTPtr processed,
PointCloudOut output,
std::vector< pcl::PointIndices > &  cluster_indices 
) [inline]

Computes SGURF and the shape distribution based on the selected SGURF.

Parameters:
[in] processed the input cloud
[out] output the resulting signature
[in] cluster_indices the indices of the stable cluster

Definition at line 375 of file our_cvfh.hpp.

References pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::centroids_dominant_orientations_, pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::dominant_normals_, pcl::getMaxDistance(), pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::points, pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::sgurf(), pcl::transformPointCloud(), and pcl::PointCloud< PointT >::width.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
Eigen::Matrix4f pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::createTransFromAxes ( Eigen::Vector3f &  evx,
Eigen::Vector3f &  evy,
Eigen::Vector3f &  evz,
Eigen::Affine3f &  transformPC,
Eigen::Matrix4f &  center_mat 
) [inline]

Creates an affine transformation from the RF axes.

Parameters:
[in] evx the x-axis
[in] evy the z-axis
[in] evz the z-axis
[out] transformPC the resulting transformation
[in] center_mat 4x4 matrix concatenated to the resulting transformation

Definition at line 101 of file our_cvfh.h.

Referenced by pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::sgurf().

template<typename PointInT , typename PointNT , typename PointOutT >
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::filterNormalsWithHighCurvature ( const pcl::PointCloud< PointNT > &  cloud,
std::vector< int > &  indices_to_use,
std::vector< int > &  indices_out,
std::vector< int > &  indices_in,
float  threshold 
) [inline]

Removes normals with high curvature caused by real edges or noisy data.

Parameters:
[in] cloud pointcloud to be filtered
[out] indices_out the indices of the points with higher curvature than threshold
[out] indices_in the indices of the remaining points after filtering
[in] threshold threshold value for curvature

Definition at line 161 of file our_cvfh.hpp.

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

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getCentroidClusters ( std::vector< Eigen::Vector3f > &  centroids  )  [inline]

Get the centroids used to compute different CVFH descriptors.

Parameters:
[out] centroids vector to hold the centroids

Definition at line 194 of file our_cvfh.h.

References pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::centroids_dominant_orientations_.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getCentroidNormalClusters ( std::vector< Eigen::Vector3f > &  centroids  )  [inline]

Get the normal centroids used to compute different CVFH descriptors.

Parameters:
[out] centroids vector to hold the normal centroids

Definition at line 204 of file our_cvfh.h.

References pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::dominant_normals_.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getClusterIndices ( std::vector< pcl::PointIndices > &  indices  )  [inline]

Gets the indices of the original point cloud used to compute the signatures.

Parameters:
[out] indices vector of point indices

Definition at line 260 of file our_cvfh.h.

References pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::clusters_.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getTransforms ( std::vector< Eigen::Matrix4f, Eigen::aligned_allocator< Eigen::Matrix4f > > &  trans  )  [inline]

Returns the transformations aligning the point cloud to the corresponding SGURF.

Parameters:
[out] trans vector of transformations

Definition at line 278 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getValidTransformsVec ( std::vector< bool > &  valid  )  [inline]

Returns a boolean vector indicating of the transformation obtained by getTransforms() represents a valid SGURF.

Parameters:
[out] valid vector of booleans

Definition at line 288 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getViewPoint ( float &  vpx,
float &  vpy,
float &  vpz 
) [inline]

Get the viewpoint.

Parameters:
[out] vpx the X coordinate of the viewpoint
[out] vpy the Y coordinate of the viewpoint
[out] vpz the Z coordinate of the viewpoint

Definition at line 183 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setAxisRatio ( float  f  )  [inline]

Sets the min axis ratio between the SGURF axes to decide if disambiguition is feasible.

Parameters:
[in] f the ratio between axes

Definition at line 297 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setClusterTolerance ( float  d  )  [inline]

Sets max.

Euclidean distance between points to be added to the cluster

Parameters:
[in] d the maximum Euclidean distance

Definition at line 215 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setCurvatureThreshold ( float  d  )  [inline]

Sets curvature threshold for removing normals.

Parameters:
[in] d the curvature threshold

Definition at line 233 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setEPSAngleThreshold ( float  d  )  [inline]

Sets max.

deviation of the normals between two points so they can be clustered together

Parameters:
[in] d the maximum deviation

Definition at line 224 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setMinAxisValue ( float  f  )  [inline]

Sets the min disambiguition axis value to generate several SGURFs for the cluster when disambiguition is difficult.

Parameters:
[in] f the min axis value

Definition at line 306 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setMinPoints ( size_t  min  )  [inline]

Set minimum amount of points for a cluster to be considered.

Parameters:
[in] min the minimum amount of points to be set

Definition at line 242 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setNormalizeBins ( bool  normalize  )  [inline]

Sets wether if the signatures should be normalized or not.

Parameters:
[in] normalize true if normalization is required, false otherwise

Definition at line 251 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setRadiusNormals ( float  radius_normals  )  [inline]

Set the radius used to compute normals.

Parameters:
[in] radius_normals the radius

Definition at line 172 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setRefineClusters ( float  rc  )  [inline]

Sets the refinement factor for the clusters.

Parameters:
[in] rc the factor used to decide if a point is used to estimate a stable cluster

Definition at line 269 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setViewPoint ( float  vpx,
float  vpy,
float  vpz 
) [inline]

Set the viewpoint.

Parameters:
[in] vpx the X coordinate of the viewpoint
[in] vpy the Y coordinate of the viewpoint
[in] vpz the Z coordinate of the viewpoint

Definition at line 161 of file our_cvfh.h.

template<typename PointInT , typename PointNT , typename PointOutT >
bool pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::sgurf ( Eigen::Vector3f &  centroid,
Eigen::Vector3f &  normal_centroid,
PointInTPtr processed,
std::vector< Eigen::Matrix4f, Eigen::aligned_allocator< Eigen::Matrix4f > > &  transformations,
PointInTPtr grid,
pcl::PointIndices indices 
) [inline]

Computes SGURF.

Parameters:
[in] centroid the centroid of the cluster
[in] normal_centroid the average of the normals
[in] processed the input cloud
[out] transformations the transformations aligning the cloud to the SGURF axes
[out] grid the cloud transformed internally
[in] indices the indices of the stable cluster

Definition at line 191 of file our_cvfh.hpp.

References pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::createTransFromAxes(), pcl::demeanPointCloud(), pcl::getMaxDistance(), pcl::PointIndices::indices, and pcl::transformPointCloud().

Referenced by pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::computeRFAndShapeDistribution().


Member Data Documentation

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
std::vector<Eigen::Vector3f> pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::centroids_dominant_orientations_ [protected]

Centroids that were used to compute different OUR-CVFH descriptors.

Definition at line 388 of file our_cvfh.h.

Referenced by pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::computeRFAndShapeDistribution(), and pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getCentroidClusters().

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
std::vector<pcl::PointIndices> pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::clusters_ [protected]

Indices to the points representing the stable clusters.

Definition at line 392 of file our_cvfh.h.

Referenced by pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getClusterIndices().

template<typename PointInT , typename PointNT , typename PointOutT = pcl::VFHSignature308>
std::vector<Eigen::Vector3f> pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::dominant_normals_ [protected]

The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends