46#include <pcl/features/feature.h>
71 template <
typename Po
intInT,
typename Po
intNT,
typename Po
intOutT = pcl::ShapeContext1980>
114 std::random_device
rd;
240#ifdef PCL_NO_PRECOMPILE
241#include <pcl/features/impl/3dsc.hpp>
Iterator class for point clouds with or without given indices.
PointCloudNConstPtr normals_
A pointer to the input dataset that contains the point normals of the XYZ dataset.
Feature represents the base feature class.
double search_parameter_
The actual search parameter (from either search_radius_ or k_).
const std::string & getClassName() const
Get a string representation of the name of this class.
int searchForNeighbors(std::size_t index, double parameter, pcl::Indices &indices, std::vector< float > &distances) const
Search for k-nearest neighbors using the spatial locator from setSearchmethod, and the given surface ...
double search_radius_
The nearest neighbors search radius for each point.
std::string feature_name_
The feature name.
PointCloudInConstPtr surface_
An input point cloud describing the surface that is to be used for nearest neighbors estimation.
PointCloudConstPtr input_
The input point cloud dataset.
IndicesPtr indices_
A pointer to the vector of point indices to use.
ShapeContext3DEstimation implements the 3D shape context descriptor as described in:
std::uniform_real_distribution< float > rng_dist_
Random number generator distribution.
void setMinimalRadius(double radius)
The minimal radius value for the search sphere (rmin) in the original paper.
~ShapeContext3DEstimation()
bool computePoint(std::size_t index, const pcl::PointCloud< PointNT > &normals, float rf[9], std::vector< float > &desc)
Estimate a descriptor for a given point.
std::size_t azimuth_bins_
Bins along the azimuth dimension.
std::size_t getAzimuthBins()
bool initCompute() override
Initialize computation by allocating all the intervals and the volume lookup table.
std::size_t radius_bins_
Bins along the radius dimension.
typename Feature< PointInT, PointOutT >::PointCloudIn PointCloudIn
std::vector< float > radii_interval_
Values of the radii interval.
std::size_t getElevationBins()
float rnd()
Boost-based random number generator.
std::mt19937 rng_
Random number generator algorithm.
typename Feature< PointInT, PointOutT >::PointCloudOut PointCloudOut
double getPointDensityRadius()
double min_radius_
Minimal radius value.
void computeFeature(PointCloudOut &output) override
Estimate the actual feature.
double point_density_radius_
Point density radius.
std::vector< float > volume_lut_
Volumes look up table.
std::size_t descriptor_length_
Descriptor length.
std::vector< float > theta_divisions_
Theta divisions interval.
ShapeContext3DEstimation(bool random=false)
Constructor.
std::vector< float > phi_divisions_
Phi divisions interval.
double getMinimalRadius()
std::size_t getRadiusBins()
std::size_t elevation_bins_
Bins along the elevation dimension.
void setPointDensityRadius(double radius)
This radius is used to compute local point density density = number of points within this radius.
Defines all the PCL implemented PointT point type structures.