Vom Bild zu Daten
Einleitung
Was tun Sie, wenn Sie nur ein Bild eines Diagramms haben, aber die Daten hinter dem Diagramm benötigen? Wenn Sie sich dazu entschließen, es manuell und Punkt für Punkt durchzuführen, kann dies ein mühsamer Prozess sein. Mit JMP können Sie jedoch Daten aus einem Bild in eine Datentabelle ziehen, und das dauert nur wenige Schritte.

Schritt 1: Importieren Sie das Bild
Der erste Schritt besteht darin, das gesamte Bild als Informationen in eine JMP-Tabelle zu übertragen. Dies kann zwar über Skripte erfolgen, aber auch mit dem hervorragenden Image to Table Add-In . Ich verwende als Beispiel ein Bild der Bevölkerung in Reykjavik , aber jedes Bild eines Liniendiagramms sollte funktionieren.
Nachdem ich das Add-In heruntergeladen und installiert habe, kann ich über „Add-Ins > Bildanalysator“ das Bild auswählen und als Datentabelle importieren. Die Datentabelle enthält die RGB-Daten (sowie einige andere Informationen) für jedes Pixel im Bild.

Schritt 2: Waage reparieren
Sobald die Tabelle geöffnet ist, ist es ganz einfach, mit dem Graph Builder eine Schwarzweißversion des Bildes zu erstellen. Im Bild unten habe ich die I-Spalte (Intensität) als Farbspalte verwendet und die Y-Skala umgekehrt, damit sie der Art und Weise entspricht, wie Bilder gespeichert werden.

Jetzt fällt mir sofort ein Problem auf: Der Maßstab im Diagramm stimmt nicht mit dem Maßstab in JMP überein. Das lässt sich ganz einfach beheben. Dazu müssen einige integrierte Funktionen in JMP sowie eine Zwischendatentabelle verwendet werden.
- Erstellen Sie eine leere Datentabelle mit vier Spalten (X, Y, gewünschtes X und gewünschtes Y).

- Wählen Sie unten links im Diagramm einen Datenpunkt an einer bekannten Position aus, beispielsweise dort, wo die X-Achse das Jahr 1896 darstellt und die Bevölkerung 0 beträgt. Geben Sie diese Werte in der neuen Datentabelle in Zeile 1 der Spalten „Gewünschtes X“ und „Gewünschtes Y“ ein.

- Wählen Sie im Fenster „Graph Builder“ das Fadenkreuz-Werkzeug aus und bewegen Sie den Mauszeiger über diesen Datenpunkt. Notieren Sie die angegebenen X- und Y-Werte. Schreiben Sie diese in Zeile 1 der X- und Y-Spalten.

- Wiederholen Sie diesen Vorgang für einen bekannten Punkt in der oberen rechten Ecke des Diagramms und notieren Sie sowohl die aktuellen als auch die gewünschten Werte für X und Y. Ihre Tabelle sollte wie das folgende Beispiel aussehen.

Der nächste Schritt besteht darin, die X- und Y-Skalierungswerte in der Bilddatentabelle so zu ändern, dass sie mit dem übereinstimmen, was im Diagramm angezeigt wird. Im Wesentlichen müssen auf jede Spalte ein Offset und ein Skalierungsfaktor angewendet werden. Glücklicherweise ist dies nur das Anpassen einer Linie, was eine grundlegende Funktion der Plattform „Fit Y by X“ ist. Im Bild unten habe ich eine Linie an die Beziehung zwischen den aktuellen Werten und den gewünschten Werten für X und Y angepasst.

Der Schlüssel liegt hier darin, sich die Formel für die lineare Anpassung anzusehen. Sie gibt sowohl einen Offset als auch eine Skalierung in Form der Gleichung ay = mx + b an, wobei m die Skalierung und b der Offset ist. Diese Parameter können mit dem Tool „Neue Formelspalte“ in JMP verwendet werden, um die Achsen schnell zu fixieren.
- Klicken Sie in der Bilddatentabelle mit der rechten Maustaste auf die X-Spalte und wählen Sie „Neue Formelspalte“ > „Transformieren“ > „Skalierungsoffset …“
- Geben Sie die Werte für den Skalierungsfaktor (hier als Multiplikator geschrieben) und den Offset ein, die Sie aus der Formel im Fenster „Y mal X anpassen“ kopiert haben.

- Wiederholen Sie diesen Vorgang für die Y-Spalte. Geben Sie für den Multiplikator unbedingt eine negative Zahl ein.
Jetzt befinden sich in der Datentabelle neue Spalten für X und Y mit Achsen und Skalen, die mit dem Bild übereinstimmen. Wenn Sie im Graph Builder die Achsen in diese neuen Spalten ändern, sehen Sie, wie diese neuen Achsen mit den Achsen im Bild übereinstimmen.

