Нахождение дыр в 2d облаке точек - PullRequest
0 голосов
/ 17 мая 2018

У меня есть набор 2d очков.Это координаты X, Y в стандартной декартовой сеточной системе.Кто-нибудь знает способ реализации (предпочтительно в Python) алгоритма, который изолирует каждую «область отверстия», чтобы найти наибольший диаметр для каждого отверстия.

Ниже приведен пример фактических наборов точек:

enter image description here

ОБНОВЛЕНИЕ:

Мне удалось выделить каждую область с фиксированным числом кластеров, но как я могу определитьколичество кластеров по количеству «площадей дыр»?

from sklearn.cluster import KMeans
import numpy as np
import  ipyvolume.pylab as p

dat     = xyz
xycoors = dat[:,0:2]


fit = KMeans(n_clusters=5).fit(xycoors)
clus_datas={i: xycoors[np.where(fit.labels_ == i)] for i in 
range(fit.n_clusters)}

clus_1=clus_datas[0]
clus_2=clus_datas[1]
clus_3=clus_datas[2]
clus_4=clus_datas[3]
clus_5=clus_datas[4]



min_bloc=np.array(nuage)
fig = p.figure(width=1000)
fig.xlabel='x'
fig.ylabel='z'
fig.zlabel='y'

p.scatter(clus_1[:,1], clus_1[:,1]*0, clus_1[:,0], color="black", size=.1)     
p.scatter(clus_2[:,1], clus_2[:,1]*0, clus_2[:,0], color="red",  size=.1) 
p.scatter(clus_3[:,1], clus_3[:,1]*0, clus_3[:,0], color="green",  size=.1) 
p.scatter(clus_4[:,1], clus_1[:,1]*0, clus_4[:,0], color="bleu",  size=.1)     
p.scatter(clus_5[:,1], clus_2[:,1]*0, clus_5[:,0], color="red", size=.1) 

p.squarelim()
p.show()

Результаты: enter image description here

1 Ответ

0 голосов
/ 25 мая 2018

Решено Плотность на основе пространственной кластеризации приложений с шумом (DBSCAN) Определите каждое отверстие в соответствии с расчетным количеством кластеров, диаметр можно рассчитать с помощью Выпуклая оболочка

...