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 <our_cvfh.h>
Public Types | |
typedef boost::shared_ptr < const OURCVFHEstimation < PointInT, PointNT, PointOutT > > | ConstPtr |
typedef pcl::search::Search < PointNormal >::Ptr | KdTreePtr |
typedef Feature< PointInT, PointOutT >::PointCloudOut | PointCloudOut |
typedef pcl::PointCloud < PointInT >::Ptr | PointInTPtr |
typedef boost::shared_ptr < OURCVFHEstimation< PointInT, PointNT, PointOutT > > | Ptr |
Public Member Functions | |
void | compute (PointCloudOut &output) |
Overloaded computed method from pcl::Feature. | |
void | computeRFAndShapeDistribution (PointInTPtr &processed, PointCloudOut &output, std::vector< pcl::PointIndices > &cluster_indices) |
Computes SGURF and the shape distribution based on the selected SGURF. | |
Eigen::Matrix4f | createTransFromAxes (Eigen::Vector3f &evx, Eigen::Vector3f &evy, Eigen::Vector3f &evz, Eigen::Affine3f &transformPC, Eigen::Matrix4f ¢er_mat) |
Creates an affine transformation from the RF axes. | |
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 | getCentroidClusters (std::vector< Eigen::Vector3f > ¢roids) |
Get the centroids used to compute different CVFH descriptors. | |
void | getCentroidNormalClusters (std::vector< Eigen::Vector3f > ¢roids) |
Get the normal centroids used to compute different CVFH descriptors. | |
void | getClusterIndices (std::vector< pcl::PointIndices > &indices) |
Gets the indices of the original point cloud used to compute the signatures. | |
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 | getViewPoint (float &vpx, float &vpy, float &vpz) |
Get the viewpoint. | |
OURCVFHEstimation () | |
Empty constructor. | |
void | setAxisRatio (float f) |
Sets the min axis ratio between the SGURF axes to decide if disambiguition is feasible. | |
void | setClusterTolerance (float d) |
Sets max. Euclidean distance between points to be added to the cluster. | |
void | setCurvatureThreshold (float d) |
Sets curvature threshold for removing normals. | |
void | setEPSAngleThreshold (float d) |
Sets max. deviation of the normals between two points so they can be clustered together. | |
void | setMinAxisValue (float f) |
Sets the min disambiguition axis value to generate several SGURFs for the cluster when disambiguition is difficult. | |
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 | setRadiusNormals (float radius_normals) |
Set the radius used to compute normals. | |
void | setRefineClusters (float rc) |
Sets the refinement factor for the clusters. | |
void | setViewPoint (float vpx, float vpy, float vpz) |
Set the viewpoint. | |
bool | sgurf (Eigen::Vector3f ¢roid, Eigen::Vector3f &normal_centroid, PointInTPtr &processed, std::vector< Eigen::Matrix4f, Eigen::aligned_allocator< Eigen::Matrix4f > > &transformations, PointInTPtr &grid, pcl::PointIndices &indices) |
Computes SGURF. | |
Protected Attributes | |
std::vector< Eigen::Vector3f > | centroids_dominant_orientations_ |
Centroids that were used to compute different OUR-CVFH descriptors. | |
std::vector< pcl::PointIndices > | clusters_ |
Indices to the points representing the stable clusters. | |
std::vector< Eigen::Vector3f > | dominant_normals_ |
Normal centroids that were used to compute different OUR-CVFH descriptors. | |
Private Member Functions | |
void | computeFeature (PointCloudOut &output) |
Estimate the OUR-CVFH descriptors at a set of points given by <setInputCloud (), setIndices ()> using the surface in setSearchSurface () | |
void | extractEuclideanClustersSmooth (const pcl::PointCloud< pcl::PointNormal > &cloud, const pcl::PointCloud< pcl::PointNormal > &normals, float tolerance, const pcl::search::Search< pcl::PointNormal >::Ptr &tree, std::vector< pcl::PointIndices > &clusters, double eps_angle, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)()) |
Region growing method using Euclidean distances and neighbors normals to add points to a region. | |
Private Attributes | |
float | axis_ratio_ |
float | cluster_tolerance_ |
allowed Euclidean distance between points to be added to the cluster. | |
float | curv_threshold_ |
Curvature threshold for removing normals. | |
float | eps_angle_threshold_ |
deviation of the normals between two points so they can be clustered together. | |
float | leaf_size_ |
Size of the voxels after voxel gridding. IMPORTANT: Must match the voxel size of the training data or the normalize_bins_ flag must be set to true. | |
float | min_axis_value_ |
size_t | min_points_ |
Minimum amount of points in a clustered region to be considered stable for CVFH computation. | |
bool | normalize_bins_ |
Wether to normalize the signatures or not. Default: false. | |
float | radius_normals_ |
Radius for the normals computation. | |
float | refine_clusters_ |
Factor for the cluster refinement. | |
std::vector< Eigen::Matrix4f, Eigen::aligned_allocator < Eigen::Matrix4f > > | transforms_ |
std::vector< bool > | valid_transforms_ |
float | vpx_ |
Values describing the viewpoint ("pinhole" camera model assumed). By default, the viewpoint is set to 0,0,0. | |
float | vpy_ |
float | vpz_ |
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:
Definition at line 62 of file our_cvfh.h.
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.
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.
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.
typedef pcl::PointCloud<PointInT>::Ptr pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::PointInTPtr |
Definition at line 77 of file our_cvfh.h.
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.
pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::OURCVFHEstimation | ( | ) | [inline] |
Empty constructor.
Definition at line 79 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::compute | ( | PointCloudOut & | output | ) |
Overloaded computed method from pcl::Feature.
[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.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::computeFeature | ( | PointCloudOut & | output | ) | [private, virtual] |
Estimate the OUR-CVFH descriptors at a set of points given by <setInputCloud (), setIndices ()> using the surface in setSearchSurface ()
[out] | output | the resultant point cloud model dataset that contains the OUR-CVFH feature estimates |
Implements pcl::Feature< PointInT, PointOutT >.
Definition at line 525 of file our_cvfh.hpp.
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.
[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.
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.
[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.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::extractEuclideanClustersSmooth | ( | const pcl::PointCloud< pcl::PointNormal > & | cloud, |
const pcl::PointCloud< pcl::PointNormal > & | normals, | ||
float | tolerance, | ||
const pcl::search::Search< pcl::PointNormal >::Ptr & | tree, | ||
std::vector< pcl::PointIndices > & | clusters, | ||
double | eps_angle, | ||
unsigned int | min_pts_per_cluster = 1 , |
||
unsigned int | max_pts_per_cluster = (std::numeric_limits<int>::max) () |
||
) | [private] |
Region growing method using Euclidean distances and neighbors normals to add points to a region.
[in] | cloud | point cloud to split into regions |
[in] | normals | are the normals of cloud |
[in] | tolerance | is the allowed Euclidean distance between points to be added to the cluster |
[in] | tree | is the spatial search structure for nearest neighbour search |
[out] | clusters | vector of indices representing the clustered regions |
[in] | eps_angle | deviation of the normals between two points so they can be clustered together |
[in] | min_pts_per_cluster | minimum cluster size. (default: 1 point) |
[in] | max_pts_per_cluster | maximum cluster size. (default: all the points) |
Definition at line 75 of file our_cvfh.hpp.
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.
[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.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getCentroidClusters | ( | std::vector< Eigen::Vector3f > & | centroids | ) | [inline] |
Get the centroids used to compute different CVFH descriptors.
[out] | centroids | vector to hold the centroids |
Definition at line 194 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getCentroidNormalClusters | ( | std::vector< Eigen::Vector3f > & | centroids | ) | [inline] |
Get the normal centroids used to compute different CVFH descriptors.
[out] | centroids | vector to hold the normal centroids |
Definition at line 204 of file our_cvfh.h.
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.
[out] | indices | vector of point indices |
Definition at line 260 of file our_cvfh.h.
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.
[out] | trans | vector of transformations |
Definition at line 278 of file our_cvfh.h.
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.
[out] | valid | vector of booleans |
Definition at line 288 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::getViewPoint | ( | float & | vpx, |
float & | vpy, | ||
float & | vpz | ||
) | [inline] |
Get the viewpoint.
[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.
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.
[in] | f | the ratio between axes |
Definition at line 297 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setClusterTolerance | ( | float | d | ) | [inline] |
Sets max. Euclidean distance between points to be added to the cluster.
[in] | d | the maximum Euclidean distance |
Definition at line 215 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setCurvatureThreshold | ( | float | d | ) | [inline] |
Sets curvature threshold for removing normals.
[in] | d | the curvature threshold |
Definition at line 233 of file our_cvfh.h.
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.
[in] | d | the maximum deviation |
Definition at line 224 of file our_cvfh.h.
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.
[in] | f | the min axis value |
Definition at line 306 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setMinPoints | ( | size_t | min | ) | [inline] |
Set minimum amount of points for a cluster to be considered.
[in] | min | the minimum amount of points to be set |
Definition at line 242 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setNormalizeBins | ( | bool | normalize | ) | [inline] |
Sets wether if the signatures should be normalized or not.
[in] | normalize | true if normalization is required, false otherwise |
Definition at line 251 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setRadiusNormals | ( | float | radius_normals | ) | [inline] |
Set the radius used to compute normals.
[in] | radius_normals | the radius |
Definition at line 172 of file our_cvfh.h.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setRefineClusters | ( | float | rc | ) | [inline] |
Sets the refinement factor for the clusters.
[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.
void pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::setViewPoint | ( | float | vpx, |
float | vpy, | ||
float | vpz | ||
) | [inline] |
Set the viewpoint.
[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.
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.
[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.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::axis_ratio_ [private] |
Definition at line 354 of file our_cvfh.h.
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.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::cluster_tolerance_ [private] |
allowed Euclidean distance between points to be added to the cluster.
Definition at line 335 of file our_cvfh.h.
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.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::curv_threshold_ [private] |
Curvature threshold for removing normals.
Definition at line 332 of file our_cvfh.h.
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.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::eps_angle_threshold_ [private] |
deviation of the normals between two points so they can be clustered together.
Definition at line 338 of file our_cvfh.h.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::leaf_size_ [private] |
Size of the voxels after voxel gridding. IMPORTANT: Must match the voxel size of the training data or the normalize_bins_ flag must be set to true.
Definition at line 326 of file our_cvfh.h.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::min_axis_value_ [private] |
Definition at line 355 of file our_cvfh.h.
size_t pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::min_points_ [private] |
Minimum amount of points in a clustered region to be considered stable for CVFH computation.
Definition at line 343 of file our_cvfh.h.
bool pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::normalize_bins_ [private] |
Wether to normalize the signatures or not. Default: false.
Definition at line 329 of file our_cvfh.h.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::radius_normals_ [private] |
Radius for the normals computation.
Definition at line 346 of file our_cvfh.h.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::refine_clusters_ [private] |
Factor for the cluster refinement.
Definition at line 349 of file our_cvfh.h.
std::vector<Eigen::Matrix4f, Eigen::aligned_allocator<Eigen::Matrix4f> > pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::transforms_ [private] |
Definition at line 351 of file our_cvfh.h.
std::vector<bool> pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::valid_transforms_ [private] |
Definition at line 352 of file our_cvfh.h.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::vpx_ [private] |
Values describing the viewpoint ("pinhole" camera model assumed). By default, the viewpoint is set to 0,0,0.
Definition at line 321 of file our_cvfh.h.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::vpy_ [private] |
Definition at line 321 of file our_cvfh.h.
float pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >::vpz_ [private] |
Definition at line 321 of file our_cvfh.h.