Point Cloud Library (PCL)  1.7.0
Public Types | Public Member Functions | Protected Attributes
pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT > Class Template Reference

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 >:

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:

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)

Overloaded computed method from pcl::Feature.

Parameters:
[out]outputthe 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::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 
)

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

Parameters:
[in]processedthe input cloud
[out]outputthe resulting signature
[in]cluster_indicesthe indices of the stable cluster

Definition at line 375 of file our_cvfh.hpp.

References pcl::getMaxDistance(), pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::points, 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]evxthe x-axis
[in]evythe z-axis
[in]evzthe z-axis
[out]transformPCthe resulting transformation
[in]center_mat4x4 matrix concatenated to the resulting transformation

Definition at line 101 of file our_cvfh.h.

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 
)

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

Parameters:
[in]cloudpointcloud to be filtered
[out]indices_outthe indices of the points with higher curvature than threshold
[out]indices_inthe indices of the remaining points after filtering
[in]thresholdthreshold 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]centroidsvector 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]centroidsvector 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]indicesvector 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]transvector 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]validvector 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]vpxthe X coordinate of the viewpoint
[out]vpythe Y coordinate of the viewpoint
[out]vpzthe 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]fthe 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]dthe 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]dthe 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]dthe 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]fthe 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]minthe 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]normalizetrue 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_normalsthe 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]rcthe 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]vpxthe X coordinate of the viewpoint
[in]vpythe Y coordinate of the viewpoint
[in]vpzthe 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 
)

Computes SGURF.

Parameters:
[in]centroidthe centroid of the cluster
[in]normal_centroidthe average of the normals
[in]processedthe input cloud
[out]transformationsthe transformations aligning the cloud to the SGURF axes
[out]gridthe cloud transformed internally
[in]indicesthe indices of the stable cluster

Definition at line 191 of file our_cvfh.hpp.

References pcl::demeanPointCloud(), pcl::getMaxDistance(), pcl::PointIndices::indices, and pcl::transformPointCloud().


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 >::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]

Normal centroids that were used to compute different OUR-CVFH descriptors.

Definition at line 390 of file our_cvfh.h.

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


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