高效的最近邻搜索特定任务?

Posted

技术标签:

【中文标题】高效的最近邻搜索特定任务?【英文标题】:Efficient nearest neighbor search for a specific task? 【发布时间】:2013-07-22 08:26:01 【问题描述】:

我正在寻找 3D 中最近邻搜索的实现。

我目前正在使用 scipy.spatial。问题是我需要经常更新树/索引,而且似乎使用这种实现,每次我需要更新树时都会重新构建树,导致执行时间很长。

我正在尝试解决的任务如下:对于一大组 3D 点,将彼此过于接近(比指定间隙值更接近)的点联合起来。

我目前通过遍历点列表来解决这个问题,如果它没有任何太近的邻居,则将一个新点添加到索引中,如果找到一个邻居的坐标,则将其分配给该点。

如果有任何其他快速的替代方法可以解决这个问题,我将不胜感激。

【问题讨论】:

【参考方案1】:

对于快速最近邻搜索,我可以推荐 flann (http://www.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN)。对于点云,我会尝试 PCL (http://pointclouds.org/)。两者都有 python 绑定。

例如,一个想法是使用 PCL 对点进行聚类并联合聚类。 (segmentation.html">http://docs.pointclouds.org/trunk/group_segmentation.html)

【讨论】:

会调查的,谢谢。不过,我正在考虑实施某种八叉树。

以上是关于高效的最近邻搜索特定任务?的主要内容,如果未能解决你的问题,请参考以下文章

稀疏矩阵的高效最近邻搜索

数组索引的kdtree建立及简明快速的k近邻搜索方法

使用树来加速具有周期性边界条件的 3D 阵列上的最近邻搜索

使用 OpenCL 内核的最近邻插值代码

JavaScript 的最近邻库

如何在 Matlab 中进行高效的 k 最近邻计算