gtsam_points
Loading...
Searching...
No Matches
intensity_kdtree.hpp
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2021 Kenji Koide (k.koide@aist.go.jp)
3
4#pragma once
5
6#include <memory>
7#include <Eigen/Core>
8#include <gtsam_points/ann/nearest_neighbor_search.hpp>
9
10// forward declaration
11namespace nanoflann {
12
13template <class T, class DataSource, typename _DistanceType>
15
16template <typename Distance, class DatasetAdaptor, int DIM, typename IndexType>
18
19} // namespace nanoflann
20
21namespace gtsam_points {
22
28public:
30
38 IntensityKdTree(const Eigen::Vector4d* points, const double* intensities, int num_points, double intensity_scale = 1.0);
39 virtual ~IntensityKdTree() override;
40
41 inline size_t kdtree_get_point_count() const { return num_points; }
42 inline double kdtree_get_pt(const size_t idx, const size_t dim) const {
43 if (dim < 3) {
44 return points[idx][dim];
45 } else {
46 return intensities[idx] * intensity_scale;
47 }
48 }
49
50 template <class BBox>
51 bool kdtree_get_bbox(BBox&) const {
52 return false;
53 }
54
55 virtual size_t knn_search(
56 const double* pt,
57 size_t k,
58 size_t* k_indices,
59 double* k_sq_dists,
60 double max_sq_dist = std::numeric_limits<double>::max()) const override;
61
62public:
63 const int num_points;
64 const double* intensities;
65 const Eigen::Vector4d* points;
66 const double intensity_scale;
67
68 double search_eps;
69
70 std::unique_ptr<Index> index;
71};
72
73} // namespace gtsam_points
Definition intensity_kdtree.hpp:17
Definition intensity_kdtree.hpp:14
KdTree on intensity augmented coordinates. This class concatenates point coordinates (x,...
Definition intensity_kdtree.hpp:27
virtual size_t knn_search(const double *pt, size_t k, size_t *k_indices, double *k_sq_dists, double max_sq_dist=std::numeric_limits< double >::max()) const override
k-nearest neighbor search
IntensityKdTree(const Eigen::Vector4d *points, const double *intensities, int num_points, double intensity_scale=1.0)
Constructor.
Nearest neighbor search interface.
Definition nearest_neighbor_search.hpp:16