Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
NanoFlannImpl.h File Reference
#include <tbb/parallel_for.h>
#include <algorithm>
#include <mutex>
#include <nanoflann.hpp>
#include "open3d/core/Atomic.h"
#include "open3d/core/nns/NeighborSearchCommon.h"
#include "open3d/utility/Helper.h"
#include "open3d/utility/ParallelScan.h"

Go to the source code of this file.

Data Structures

struct  open3d::core::nns::NanoFlannIndexHolder< METRIC, TReal, TIndex >
 NanoFlann Index Holder. More...
struct  open3d::core::nns::NanoFlannIndexHolder< METRIC, TReal, TIndex >::DataAdaptor
 This class is the Adaptor for connecting Open3D Tensor and NanoFlann. More...
struct  open3d::core::nns::NanoFlannIndexHolder< METRIC, TReal, TIndex >::SelectNanoflannAdaptor< M, fake >
 Adaptor Selector. More...
struct  open3d::core::nns::NanoFlannIndexHolder< METRIC, TReal, TIndex >::SelectNanoflannAdaptor< L2, fake >
struct  open3d::core::nns::NanoFlannIndexHolder< METRIC, TReal, TIndex >::SelectNanoflannAdaptor< L1, fake >

Namespaces

namespace  open3d
namespace  open3d::core
namespace  open3d::core::nns
namespace  open3d::core::nns::impl

Macros

#define FN_PARAMETERS   num_points, points, dimension, &holder
#define CALL_TEMPLATE(METRIC)
#define CALL_TEMPLATE2
#define FN_PARAMETERS
#define CALL_TEMPLATE(METRIC)
#define CALL_TEMPLATE2
#define FN_PARAMETERS
#define CALL_TEMPLATE(METRIC)
#define CALL_TEMPLATE2
#define FN_PARAMETERS
#define CALL_TEMPLATE(METRIC)
#define CALL_TEMPLATE2

Functions

template<class T, class TIndex>
std::unique_ptr< NanoFlannIndexHolderBaseopen3d::core::nns::impl::BuildKdTree (size_t num_points, const T *const points, size_t dimension, const Metric metric)
template<class T, class TIndex, class OUTPUT_ALLOCATOR>
void open3d::core::nns::impl::KnnSearchCPU (NanoFlannIndexHolderBase *holder, int64_t *query_neighbors_row_splits, size_t num_points, const T *const points, size_t num_queries, const T *const queries, const size_t dimension, int knn, const Metric metric, bool ignore_query_point, bool return_distances, OUTPUT_ALLOCATOR &output_allocator)
template<class T, class TIndex, class OUTPUT_ALLOCATOR>
void open3d::core::nns::impl::RadiusSearchCPU (NanoFlannIndexHolderBase *holder, int64_t *query_neighbors_row_splits, size_t num_points, const T *const points, size_t num_queries, const T *const queries, const size_t dimension, const T *const radii, const Metric metric, bool ignore_query_point, bool return_distances, bool normalize_distances, bool sort, OUTPUT_ALLOCATOR &output_allocator)
template<class T, class TIndex, class OUTPUT_ALLOCATOR>
void open3d::core::nns::impl::HybridSearchCPU (NanoFlannIndexHolderBase *holder, size_t num_points, const T *const points, size_t num_queries, const T *const queries, const size_t dimension, const T radius, const int max_knn, const Metric metric, bool ignore_query_point, bool return_distances, OUTPUT_ALLOCATOR &output_allocator)

Macro Definition Documentation

◆ CALL_TEMPLATE [1/4]

#define CALL_TEMPLATE ( METRIC)
Value:
if (METRIC == metric) { \
_HybridSearchCPU<T, TIndex, OUTPUT_ALLOCATOR, METRIC>(FN_PARAMETERS); \
}
#define FN_PARAMETERS

◆ CALL_TEMPLATE [2/4]

#define CALL_TEMPLATE ( METRIC)
Value:
if (METRIC == metric) { \
_RadiusSearchCPU<T, TIndex, OUTPUT_ALLOCATOR, METRIC>(FN_PARAMETERS); \
}

◆ CALL_TEMPLATE [3/4]

#define CALL_TEMPLATE ( METRIC)
Value:
if (METRIC == metric) { \
_KnnSearchCPU<T, TIndex, OUTPUT_ALLOCATOR, METRIC>(FN_PARAMETERS); \
}

◆ CALL_TEMPLATE [4/4]

#define CALL_TEMPLATE ( METRIC)
Value:
if (METRIC == metric) { \
_BuildKdTree<T, TIndex, METRIC>(FN_PARAMETERS); \
}

◆ CALL_TEMPLATE2 [1/4]

#define CALL_TEMPLATE2
Value:
CALL_TEMPLATE(L2)
#define CALL_TEMPLATE(METRIC, IGNORE_QUERY_POINT, RETURN_DISTANCES)

◆ CALL_TEMPLATE2 [2/4]

#define CALL_TEMPLATE2
Value:
CALL_TEMPLATE(L2)

◆ CALL_TEMPLATE2 [3/4]

#define CALL_TEMPLATE2
Value:
CALL_TEMPLATE(L2)

◆ CALL_TEMPLATE2 [4/4]

#define CALL_TEMPLATE2
Value:
CALL_TEMPLATE(L2)

◆ FN_PARAMETERS [1/4]

#define FN_PARAMETERS
Value:
holder, num_points, points, num_queries, queries, dimension, radius, \
max_knn, ignore_query_point, return_distances, output_allocator

◆ FN_PARAMETERS [2/4]

#define FN_PARAMETERS
Value:
holder, query_neighbors_row_splits, num_points, points, num_queries, \
queries, dimension, radii, ignore_query_point, return_distances, \
normalize_distances, sort, output_allocator

◆ FN_PARAMETERS [3/4]

#define FN_PARAMETERS
Value:
holder, query_neighbors_row_splits, num_points, points, num_queries, \
queries, dimension, knn, ignore_query_point, return_distances, \
output_allocator

◆ FN_PARAMETERS [4/4]

#define FN_PARAMETERS   num_points, points, dimension, &holder