1 #ifndef PCL_TRACKING_IMPL_NEAREST_PAIR_POINT_CLOUD_COHERENCE_H_ 2 #define PCL_TRACKING_IMPL_NEAREST_PAIR_POINT_CLOUD_COHERENCE_H_ 4 #include <pcl/search/kdtree.h> 5 #include <pcl/search/organized.h> 6 #include <pcl/tracking/nearest_pair_point_cloud_coherence.h> 10 template <
typename Po
intInT>
17 for (std::size_t i = 0; i < cloud->size(); i++) {
18 PointInT input_point = (*cloud)[i];
19 std::vector<int> k_indices(1);
20 std::vector<float> k_distances(1);
21 search_->nearestKSearch(input_point, 1, k_indices, k_distances);
22 int k_index = k_indices[0];
23 float k_distance = k_distances[0];
24 if (k_distance < maximum_distance_ * maximum_distance_) {
27 PointInT target_point = (*target_input_)[k_index];
28 double coherence_val = 1.0;
29 for (std::size_t i = 0; i < point_coherences_.size(); i++) {
31 double w = coherence->compute(input_point, target_point);
37 w = -
static_cast<float>(val);
40 template <
typename Po
intInT>
45 PCL_ERROR(
"[pcl::%s::initCompute] PointCloudCoherence::Init failed.\n",
46 getClassName().c_str());
55 if (new_target_ && target_input_) {
56 search_->setInputCloud(target_input_);
65 #define PCL_INSTANTIATE_NearestPairPointCloudCoherence(T) \ 66 template class PCL_EXPORTS pcl::tracking::NearestPairPointCloudCoherence<T>; search::KdTree is a wrapper class which inherits the pcl::KdTree class for performing search function...
void computeCoherence(const PointCloudInConstPtr &cloud, const IndicesConstPtr &indices, float &w_j) override
compute the nearest pairs and compute coherence using point_coherences_
shared_ptr< const Indices > IndicesConstPtr
typename PointCoherence< PointInT >::Ptr PointCoherencePtr
bool initCompute() override
This method should get called before starting the actual computation.
PointCloudCoherence is a base class to compute coherence between the two PointClouds.
typename PointCloudIn::ConstPtr PointCloudInConstPtr