Umgekehrte Graph-Visualisierung

Graphvisualisierer wie Graphviz können eine formale Darstellung der Knoten und Kanten eines Graphen nehmen und daraus ein Bild erzeugen. Was ist ein Programm oder eine Programmierbibliothek, die das Gegenteil tun kann? das heißt, ein Bild eines Graphen erkennen und eine formale Darstellung erzeugen? Ich würde mich für eine Software zum Erkennen einer Bitmap interessieren sowie für den einfacheren Fall, einen Graphen aus einem SVG zu erkennen, der einer Standardstruktur folgt. In jedem Fall sind Einschränkungen für das Erscheinungsbild des Diagramms in Ordnung. Außerdem benötige ich nur die Extraktion von Knoten-und-Kanten-Beziehungen, nicht andere Dinge wie Textbeschriftungen von Knoten.

Antworten (2)

Dies kann mit OpenCV und benutzerdefiniertem Code in C oder Python erfolgen (dies ist keine sehr häufige Anforderung).

Die Antworten auf diese Frage leisten hervorragende Arbeit, um zu diskutieren, wie dies in C zu tun ist.

Für eine fertig gerollte Lösung möchten Sie vielleicht einen Blick auf NEFI werfen :Geben Sie hier die Bildbeschreibung ein

Mathematica hat eine eingebaute Funktion namens MorphologicalGraph .

Das kann auch die Open-Source-Bildanalysesoftware Fiji . Die groben Schritte sind:

  • Glätten Sie das Bild bei Bedarf
  • Schwellwert für das Bild, um es binär zu machen
  • Verarbeiten -> Binär -> Skelettieren
  • Analysieren -> Skelett -> Skelett analysieren, aktivieren Sie Detaillierte Informationen anzeigen. Wenn eine Tabelle angezeigt wird, speichern Sie sie als CSV.
Mathematica ist Closed-Source und passt daher nicht zum Open-Source-Tag, aber Fidschi scheint ein guter Vorschlag zu sein.
@Kodiologist Es ist besser, die Anforderungen zu buchstabieren, um Verwirrung zu vermeiden. Tags dienen in erster Linie der Kategorisierung, nicht der Kommunikation von Anforderungen.