34template <
typename T, std::
size_t N>
41 std::vector<Point<T, N>> result;
42 result.reserve(points.size());
43 result.push_back(points.front());
45 for (std::size_t i = 1; i < points.size(); ++i)
47 const auto &p = points[i];
53 std::array<T, N> query;
54 for (std::size_t d = 0; d < N; ++d)
57 std::vector<nanoflann::ResultItem<unsigned int, T>> matches;
58 nanoflann::SearchParameters params;
59 const T radius = min_dist * min_dist;
61 const size_t found = index.radiusSearch(query.data(), radius, matches, params);
100template <
typename T, std::
size_t N,
typename ScaleFn>
109 std::vector<Point<T, N>> result;
110 result.reserve(points.size());
111 result.push_back(points.front());
113 for (std::size_t i = 1; i < points.size(); ++i)
115 const auto &p = points[i];
116 const T local_min_dist = base_min_dist * scale_fn(p);
122 std::array<T, N> query;
123 for (std::size_t d = 0; d < N; ++d)
126 std::vector<nanoflann::ResultItem<unsigned int, T>> matches;
127 nanoflann::SearchParameters params;
128 const T radius = local_min_dist * local_min_dist;
130 const size_t found = index.radiusSearch(query.data(), radius, matches, params);
Definition dbscan_clustering.hpp:11
nanoflann::KDTreeSingleIndexAdaptor< nanoflann::L2_Simple_Adaptor< T, PointCloudAdaptor< T, N > >, PointCloudAdaptor< T, N >, N > KDTree
Definition nanoflann_adaptator.hpp:35
std::vector< Point< T, N > > distance_rejection_filter(const std::vector< Point< T, N > > &points, T min_dist)
Filters a set of points using a greedy distance-based rejection.
Definition distance_rejection_filter.hpp:35
std::vector< Point< T, N > > distance_rejection_filter_warped(const std::vector< Point< T, N > > &points, T base_min_dist, ScaleFn scale_fn)
Filters points based on spatially-varying minimal distance constraints.
Definition distance_rejection_filter.hpp:101
Definition nanoflann_adaptator.hpp:13
A fixed-size N-dimensional point/vector class.
Definition point.hpp:39