Эффективный поиск ближайшего соседа для конкретной задачи?

Ищу реализацию поиска ближайшего соседа в 3D.

В настоящее время я использую scipy.spatial. Проблема в том, что мне нужно очень часто обновлять дерево/индекс, и кажется, что с этой реализацией дерево перестраивается каждый раз, когда мне нужно его обновить, что приводит к очень длительному времени выполнения.

Задача, которую я пытаюсь решить, заключается в следующем: для большого набора 3D-точек объединить точки, находящиеся слишком близко друг к другу (ближе заданного значения зазора).

В настоящее время я решаю эту проблему, перебирая список точек, добавляя новую точку в индекс, если у нее нет слишком близких соседей, и присваивая точке координаты соседа, если он найден.

Я был бы признателен за любые другие быстрые альтернативы для решения этой проблемы.


person Alex Bausk    schedule 23.07.2013    source источник


Ответы (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)

person urbste    schedule 23.07.2013
comment
Посмотрю, спасибо. Я думаю о реализации своего рода Octree. - person Alex Bausk; 17.09.2013