Point Cloud Library (PCL)
1.14.1-dev
|
The pcl_features library contains data structures and mechanisms for 3D feature estimation from point cloud data. 3D features are representations at a certain 3D point or position in space, which describe geometrical patterns based on the information available around the point. The data space selected around the query point is usually referred as the k-neighborhood.
The following figure shows a simple example of a selected query point, and its selected k-neighborhood.
An example of two of the most widely used geometric point features are the underlying surface's estimated curvature and normal at a query point p. Both of them are considered local features, as they characterize a point using the information provided by its k closest point neighbors. For determining these neighbors efficiently, the input dataset is usually split into smaller chunks using spatial decomposition techniques such as octrees or kD-trees (see the figure below - left: kD-tree, right: octree), and then closest point searches are performed in that space. Depending on the application one can opt for either determining a fixed number of k points in the vicinity of p, or all points which are found inside of a sphere of radius r centered at p. Unarguably, one the easiest methods for estimating the surface normals and curvature changes at a point p is to perform an eigendecomposition (i.e. compute the eigenvectors and eigenvalues) of the k-neighborhood point surface patch. Thus, the eigenvector corresponding to the smallest eigenvalue will approximate the surface normal n at point p, while the surface curvature change will be estimated from the eigenvalues as:
Please visit http://www.pointclouds.org for more information.
Classes | |
class | pcl::ShapeContext3DEstimation< PointInT, PointNT, PointOutT > |
ShapeContext3DEstimation implements the 3D shape context descriptor as described in: More... | |
class | pcl::BOARDLocalReferenceFrameEstimation< PointInT, PointNT, PointOutT > |
BOARDLocalReferenceFrameEstimation implements the BOrder Aware Repeatable Directions algorithm for local reference frame estimation as described here: More... | |
class | pcl::BoundaryEstimation< PointInT, PointNT, PointOutT > |
BoundaryEstimation estimates whether a set of points is lying on surface boundaries using an angle criterion. More... | |
class | pcl::BRISK2DEstimation< PointInT, PointOutT, KeypointT, IntensityT > |
Implementation of the BRISK-descriptor, based on the original code and paper reference by. More... | |
class | pcl::CRHEstimation< PointInT, PointNT, PointOutT > |
CRHEstimation estimates the Camera Roll Histogram (CRH) descriptor for a given point cloud dataset containing XYZ data and normals, as presented in: More... | |
class | pcl::CVFHEstimation< PointInT, PointNT, PointOutT > |
CVFHEstimation estimates the Clustered Viewpoint Feature Histogram (CVFH) descriptor for a given point cloud dataset containing XYZ data and normals, as presented in: More... | |
class | pcl::DifferenceOfNormalsEstimation< PointInT, PointNT, PointOutT > |
A Difference of Normals (DoN) scale filter implementation for point cloud data. More... | |
class | pcl::ESFEstimation< PointInT, PointOutT > |
ESFEstimation estimates the ensemble of shape functions descriptors for a given point cloud dataset containing points. More... | |
class | pcl::Feature< PointInT, PointOutT > |
Feature represents the base feature class. More... | |
class | pcl::FeatureWithLocalReferenceFrames< PointInT, PointRFT > |
FeatureWithLocalReferenceFrames provides a public interface for descriptor extractor classes which need a local reference frame at each input keypoint. More... | |
class | pcl::FLARELocalReferenceFrameEstimation< PointInT, PointNT, PointOutT, SignedDistanceT > |
FLARELocalReferenceFrameEstimation implements the Fast LocAl Reference framE algorithm for local reference frame estimation as described here: More... | |
class | pcl::FPFHEstimation< PointInT, PointNT, PointOutT > |
FPFHEstimation estimates the Fast Point Feature Histogram (FPFH) descriptor for a given point cloud dataset containing points and normals. More... | |
class | pcl::FPFHEstimationOMP< PointInT, PointNT, PointOutT > |
FPFHEstimationOMP estimates the Fast Point Feature Histogram (FPFH) descriptor for a given point cloud dataset containing points and normals, in parallel, using the OpenMP standard. More... | |
class | pcl::GASDEstimation< PointInT, PointOutT > |
GASDEstimation estimates the Globally Aligned Spatial Distribution (GASD) descriptor for a given point cloud dataset given XYZ data. More... | |
class | pcl::GASDColorEstimation< PointInT, PointOutT > |
GASDColorEstimation estimates the Globally Aligned Spatial Distribution (GASD) descriptor for a given point cloud dataset given XYZ and RGB data. More... | |
class | pcl::GFPFHEstimation< PointInT, PointLT, PointOutT > |
GFPFHEstimation estimates the Global Fast Point Feature Histogram (GFPFH) descriptor for a given point cloud dataset containing points and labels. More... | |
class | pcl::GRSDEstimation< PointInT, PointNT, PointOutT > |
GRSDEstimation estimates the Global Radius-based Surface Descriptor (GRSD) for a given point cloud dataset containing points and normals. More... | |
class | pcl::IntensityGradientEstimation< PointInT, PointNT, PointOutT, IntensitySelectorT > |
IntensityGradientEstimation estimates the intensity gradient for a point cloud that contains position and intensity values. More... | |
class | pcl::IntensitySpinEstimation< PointInT, PointOutT > |
IntensitySpinEstimation estimates the intensity-domain spin image descriptors for a given point cloud dataset containing points and intensity. More... | |
class | pcl::MomentInvariantsEstimation< PointInT, PointOutT > |
MomentInvariantsEstimation estimates the 3 moment invariants (j1, j2, j3) at each 3D point. More... | |
class | pcl::Narf |
NARF (Normal Aligned Radial Features) is a point feature descriptor type for 3D data. More... | |
class | pcl::NarfDescriptor |
Computes NARF feature descriptors for points in a range image See B. More... | |
class | pcl::NormalEstimation< PointInT, PointOutT > |
NormalEstimation estimates local surface properties (surface normals and curvatures)at each 3D point. More... | |
class | pcl::NormalEstimationOMP< PointInT, PointOutT > |
NormalEstimationOMP estimates local surface properties at each 3D point, such as surface normals and curvatures, in parallel, using the OpenMP standard. More... | |
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: More... | |
class | pcl::PFHEstimation< PointInT, PointNT, PointOutT > |
PFHEstimation estimates the Point Feature Histogram (PFH) descriptor for a given point cloud dataset containing points and normals. More... | |
class | pcl::PFHRGBEstimation< PointInT, PointNT, PointOutT > |
Similar to the Point Feature Histogram descriptor, but also takes color into account. More... | |
class | pcl::PrincipalCurvaturesEstimation< PointInT, PointNT, PointOutT > |
PrincipalCurvaturesEstimation estimates the directions (eigenvectors) and magnitudes (eigenvalues) of principal surface curvatures for a given point cloud dataset containing points and normals. More... | |
class | pcl::RangeImageBorderExtractor |
Extract obstacle borders from range images, meaning positions where there is a transition from foreground to background. More... | |
class | pcl::RIFTEstimation< PointInT, GradientT, PointOutT > |
RIFTEstimation estimates the Rotation Invariant Feature Transform descriptors for a given point cloud dataset containing points and intensity. More... | |
class | pcl::RSDEstimation< PointInT, PointNT, PointOutT > |
RSDEstimation estimates the Radius-based Surface Descriptor (minimal and maximal radius of the local surface's curves) for a given point cloud dataset containing points and normals. More... | |
class | pcl::SHOTEstimationBase< PointInT, PointNT, PointOutT, PointRFT > |
SHOTEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given point cloud dataset containing points and normals. More... | |
class | pcl::SHOTEstimation< PointInT, PointNT, PointOutT, PointRFT > |
SHOTEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given point cloud dataset containing points and normals. More... | |
class | pcl::SHOTColorEstimation< PointInT, PointNT, PointOutT, PointRFT > |
SHOTColorEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given point cloud dataset containing points, normals and colors. More... | |
class | pcl::SHOTLocalReferenceFrameEstimation< PointInT, PointOutT > |
SHOTLocalReferenceFrameEstimation estimates the Local Reference Frame used in the calculation of the (SHOT) descriptor. More... | |
class | pcl::SHOTLocalReferenceFrameEstimationOMP< PointInT, PointOutT > |
SHOTLocalReferenceFrameEstimation estimates the Local Reference Frame used in the calculation of the (SHOT) descriptor. More... | |
class | pcl::SHOTEstimationOMP< PointInT, PointNT, PointOutT, PointRFT > |
SHOTEstimationOMP estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given point cloud dataset containing points and normals, in parallel, using the OpenMP standard. More... | |
class | pcl::SHOTColorEstimationOMP< PointInT, PointNT, PointOutT, PointRFT > |
SHOTColorEstimationOMP estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given point cloud dataset containing points, normals and colors, in parallel, using the OpenMP standard. More... | |
class | pcl::SpinImageEstimation< PointInT, PointNT, PointOutT > |
Estimates spin-image descriptors in the given input points. More... | |
class | pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT > |
UniqueShapeContext implements the Unique Shape Context Descriptor described here: More... | |
class | pcl::VFHEstimation< PointInT, PointNT, PointOutT > |
VFHEstimation estimates the Viewpoint Feature Histogram (VFH) descriptor for a given point cloud dataset containing points and normals. More... | |
Functions | |
void | pcl::solvePlaneParameters (const Eigen::Matrix3f &covariance_matrix, const Eigen::Vector4f &point, Eigen::Vector4f &plane_parameters, float &curvature) |
Solve the eigenvalues and eigenvectors of a given 3x3 covariance matrix, and estimate the least-squares plane normal and surface curvature. More... | |
void | pcl::solvePlaneParameters (const Eigen::Matrix3f &covariance_matrix, float &nx, float &ny, float &nz, float &curvature) |
Solve the eigenvalues and eigenvectors of a given 3x3 covariance matrix, and estimate the least-squares plane normal and surface curvature. More... | |
template<typename PointT > | |
bool | pcl::computePointNormal (const pcl::PointCloud< PointT > &cloud, Eigen::Vector4f &plane_parameters, float &curvature) |
Compute the Least-Squares plane fit for a given set of points, and return the estimated plane parameters together with the surface curvature. More... | |
template<typename PointT > | |
bool | pcl::computePointNormal (const pcl::PointCloud< PointT > &cloud, const pcl::Indices &indices, Eigen::Vector4f &plane_parameters, float &curvature) |
Compute the Least-Squares plane fit for a given set of points, using their indices, and return the estimated plane parameters together with the surface curvature. More... | |
template<typename PointT , typename Scalar > | |
void | pcl::flipNormalTowardsViewpoint (const PointT &point, float vp_x, float vp_y, float vp_z, Eigen::Matrix< Scalar, 4, 1 > &normal) |
Flip (in place) the estimated normal of a point towards a given viewpoint. More... | |
template<typename PointT , typename Scalar > | |
void | pcl::flipNormalTowardsViewpoint (const PointT &point, float vp_x, float vp_y, float vp_z, Eigen::Matrix< Scalar, 3, 1 > &normal) |
Flip (in place) the estimated normal of a point towards a given viewpoint. More... | |
template<typename PointT > | |
void | pcl::flipNormalTowardsViewpoint (const PointT &point, float vp_x, float vp_y, float vp_z, float &nx, float &ny, float &nz) |
Flip (in place) the estimated normal of a point towards a given viewpoint. More... | |
template<typename PointNT > | |
bool | pcl::flipNormalTowardsNormalsMean (pcl::PointCloud< PointNT > const &normal_cloud, pcl::Indices const &normal_indices, Eigen::Vector3f &normal) |
Flip (in place) normal to get the same sign of the mean of the normals specified by normal_indices. More... | |
PCL_EXPORTS bool | pcl::computePairFeatures (const Eigen::Vector4f &p1, const Eigen::Vector4f &n1, const Eigen::Vector4f &p2, const Eigen::Vector4f &n2, float &f1, float &f2, float &f3, float &f4) |
Compute the 4-tuple representation containing the three angles and one distance between two points represented by Cartesian coordinates and normals. More... | |
template<int N> | |
void | pcl::getFeaturePointCloud (const std::vector< Eigen::MatrixXf, Eigen::aligned_allocator< Eigen::MatrixXf > > &histograms2D, PointCloud< Histogram< N > > &histogramsPC) |
Transform a list of 2D matrices into a point cloud containing the values in a vector (Histogram<N>). More... | |
template<typename PointInT , typename PointNT , typename PointOutT > | |
Eigen::MatrixXf | pcl::computeRSD (const pcl::PointCloud< PointInT > &surface, const pcl::PointCloud< PointNT > &normals, const pcl::Indices &indices, double max_dist, int nr_subdiv, double plane_radius, PointOutT &radii, bool compute_histogram=false) |
Estimate the Radius-based Surface Descriptor (RSD) for a given point based on its spatial neighborhood of 3D points with normals. More... | |
template<typename PointNT , typename PointOutT > | |
Eigen::MatrixXf | pcl::computeRSD (const pcl::PointCloud< PointNT > &normals, const pcl::Indices &indices, const std::vector< float > &sqr_dists, double max_dist, int nr_subdiv, double plane_radius, PointOutT &radii, bool compute_histogram=false) |
Estimate the Radius-based Surface Descriptor (RSD) for a given point based on its spatial neighborhood of 3D points with normals. More... | |
PCL_EXPORTS bool pcl::computePairFeatures | ( | const Eigen::Vector4f & | p1, |
const Eigen::Vector4f & | n1, | ||
const Eigen::Vector4f & | p2, | ||
const Eigen::Vector4f & | n2, | ||
float & | f1, | ||
float & | f2, | ||
float & | f3, | ||
float & | f4 | ||
) |
#include <pcl/features/pfh_tools.h>
Compute the 4-tuple representation containing the three angles and one distance between two points represented by Cartesian coordinates and normals.
[in] | p1 | the first XYZ point |
[in] | n1 | the first surface normal |
[in] | p2 | the second XYZ point |
[in] | n2 | the second surface normal |
[out] | f1 | the first angular feature (angle between the projection of nq_idx and u) |
[out] | f2 | the second angular feature (angle between nq_idx and v) |
[out] | f3 | the third angular feature (angle between np_idx and |p_idx - q_idx|) |
[out] | f4 | the distance feature (p_idx - q_idx) |
Referenced by pcl::FPFHEstimation< PointInT, PointNT, PointOutT >::computePairFeatures(), pcl::PFHEstimation< PointInT, PointNT, PointOutT >::computePairFeatures(), pcl::PFHEstimation< PointInT, PointNT, PointOutT >::computePointPFHSignature(), pcl::VFHEstimation< PointInT, PointNT, PointOutT >::computePointSPFHSignature(), and pcl::FPFHEstimation< PointInT, PointNT, PointOutT >::computePointSPFHSignature().
|
inline |
#include <pcl/features/normal_3d.h>
Compute the Least-Squares plane fit for a given set of points, using their indices, and return the estimated plane parameters together with the surface curvature.
cloud | the input point cloud |
indices | the point cloud indices that need to be used |
plane_parameters | the plane parameters as: a, b, c, d (ax + by + cz + d = 0) |
curvature | the estimated surface curvature as a measure of
|
Definition at line 94 of file normal_3d.h.
References pcl::computeMeanAndCovarianceMatrix(), and pcl::solvePlaneParameters().
|
inline |
#include <pcl/features/normal_3d.h>
Compute the Least-Squares plane fit for a given set of points, and return the estimated plane parameters together with the surface curvature.
cloud | the input point cloud |
plane_parameters | the plane parameters as: a, b, c, d (ax + by + cz + d = 0) |
curvature | the estimated surface curvature as a measure of
|
Definition at line 61 of file normal_3d.h.
References pcl::computeMeanAndCovarianceMatrix(), pcl::PointCloud< PointT >::size(), and pcl::solvePlaneParameters().
Referenced by pcl::NormalEstimation< PointInT, PointOutT >::computeFeature(), pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computeFeatureFull(), and pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computeFeaturePart().
Eigen::MatrixXf pcl::computeRSD | ( | const pcl::PointCloud< PointInT > & | surface, |
const pcl::PointCloud< PointNT > & | normals, | ||
const pcl::Indices & | indices, | ||
double | max_dist, | ||
int | nr_subdiv, | ||
double | plane_radius, | ||
PointOutT & | radii, | ||
bool | compute_histogram = false |
||
) |
#include <pcl/features/rsd.h>
Estimate the Radius-based Surface Descriptor (RSD) for a given point based on its spatial neighborhood of 3D points with normals.
[in] | surface | the dataset containing the XYZ points |
[in] | normals | the dataset containing the surface normals at each point in the dataset |
[in] | indices | the neighborhood point indices in the dataset (first point is used as the reference) |
[in] | max_dist | the upper bound for the considered distance interval |
[in] | nr_subdiv | the number of subdivisions for the considered distance interval |
[in] | plane_radius | maximum radius, above which everything can be considered planar |
[in] | radii | the output point of a type that should have r_min and r_max fields |
[in] | compute_histogram | if not false, the full neighborhood histogram is provided, usable as a point signature |
Definition at line 49 of file rsd.hpp.
References M_PI.
Referenced by pcl::RSDEstimation< PointInT, PointNT, PointOutT >::computeFeature().
Eigen::MatrixXf pcl::computeRSD | ( | const pcl::PointCloud< PointNT > & | normals, |
const pcl::Indices & | indices, | ||
const std::vector< float > & | sqr_dists, | ||
double | max_dist, | ||
int | nr_subdiv, | ||
double | plane_radius, | ||
PointOutT & | radii, | ||
bool | compute_histogram = false |
||
) |
#include <pcl/features/rsd.h>
Estimate the Radius-based Surface Descriptor (RSD) for a given point based on its spatial neighborhood of 3D points with normals.
[in] | normals | the dataset containing the surface normals at each point in the dataset |
[in] | indices | the neighborhood point indices in the dataset (first point is used as the reference) |
[in] | sqr_dists | the squared distances from the first to all points in the neighborhood |
[in] | max_dist | the upper bound for the considered distance interval |
[in] | nr_subdiv | the number of subdivisions for the considered distance interval |
[in] | plane_radius | maximum radius, above which everything can be considered planar |
[in] | radii | the output point of a type that should have r_min and r_max fields |
[in] | compute_histogram | if not false, the full neighborhood histogram is provided, usable as a point signature |
Definition at line 149 of file rsd.hpp.
References M_PI.
|
inline |
#include <pcl/features/normal_3d.h>
Flip (in place) normal to get the same sign of the mean of the normals specified by normal_indices.
The method is described in: A. Petrelli, L. Di Stefano, "A repeatable and efficient canonical reference for surface matching", 3DimPVT, 2012 A. Petrelli, L. Di Stefano, "On the repeatability of the local reference frame for partial shape matching", 13th International Conference on Computer Vision (ICCV), 2011
Normals should be unit vectors. Otherwise the resulting mean would be weighted by the normal norms.
[in] | normal_cloud | Cloud of normals used to compute the mean |
[in] | normal_indices | Indices of normals used to compute the mean |
[in] | normal | input Normal to flip. Normal is modified by the function. |
Definition at line 204 of file normal_3d.h.
References pcl::isFinite().
|
inline |
#include <pcl/features/normal_3d.h>
Flip (in place) the estimated normal of a point towards a given viewpoint.
point | a given point |
vp_x | the X coordinate of the viewpoint |
vp_y | the X coordinate of the viewpoint |
vp_z | the X coordinate of the viewpoint |
normal | the plane normal to be flipped |
Definition at line 149 of file normal_3d.h.
|
inline |
#include <pcl/features/normal_3d.h>
Flip (in place) the estimated normal of a point towards a given viewpoint.
point | a given point |
vp_x | the X coordinate of the viewpoint |
vp_y | the X coordinate of the viewpoint |
vp_z | the X coordinate of the viewpoint |
normal | the plane normal to be flipped |
Definition at line 122 of file normal_3d.h.
Referenced by pcl::features::computeApproximateNormals(), pcl::NormalEstimation< PointInT, PointOutT >::computeFeature(), pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computePointNormal(), and pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::computePointNormalMirror().
|
inline |
#include <pcl/features/normal_3d.h>
Flip (in place) the estimated normal of a point towards a given viewpoint.
point | a given point |
vp_x | the X coordinate of the viewpoint |
vp_y | the X coordinate of the viewpoint |
vp_z | the X coordinate of the viewpoint |
nx | the resultant X component of the plane normal |
ny | the resultant Y component of the plane normal |
nz | the resultant Z component of the plane normal |
Definition at line 170 of file normal_3d.h.
void pcl::getFeaturePointCloud | ( | const std::vector< Eigen::MatrixXf, Eigen::aligned_allocator< Eigen::MatrixXf > > & | histograms2D, |
PointCloud< Histogram< N > > & | histogramsPC | ||
) |
#include <pcl/features/rsd.h>
Transform a list of 2D matrices into a point cloud containing the values in a vector (Histogram<N>).
Can be used to transform the 2D histograms obtained in RSDEstimation into a point cloud.
[in] | histograms2D | the list of neighborhood 2D histograms |
[out] | histogramsPC | the dataset containing the linearized matrices |
Definition at line 57 of file rsd.h.
References pcl::PointCloud< PointT >::begin().
|
inline |
#include <pcl/features/feature.h>
Solve the eigenvalues and eigenvectors of a given 3x3 covariance matrix, and estimate the least-squares plane normal and surface curvature.
covariance_matrix | the 3x3 covariance matrix |
point | a point lying on the least-squares plane (SSE aligned) |
plane_parameters | the resultant plane parameters as: a, b, c, d (ax + by + cz + d = 0) |
curvature | the estimated surface curvature as a measure of
|
Definition at line 52 of file feature.hpp.
Referenced by pcl::NormalEstimation< PointInT, PointOutT >::computePointNormal(), and pcl::computePointNormal().
|
inline |
#include <pcl/features/feature.h>
Solve the eigenvalues and eigenvectors of a given 3x3 covariance matrix, and estimate the least-squares plane normal and surface curvature.
covariance_matrix | the 3x3 covariance matrix |
nx | the resultant X component of the plane normal |
ny | the resultant Y component of the plane normal |
nz | the resultant Z component of the plane normal |
curvature | the estimated surface curvature as a measure of
|
Definition at line 65 of file feature.hpp.
References pcl::eigen33().