43 #include <pcl/features/feature.h>
66 template <
typename Po
intInT,
typename Po
intNT,
typename Po
intOutT,
typename Po
intRFT = pcl::ReferenceFrame>
71 using Ptr = shared_ptr<SHOTEstimationBase<PointInT, PointNT, PointOutT, PointRFT> >;
72 using ConstPtr = shared_ptr<const SHOTEstimationBase<PointInT, PointNT, PointOutT, PointRFT> >;
116 const std::vector<int> &indices,
117 const std::vector<float> &sqr_dists,
118 Eigen::VectorXf &shot) = 0;
145 const std::vector<float> &sqr_dists,
147 std::vector<double> &binDistance,
149 Eigen::VectorXf &shot);
166 std::vector<double> &bin_distance_shape);
218 template <
typename Po
intInT,
typename Po
intNT,
typename Po
intOutT = pcl::SHOT352,
typename Po
intRFT = pcl::ReferenceFrame>
222 using Ptr = shared_ptr<SHOTEstimation<PointInT, PointNT, PointOutT, PointRFT> >;
223 using ConstPtr = shared_ptr<const SHOTEstimation<PointInT, PointNT, PointOutT, PointRFT> >;
264 const std::vector<int> &indices,
265 const std::vector<float> &sqr_dists,
266 Eigen::VectorXf &shot)
override;
296 template <
typename Po
intInT,
typename Po
intNT,
typename Po
intOutT = pcl::SHOT1344,
typename Po
intRFT = pcl::ReferenceFrame>
300 using Ptr = shared_ptr<SHOTColorEstimation<PointInT, PointNT, PointOutT, PointRFT> >;
301 using ConstPtr = shared_ptr<const SHOTColorEstimation<PointInT, PointNT, PointOutT, PointRFT> >;
330 bool describe_color =
true)
350 const std::vector<int> &indices,
351 const std::vector<float> &sqr_dists,
352 Eigen::VectorXf &shot)
override;
374 const std::vector<float> &sqr_dists,
376 std::vector<double> &binDistanceShape,
377 std::vector<double> &binDistanceColor,
378 const int nr_bins_shape,
379 const int nr_bins_color,
380 Eigen::VectorXf &shot);
401 RGB2CIELAB (
unsigned char R,
unsigned char G,
unsigned char B,
float &L,
float &A,
float &B2);
408 #ifdef PCL_NO_PRECOMPILE
409 #include <pcl/features/impl/shot.hpp>
Feature represents the base feature class.
shared_ptr< Feature< PointInT, PointOutT > > Ptr
std::string feature_name_
The feature name.
shared_ptr< const Feature< PointInT, PointOutT > > ConstPtr
FeatureWithLocalReferenceFrames provides a public interface for descriptor extractor classes which ne...
SHOTColorEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a giv...
void interpolateDoubleChannel(const std::vector< int > &indices, const std::vector< float > &sqr_dists, const int index, std::vector< double > &binDistanceShape, std::vector< double > &binDistanceColor, const int nr_bins_shape, const int nr_bins_color, Eigen::VectorXf &shot)
Quadrilinear interpolation; used when color and shape descriptions are both activated.
static float sRGB_LUT[256]
bool b_describe_color_
Compute color descriptor.
SHOTColorEstimation(bool describe_shape=true, bool describe_color=true)
Empty constructor.
void computeFeature(pcl::PointCloud< PointOutT > &output) override
Estimate the Signatures of Histograms of OrienTations (SHOT) descriptors at a set of points given by ...
bool b_describe_shape_
Compute shape descriptor.
~SHOTColorEstimation()
Empty destructor.
int nr_color_bins_
The number of bins in each color histogram.
static void RGB2CIELAB(unsigned char R, unsigned char G, unsigned char B, float &L, float &A, float &B2)
Converts RGB triplets to CIELab space.
static float sXYZ_LUT[4000]
void computePointSHOT(const int index, const std::vector< int > &indices, const std::vector< float > &sqr_dists, Eigen::VectorXf &shot) override
Estimate the SHOT descriptor for a given point based on its spatial neighborhood of 3D points with no...
SHOTEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given po...
double radius1_2_
1/2 of the search radius.
Eigen::VectorXf shot_
Placeholder for a point's SHOT.
virtual float getLRFRadius() const
Get the radius used for local reference frame estimation.
const int maxAngularSectors_
...
virtual void computePointSHOT(const int index, const std::vector< int > &indices, const std::vector< float > &sqr_dists, Eigen::VectorXf &shot)=0
Estimate the SHOT descriptor for a given point based on its spatial neighborhood of 3D points with no...
bool initCompute() override
This method should get called before starting the actual computation.
const int nr_grid_sector_
Number of azimuthal sectors.
void normalizeHistogram(Eigen::VectorXf &shot, int desc_length)
Normalize the SHOT histogram.
double radius3_4_
3/4 of the search radius.
~SHOTEstimationBase()
Empty destructor.
void interpolateSingleChannel(const std::vector< int > &indices, const std::vector< float > &sqr_dists, const int index, std::vector< double > &binDistance, const int nr_bins, Eigen::VectorXf &shot)
Quadrilinear interpolation used when color and shape descriptions are NOT activated simultaneously.
int descLength_
One SHOT length.
double sqradius_
The squared search radius.
float lrf_radius_
The radius used for the LRF computation.
virtual void setLRFRadius(float radius)
Set the radius used for local reference frame estimation if the frames are not set by the user.
int nr_shape_bins_
The number of bins in each shape histogram.
SHOTEstimationBase(int nr_shape_bins=10)
Empty constructor.
void createBinDistanceShape(int index, const std::vector< int > &indices, std::vector< double > &bin_distance_shape)
Create a binned distance shape histogram.
double radius1_4_
1/4 of the search radius.
SHOTEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given po...
~SHOTEstimation()
Empty destructor.
void computePointSHOT(const int index, const std::vector< int > &indices, const std::vector< float > &sqr_dists, Eigen::VectorXf &shot) override
Estimate the SHOT descriptor for a given point based on its spatial neighborhood of 3D points with no...
SHOTEstimation()
Empty constructor.
void computeFeature(pcl::PointCloud< PointOutT > &output) override
Estimate the Signatures of Histograms of OrienTations (SHOT) descriptors at a set of points given by ...
Defines all the PCL implemented PointT point type structures.