3 #include <boost/smart_ptr/shared_ptr.hpp>
4 #include <pcl/kdtree/kdtree_flann.h>
26 pcl::KdTreeFLANN<pcl::PointXYZ> kdtree;
27 std::vector<float>
msd;
31 kdtree.setInputCloud(cloud);
33 for (
size_t i = 0; i < cloud->points.size(); ++i) {
36 std::vector<int> nnIndices;
37 std::vector<float> knnSquaredDistances;
39 knnSquaredDistances.reserve(k);
40 kdtree.nearestKSearch(cloud->at(i), k, nnIndices, knnSquaredDistances);
42 knnSquaredDistances.erase(knnSquaredDistances.begin());
49 sum = std::accumulate(knnSquaredDistances.begin(), knnSquaredDistances.end(), 0.0);
50 msd.push_back(sum / knnSquaredDistances.size());
68 float const q1 =
msd.size() / 4;
69 std::nth_element(
msd.begin(),
msd.begin() + q1,
msd.end());