我有一组点云(点云数量约为200万)。我想找到每个点在点云内的k个最近邻。我做了类似于以下的操作:
flann::Index flann_index(data_m, flann::KDTreeIndexParams(),cvflann::FLANN_DIST_EUCLIDEAN);// create the object of flann
for (int i = 0; i < numberOfPointsInPointCloub; i++){
flann_index.knnSearch(data_m.row(i), indices, dists,num_of_knn); //each row is a new set of point in 3D
..//save the results "dist" and "indices" in somewhere else
}
但这运行非常缓慢。 在for循环内部,它运行了1000次,需要20秒钟,这非常缓慢。 我使用错误了吗? 或者有没有方法可以加速它?
更新: 我需要搜索的查询点恰好是用于构建树的点,我需要为树中每个点查找最近的k个邻居,因此我从数据的每一行中获取点并执行knnSearch。