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_FPFH_OMP_H_
00039 #define PCL_FPFH_OMP_H_
00040
00041 #include <pcl/features/feature.h>
00042 #include <pcl/features/fpfh.h>
00043
00044 namespace pcl
00045 {
00047
00066 template <typename PointInT, typename PointNT, typename PointOutT>
00067 class FPFHEstimationOMP : public FPFHEstimation<PointInT, PointNT, PointOutT>
00068 {
00069 public:
00070 using Feature<PointInT, PointOutT>::feature_name_;
00071 using Feature<PointInT, PointOutT>::getClassName;
00072 using Feature<PointInT, PointOutT>::indices_;
00073 using Feature<PointInT, PointOutT>::k_;
00074 using Feature<PointInT, PointOutT>::search_parameter_;
00075 using Feature<PointInT, PointOutT>::surface_;
00076 using FeatureFromNormals<PointInT, PointNT, PointOutT>::normals_;
00077 using FPFHEstimation<PointInT, PointNT, PointOutT>::hist_f1_;
00078 using FPFHEstimation<PointInT, PointNT, PointOutT>::hist_f2_;
00079 using FPFHEstimation<PointInT, PointNT, PointOutT>::hist_f3_;
00080 using FPFHEstimation<PointInT, PointNT, PointOutT>::weightPointSPFHSignature;
00081
00082 typedef typename Feature<PointInT, PointOutT>::PointCloudOut PointCloudOut;
00083
00085 FPFHEstimationOMP () : nr_bins_f1_ (11), nr_bins_f2_ (11), nr_bins_f3_ (11), threads_ (-1)
00086 {
00087 feature_name_ = "FPFHEstimationOMP";
00088 };
00089
00093 FPFHEstimationOMP (int nr_threads) : nr_bins_f1_ (11), nr_bins_f2_ (11), nr_bins_f3_ (11)
00094 {
00095 setNumberOfThreads (nr_threads);
00096 }
00097
00101 inline void setNumberOfThreads (int nr_threads) { threads_ = nr_threads; }
00102
00103 private:
00104
00110 void computeFeature (PointCloudOut &output);
00111
00112 public:
00114 int nr_bins_f1_, nr_bins_f2_, nr_bins_f3_;
00115 private:
00117 int threads_;
00118 };
00119 }
00120
00121 #endif //#ifndef PCL_FPFH_OMP_H_
00122
00123