42 #include <pcl/point_types.h>
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>
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...
virtual float getLRFRadius() const
Get the radius used for local reference frame estimation.
double sqradius_
The squared search radius.
SHOTColorEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a giv...
static float sXYZ_LUT[4000]
SHOTEstimation()
Empty constructor.
bool initCompute() override
This method should get called before starting the actual computation.
std::string feature_name_
The feature name.
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...
static void RGB2CIELAB(unsigned char R, unsigned char G, unsigned char B, float &L, float &A, float &B2)
Converts RGB triplets to CIELab space.
double radius1_2_
1/2 of the search radius.
virtual void setLRFRadius(float radius)
Set the radius used for local reference frame estimation if the frames are not set by the user...
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...
float lrf_radius_
The radius used for the LRF computation.
shared_ptr< const Feature< PointInT, PointOutT > > ConstPtr
int descLength_
One SHOT length.
SHOTColorEstimation(bool describe_shape=true, bool describe_color=true)
Empty constructor.
const int maxAngularSectors_
...
SHOTEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given po...
void computeFeature(pcl::PointCloud< PointOutT > &output) override
Estimate the Signatures of Histograms of OrienTations (SHOT) descriptors at a set of points given by ...
const int nr_grid_sector_
Number of azimuthal sectors.
int nr_color_bins_
The number of bins in each color histogram.
int nr_shape_bins_
The number of bins in each shape histogram.
Eigen::VectorXf shot_
Placeholder for a point's SHOT.
void createBinDistanceShape(int index, const std::vector< int > &indices, std::vector< double > &bin_distance_shape)
Create a binned distance shape histogram.
static float sRGB_LUT[256]
void normalizeHistogram(Eigen::VectorXf &shot, int desc_length)
Normalize the SHOT histogram.
double radius1_4_
1/4 of the search radius.
SHOTEstimation estimates the Signature of Histograms of OrienTations (SHOT) descriptor for a given po...
void computeFeature(pcl::PointCloud< PointOutT > &output) override
Estimate the Signatures of Histograms of OrienTations (SHOT) descriptors at a set of points given by ...
double radius3_4_
3/4 of the search radius.
Feature represents the base feature class.
bool b_describe_color_
Compute color descriptor.
FeatureWithLocalReferenceFrames provides a public interface for descriptor extractor classes which ne...
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...
~SHOTEstimationBase()
Empty destructor.
SHOTEstimationBase(int nr_shape_bins=10)
Empty constructor.
~SHOTColorEstimation()
Empty destructor.
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.
shared_ptr< Feature< PointInT, PointOutT > > Ptr
~SHOTEstimation()
Empty destructor.
bool b_describe_shape_
Compute shape descriptor.