00001 #ifndef PCL_TRACKING_APPROX_NEAREST_PAIR_POINT_CLOUD_COHERENCE_H_ 00002 #define PCL_TRACKING_APPROX_NEAREST_PAIR_POINT_CLOUD_COHERENCE_H_ 00003 00004 #include <pcl/search/search.h> 00005 #include <pcl/search/octree.h> 00006 #include <pcl/tracking/nearest_pair_point_cloud_coherence.h> 00007 namespace pcl 00008 { 00009 namespace tracking 00010 { 00016 template <typename PointInT> 00017 class ApproxNearestPairPointCloudCoherence: public NearestPairPointCloudCoherence<PointInT> 00018 { 00019 public: 00020 typedef typename NearestPairPointCloudCoherence<PointInT>::PointCoherencePtr PointCoherencePtr; 00021 typedef typename NearestPairPointCloudCoherence<PointInT>::PointCloudInConstPtr PointCloudInConstPtr; 00022 //using NearestPairPointCloudCoherence<PointInT>::search_; 00023 using NearestPairPointCloudCoherence<PointInT>::maximum_distance_; 00024 using NearestPairPointCloudCoherence<PointInT>::target_input_; 00025 using NearestPairPointCloudCoherence<PointInT>::point_coherences_; 00026 using NearestPairPointCloudCoherence<PointInT>::coherence_name_; 00027 using NearestPairPointCloudCoherence<PointInT>::new_target_; 00028 using NearestPairPointCloudCoherence<PointInT>::getClassName; 00029 00031 ApproxNearestPairPointCloudCoherence () : 00032 NearestPairPointCloudCoherence<PointInT> (), search_ () 00033 { 00034 coherence_name_ = "ApproxNearestPairPointCloudCoherence"; 00035 } 00036 00037 protected: 00039 virtual bool initCompute (); 00040 00042 virtual void 00043 computeCoherence (const PointCloudInConstPtr &cloud, const IndicesConstPtr &indices, float &w_j); 00044 00045 typename boost::shared_ptr<pcl::search::Octree<PointInT> > search_; 00046 }; 00047 } 00048 } 00049 00050 #endif 00051