Schritt 3: Extrahieren der Daten
Der einzige verbleibende Schritt besteht darin, alle Zeilen in der Bilddatentabelle zu eliminieren, die keine Datenpunkte auf der interessierenden Linie sind. Zu diesem Zweck ist K Means Clustering ein schnelles und nahezu automatisches Tool. (Besonderer Dank geht an @landonbw1, der mir diesen Trick gezeigt hat.)
Das Originalbild scheint vier Farben zu haben: Weiß, Blau, Grau und Schwarz. Es sollte also ganz einfach sein, JMP aufzufordern, die Spalten R, G und B in vier Cluster aufzuteilen, und die blaue Linie sollte einer dieser Cluster sein. Aufgrund der Art und Weise, wie Bildkomprimierung, Farbmischung und andere Faktoren in Bilddateien funktionieren, gibt es in diesem Bild tatsächlich über 500 einzelne Farben. Dennoch können wir die Hauptfarben recht einfach trennen. Wenn man die Anzahl der Cluster auf das Doppelte der Anzahl der sichtbaren Farben einstellt (Farben, die ein normaler Mensch als in einem Bild enthalten bezeichnen würde), werden in der Regel Cluster einzelner Grafikelemente aus einer Bilddatei erstellt.
- Wählen Sie Analysieren > Clustering > K-Means-Cluster .
- Geben Sie die Spalten R , G und B in die Auswahl Y, Spalten ein und wählen Sie dann OK .
- Geben Sie im Abschnitt „Anzahl der Cluster“ den Wert 8 ein und wählen Sie dann „Los“ aus.
- Wählen Sie nacheinander jeden Cluster in der Clusterübersichtstabelle aus, während Sie den Graph Builder betrachten, um zu bestimmen, zu welchem Cluster die Linie gehört. Im Bild unten hebt das Hervorheben von Cluster 5 nur die Datenpunkte in der Linie aus dem Diagramm hervor.

- Wählen Sie alle Cluster außer dem Cluster von Interesse (in diesem Fall 5) aus und löschen Sie diese Zeilen aus der Tabelle. Jetzt sind die einzigen verbleibenden Zeilen die Datenpunkte aus dem Diagramm im Bild. Durch Ändern einiger Graph Builder-Optionen wird in JMP ein interaktives Diagramm der Daten erstellt, wo vorher nur ein statisches Bild vorhanden war.

Abschluss
Es ist schon eine gewisse Ironie, dass es länger dauert, zu lesen, wie man Daten aus einem Bild in eine Datentabelle extrahiert, als den Vorgang selbst durchzuführen. Abgesehen von der Ironie gibt es jedoch auch viele Möglichkeiten, diesen Prozess zu nutzen, darunter:
- Zu Beginn eines Forschungsprojekts, beim Studium der gesamten verfügbaren Literatur.
- Reverse Engineering eines Prozesses oder Produkts.
- Digitalisierung von Spannungs-Dehnungskurven zur Verwendung in der Fatigue Model-Plattform .
Welche Chancen eröffnen sich dadurch für Ihre Arbeit?
sehr schön – das Clustering spart tatsächlich viel Zeit!!
Gute Arbeit, @Jed_Campbell .
In vielen Fällen funktioniert die Datenauswahl (Extraktion der Kurve) auch, indem Sie die Punkte/Bereiche von Interesse interaktiv im Graph Builder auswählen, dann die Zeilenauswahl (in der Tabelle) umkehren und dann Zeile>Ausblenden und Ausschließen auswählen. Der weiße Bereich kann auf ähnliche Weise entfernt werden, z. B. einen weißen Punkt auswählen (im Graph Builder) > übereinstimmende Zellen auswählen (Rechtsklick auf Zelle in Tabelle) > Zeile>Ausblenden und Ausschließen.
Hat bei mir schon gut geklappt:)
Dieses Add-In ist ein großer Fortschritt für Leute, die Daten aus Plotbildern direkt in JMP wiederherstellen möchten – danke, dass Sie es zur Verfügung stellen!
Für alle, die ähnliche Aufgaben bearbeiten, empfehle ich außerdem das kostenlose Tool WebPlotDigitizer ( https://automeris.io/WebPlotDigitizer/ ). Es gibt es schon länger und ist überraschend schnell und benutzerfreundlich beim Extrahieren von Daten aus allen möglichen Diagrammen. Version 4.x ist Open Source und kann offline verwendet werden, was sehr praktisch ist.
Es ist großartig, dass für diese Art von Arbeit immer mehr Tools verfügbar werden. Wir hoffen, dass die kontinuierliche Weiterentwicklung an beiden Fronten die Datenextraktion noch reibungsloser macht!