我正在尝试在大型 3D 点数据集中找到确切数量的相邻节点。目标是让数据集的每个点检索具有给定半径的区域中的所有可能邻居。FLANN 确保对于低维数据可以检索确切的邻居,而与蛮力搜索相比,情况似乎并非如此。邻居对于进一步计算至关重要,因此我需要确切的数字。我测试了一点点增加半径,但似乎不是这个问题。有谁知道如何用 FLANN 或其他 C++ 库计算确切的邻居?
编码:
// All nodes to be tested for inclusion in support domain.
flann::Matrix<double> query_nodes = flann::Matrix<double>(&nodes_pos[0].x, nodes_pos.size(), 3);
// Set default search parameters
flann::SearchParams search_parameters = flann::SearchParams();
search_parameters.checks = -1;
search_parameters.sorted = false;
search_parameters.use_heap = flann::FLANN_True;
flann::KDTreeSingleIndexParams index_parameters = flann::KDTreeSingleIndexParams();
flann::KDTreeSingleIndex<flann::L2_3D<double> > index(query_nodes, index_parameters);
index.buildIndex();
//FLANN uses L2 for radius search.
double l2_radius = (this->support_layer_*grid.spacing)*(this->support_layer_*grid.spacing);
double extension = l2_radius/10.;
l2_radius+= extension;
index.radiusSearch(query_nodes, indices, dists, l2_radius, search_parameters);