Open3D (C++ API)  0.18.0
Data Structures | Namespaces | Macros | Functions
NanoFlannImpl.h File Reference

(b9e049c (Sun Dec 31 11:36:26 2023 -0800))

#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

 open3d
 
 open3d::core
 
 open3d::core::nns
 
 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< NanoFlannIndexHolderBase > open3d::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) { \
_BuildKdTree<T, TIndex, METRIC>(FN_PARAMETERS); \
}
#define FN_PARAMETERS

◆ CALL_TEMPLATE [2/4]

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

◆ CALL_TEMPLATE [3/4]

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

◆ CALL_TEMPLATE [4/4]

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

◆ CALL_TEMPLATE2 [1/4]

#define CALL_TEMPLATE2
Value:
CALL_TEMPLATE(L2)
#define CALL_TEMPLATE(METRIC)
@ L1
Definition: NeighborSearchCommon.h:19
@ L2
Definition: NeighborSearchCommon.h:19

◆ 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   num_points, points, dimension, &holder

◆ FN_PARAMETERS [2/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
int points
Definition: FilePCD.cpp:54

◆ FN_PARAMETERS [3/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 [4/4]

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