Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef PCL_NORMAL_BASED_SIGNATURE_H_
00039 #define PCL_NORMAL_BASED_SIGNATURE_H_
00040
00041 #include <pcl/features/feature.h>
00042
00043 namespace pcl
00044 {
00058 template <typename PointT, typename PointNT, typename PointFeature>
00059 class NormalBasedSignatureEstimation : public FeatureFromNormals<PointT, PointNT, PointFeature>
00060 {
00061 public:
00062 using Feature<PointT, PointFeature>::input_;
00063 using Feature<PointT, PointFeature>::tree_;
00064 using Feature<PointT, PointFeature>::search_radius_;
00065 using PCLBase<PointT>::indices_;
00066 using FeatureFromNormals<PointT, PointNT, PointFeature>::normals_;
00067
00068 typedef pcl::PointCloud<PointFeature> FeatureCloud;
00069 typedef typename boost::shared_ptr<NormalBasedSignatureEstimation<PointT, PointNT, PointFeature> > Ptr;
00070 typedef typename boost::shared_ptr<const NormalBasedSignatureEstimation<PointT, PointNT, PointFeature> > ConstPtr;
00071
00072
00073
00076 NormalBasedSignatureEstimation ()
00077 : FeatureFromNormals<PointT, PointNT, PointFeature> (),
00078 scale_h_ (),
00079 N_ (36),
00080 M_ (8),
00081 N_prime_ (4),
00082 M_prime_ (3)
00083 {
00084 }
00085
00089 inline void
00090 setN (size_t n) { N_ = n; }
00091
00093 inline size_t
00094 getN () { return N_; }
00095
00099 inline void
00100 setM (size_t m) { M_ = m; }
00101
00103 inline size_t
00104 getM () { return M_; }
00105
00111 inline void
00112 setNPrime (size_t n_prime) { N_prime_ = n_prime; }
00113
00118 inline size_t
00119 getNPrime () { return N_prime_; }
00120
00126 inline void
00127 setMPrime (size_t m_prime) { M_prime_ = m_prime; }
00128
00133 inline size_t
00134 getMPrime () { return M_prime_; }
00135
00139 inline void
00140 setScale (float scale) { scale_h_ = scale; }
00141
00145 inline float
00146 getScale () { return scale_h_; }
00147
00148
00149 protected:
00150 void
00151 computeFeature (FeatureCloud &output);
00152
00153 private:
00154 float scale_h_;
00155 size_t N_, M_, N_prime_, M_prime_;
00156
00160 void
00161 computeFeatureEigen (pcl::PointCloud<Eigen::MatrixXf> &) {}
00162 };
00163 }
00164
00165 #endif