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_PFHRGB_H_
00039 #define PCL_PFHRGB_H_
00040
00041 #include <pcl/features/feature.h>
00042
00043 namespace pcl
00044 {
00045 PCL_EXPORTS bool
00046 computeRGBPairFeatures (const Eigen::Vector4f &p1, const Eigen::Vector4f &n1, const Eigen::Vector4i &colors1,
00047 const Eigen::Vector4f &p2, const Eigen::Vector4f &n2, const Eigen::Vector4i &colors2,
00048 float &f1, float &f2, float &f3, float &f4, float &f5, float &f6, float &f7);
00049
00050
00051 template <typename PointInT, typename PointNT, typename PointOutT = pcl::PFHRGBSignature250>
00052 class PFHRGBEstimation : public FeatureFromNormals<PointInT, PointNT, PointOutT>
00053 {
00054 public:
00055 using PCLBase<PointInT>::indices_;
00056 using Feature<PointInT, PointOutT>::feature_name_;
00057 using Feature<PointInT, PointOutT>::surface_;
00058 using Feature<PointInT, PointOutT>::k_;
00059 using Feature<PointInT, PointOutT>::search_parameter_;
00060 using FeatureFromNormals<PointInT, PointNT, PointOutT>::normals_;
00061 typedef typename Feature<PointInT, PointOutT>::PointCloudOut PointCloudOut;
00062
00063
00064 PFHRGBEstimation ()
00065 : nr_subdiv_ (5), pfhrgb_histogram_ (), pfhrgb_tuple_ (), d_pi_ (1.0f / (2.0f * static_cast<float> (M_PI)))
00066 {
00067 feature_name_ = "PFHRGBEstimation";
00068 }
00069
00070 bool
00071 computeRGBPairFeatures (const pcl::PointCloud<PointInT> &cloud, const pcl::PointCloud<PointNT> &normals,
00072 int p_idx, int q_idx,
00073 float &f1, float &f2, float &f3, float &f4, float &f5, float &f6, float &f7);
00074
00075 void
00076 computePointPFHRGBSignature (const pcl::PointCloud<PointInT> &cloud, const pcl::PointCloud<PointNT> &normals,
00077 const std::vector<int> &indices, int nr_split, Eigen::VectorXf &pfhrgb_histogram);
00078
00079 protected:
00080 void
00081 computeFeature (PointCloudOut &output);
00082
00083 private:
00085 int nr_subdiv_;
00086
00088 Eigen::VectorXf pfhrgb_histogram_;
00089
00091 Eigen::VectorXf pfhrgb_tuple_;
00092
00094 int f_index_[7];
00095
00097 float d_pi_;
00098
00102 void
00103 computeFeatureEigen (pcl::PointCloud<Eigen::MatrixXf> &) {}
00104 };
00105 }
00106
00107 #endif