Визуализация обратного графика

Визуализаторы графов, такие как Graphviz, могут получить формальное представление узлов и ребер графа и создать из них изображение. Какая программа или библиотека программирования может сделать обратное; то есть распознать изображение графа и создать формальное представление? Я был бы заинтересован в программном обеспечении для распознавания растрового изображения, а также в более простом случае распознавания графика из SVG, который следует стандартной структуре. В любом случае, ограничения на внешний вид графика допустимы. Кроме того, мне требуется только извлечение отношений узла и ребра, а не другие вещи, такие как текстовые метки узлов.

Ответы (2)

Это можно сделать с помощью OpenCV и некоторого пользовательского кода на C или Python (это не очень распространенное требование).

Ответы на этот вопрос отлично справляются с обсуждением того, как это сделать в C.

Для готового развернутого решения вы можете взглянуть на NEFI :введите описание изображения здесь

В Mathematica есть встроенная функция MorphologicalGraph .

Программное обеспечение для анализа изображений с открытым исходным кодом Fiji также может это сделать. Грубые шаги:

  • При необходимости сгладьте изображение
  • Порог изображения, чтобы сделать его двоичным
  • Процесс -> Двоичный -> Скелетирование
  • Analyze -> Skeleton -> Analyze Skeleton, отметьте Show Detailed Info. Когда появится таблица, сохраните ее в формате CSV.
Mathematica имеет закрытый исходный код и, следовательно, не соответствует тегу с открытым исходным кодом, но Фиджи выглядит хорошим предложением.
@Kodiologist Лучше изложить требования, чтобы избежать путаницы. Теги в первую очередь предназначены для категоризации, а не для передачи требований.