cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
KNN算法 / KNN Algorithms

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

Function Documentation

◆ benchmark_knn()

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

Template Parameters
KNNKNN算法类型 / KNN algorithm type
Parameters
knnKNN搜索器 / KNN searcher
queries查询点集合 / Query points collection
k近邻数量 / Number of neighbors
Returns
平均搜索时间(毫秒) / Average search time (milliseconds)
// 比较不同算法的性能 / Compare performance of different algorithms
bf_knn.set_input(cloud);
kd_knn.set_input(cloud);
double bf_time = benchmark_knn(bf_knn, queries, 10);
double kd_time = benchmark_knn(kd_knn, queries, 10);
std::cout << "暴力搜索时间 / Brute-force time: " << bf_time << " ms\n";
std::cout << "KD树搜索时间 / KD-tree time: " << kd_time << " ms\n";
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 kdtree.hpp:14
double benchmark_knn(KNN &knn, const std::vector< typename KNN::element_type > &queries, size_t k)
性能基准测试辅助函数 / Performance benchmark helper function
Definition knn.hpp:137

◆ create_default_knn()

template<typename T >
auto toolbox::pcl::create_default_knn ( size_t  num_points = 0)
inline

KNN算法的选择指南 / Guide for choosing KNN algorithms.

  • bfknn_t: 适用于小规模数据集(<1000点)或需要精确结果的场景 / Suitable for small datasets (<1000 points) or scenarios requiring exact results
  • kdtree_t: 适用于大规模数据集(>1000点)且使用L2度量的场景 / Suitable for large datasets (>1000 points) with L2 metric
  • bfknn_parallel_t: 适用于中等规模数据集需要加速的场景 / Suitable for medium-sized datasets requiring acceleration
// 根据数据规模选择算法 / Choose algorithm based on data size
template<typename T>
std::unique_ptr<base_knn_generic_t<?, point_t<T>, L2Metric<T>>>
create_knn(size_t num_points) {
if (num_points < 1000) {
return std::make_unique<bfknn_t<T>>();
} else if (num_points < 10000) {
return std::make_unique<bfknn_parallel_t<T>>();
} else {
return std::make_unique<kdtree_t<T>>();
}
}

创建默认的KNN搜索器(根据数据规模自动选择) / Create default KNN searcher (auto-select based on data size)

Template Parameters
T数据类型 / Data type
Parameters
num_points预期的数据点数量 / Expected number of data points
Returns
KNN搜索器的智能指针 / Smart pointer to KNN searcher
auto knn = create_default_knn<float>(cloud.size());
knn->set_input(cloud);