В настоящее время я использую skimage в python для извлечения скелета открытого пространства из некоторой бинарной карты, как показано на следующих рисунках:
Со следующими кодами Python:
from skimage.morphology import skeletonize
from skimage import draw
from skimage.io import imread, imshow
from skimage.color import rgb2gray
# load image from file
img_fname=os.path.join('images','mall1_2F_schema.png')
image=imread(img_fname)
# Change RGB color to gray
image=rgb2gray(image)
# Change gray image to binary
image=np.where(image>np.mean(image),1.0,0.0)
# perform skeletonization
skeleton = skeletonize(image)
Теперь я хотел бы извлечь конечные точки и точки пересечения из скелета в качестве узлов для графического объекта Networkx при вычислении расстояния между соседними узлами в качестве ребер для графического объекта Networkx. В настоящее время мне приходится вручную получать координаты точек и вводить их в процесс инициализации объекта NetworkX. Есть ли у нас более разумный способ сделать все автоматически?
Кстати, я нашел ответ yaron kahanovitch на вопрос о stackoverflow предлагает аналогичные подходы. Однако предложений по реализации больше не поступало, и я думаю, что NetworkX может быть одним из подходов.
Любые предложения от вас очень ценятся.