Point Cloud Library (PCL)  1.7.0
/tmp/buildd/pcl-1.7-1.7.0/tracking/include/pcl/tracking/approx_nearest_pair_point_cloud_coherence.h
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   {
00011     /** \brief @b ApproxNearestPairPointCloudCoherence computes coherence between two pointclouds using the
00012          approximate nearest point pairs.
00013       * \author Ryohei Ueda
00014       * \ingroup tracking
00015       */
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       
00030       /** \brief empty constructor */
00031       ApproxNearestPairPointCloudCoherence () : 
00032         NearestPairPointCloudCoherence<PointInT> (), search_ ()
00033       {
00034         coherence_name_ = "ApproxNearestPairPointCloudCoherence";
00035       }
00036       
00037     protected:
00038       /** \brief This method should get called before starting the actual computation. */
00039       virtual bool initCompute ();
00040       
00041       /** \brief compute the nearest pairs and compute coherence using point_coherences_ */
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 #ifdef PCL_NO_PRECOMPILE
00051 #include <pcl/tracking/impl/approx_nearest_pair_point_cloud_coherence.hpp>
00052 #endif
00053 
00054 #endif
00055