cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
knn.hpp File Reference

KNN算法统一导出文件 / Unified export file for KNN algorithms. More...

Include dependency graph for knn.hpp:

Go to the source code of this file.

Namespaces

namespace  toolbox
 
namespace  toolbox::pcl
 

Functions

template<typename T >
auto toolbox::pcl::create_default_knn (size_t num_points=0)
 KNN算法的选择指南 / Guide for choosing KNN algorithms.
 
template<typename KNN >
double toolbox::pcl::benchmark_knn (KNN &knn, const std::vector< typename KNN::element_type > &queries, size_t k)
 性能基准测试辅助函数 / Performance benchmark helper function
 

Detailed Description

KNN算法统一导出文件 / Unified export file for KNN algorithms.

该文件提供了所有KNN(K近邻)算法的统一接口,包括暴力搜索、KD树和并行版本。 This file provides a unified interface for all KNN (K-Nearest Neighbors) algorithms, including brute-force search, KD-tree, and parallel versions.

using namespace toolbox::pcl;
// 使用暴力搜索 / Using brute-force search
// 使用KD树(适合大规模数据) / Using KD-tree (suitable for large datasets)
// 使用并行暴力搜索 / Using parallel brute-force search
// 设置数据并搜索 / Set data and search
point_cloud_t<float> cloud = load_point_cloud();
kd_knn.set_input(cloud);
point_t<float> query = {1.0f, 2.0f, 3.0f};
std::vector<std::size_t> indices;
std::vector<float> distances;
kd_knn.kneighbors(query, 10, indices, distances);
bool kneighbors(const element_type &query, std::size_t num_neighbors, std::vector< std::size_t > &indices, std::vector< distance_type > &distances)
K近邻搜索 / K-nearest neighbors search.
Definition base_knn.hpp:179
std::size_t set_input(const container_type &data)
设置输入数据 / Set input data
Definition base_knn.hpp:83
暴力K近邻搜索算法的通用实现 / Generic brute-force K-nearest neighbors search implementation
Definition bfknn.hpp:45
Definition bfknn_parallel.hpp:14
Definition kdtree.hpp:14
KNN算法统一导出文件 / Unified export file for KNN algorithms.
Definition base_correspondence_generator.hpp:18
3D点/向量模板类 / A 3D point/vector template class
Definition point.hpp:48
// 使用自定义度量 / Using custom metrics
using namespace toolbox::metrics;
// 编译时指定度量 / Compile-time metric specification
// 运行时切换度量 / Runtime metric switching
auto knn = std::make_unique<kdtree_t<float>>();
auto metric = MetricFactory<float>::instance().create("angular");
knn->set_metric(std::move(metric));
Definition angular_metrics.hpp:15
Definition vector_metrics.hpp:53
Definition metric_factory.hpp:73
metric_ptr create(const std::string &name) const
Definition metric_factory.hpp:100
Definition angular_metrics.hpp:11