organized_normal_estimation.h
Go to the documentation of this file.
00001 
00063 #ifndef __ORGANIZED_NORMAL_ESTIMATION_H__
00064 #define __ORGANIZED_NORMAL_ESTIMATION_H__
00065 
00066 #include "cob_3d_features/organized_features.h"
00067 
00068 namespace cob_3d_features
00069 {
00070   namespace OrganizedNormalEstimationHelper
00071   {
00072     template <typename PointT, typename LabelT> void
00073     computeSegmentNormal( Eigen::Vector3f& normal_out, int index,
00074                           boost::shared_ptr<const pcl::PointCloud<PointT> > surface,
00075                           boost::shared_ptr<const pcl::PointCloud<LabelT> > labels,
00076                           int r, int steps);
00077   }
00078 
00079   template <typename PointInT, typename PointOutT, typename LabelOutT>
00080     class OrganizedNormalEstimation : public OrganizedFeatures<PointInT,PointOutT>
00081   {
00082     public:
00083 
00084     using OrganizedFeatures<PointInT,PointOutT>::pixel_search_radius_;
00085     using OrganizedFeatures<PointInT,PointOutT>::pixel_steps_;
00086     using OrganizedFeatures<PointInT,PointOutT>::circle_steps_;
00087     using OrganizedFeatures<PointInT,PointOutT>::inv_width_;
00088     using OrganizedFeatures<PointInT,PointOutT>::mask_;
00089     using OrganizedFeatures<PointInT,PointOutT>::input_;
00090     using OrganizedFeatures<PointInT,PointOutT>::indices_;
00091     using OrganizedFeatures<PointInT,PointOutT>::surface_;
00092     using OrganizedFeatures<PointInT,PointOutT>::skip_distant_point_threshold_;
00093     using OrganizedFeatures<PointInT,PointOutT>::feature_name_;
00094 
00095     typedef pcl::PointCloud<PointInT> PointCloudIn;
00096     typedef typename PointCloudIn::Ptr PointCloudInPtr;
00097     typedef typename PointCloudIn::ConstPtr PointCloudInConstPtr;
00098 
00099     typedef pcl::PointCloud<PointOutT> PointCloudOut;
00100     typedef typename PointCloudOut::Ptr PointCloudOutPtr;
00101     typedef typename PointCloudOut::ConstPtr PointCloudOutConstPtr;
00102 
00103     typedef pcl::PointCloud<LabelOutT> LabelCloudOut;
00104     typedef typename LabelCloudOut::Ptr LabelCloudOutPtr;
00105     typedef typename LabelCloudOut::ConstPtr LabelCloudOutConstPtr;
00106 
00107     OrganizedNormalEstimation ()
00108     {
00109       feature_name_ = "OrganizedNormalEstimation";
00110     };
00111 
00112     inline void
00113     setOutputLabels(LabelCloudOutPtr labels) { labels_ = labels; }
00114 
00115     void
00116     computePointNormal(
00117       const PointCloudIn &cloud,
00118       int index,
00119       float &n_x,
00120       float &n_y,
00121       float &n_z,
00122       int &label_out);
00123 
00124     void
00125     recomputeSegmentNormal(PointCloudInConstPtr cloud_in,
00126                            LabelCloudOutConstPtr label_in,
00127                            int index,
00128                            float& n_x,
00129                            float& n_y,
00130                            float& n_z);
00131 
00132     protected:
00133 
00134     void
00135       computeFeature (PointCloudOut &output);
00136 
00137     LabelCloudOutPtr labels_;
00138 
00139   };
00140 }
00141 
00142 #endif


cob_3d_features
Author(s): Georg Arbeiter
autogenerated on Wed Aug 26 2015 11:02:26