Ich habe ein Programm in Python geschrieben, das automatisch Ergebnislisten wie dieses liest
Im Moment verwende ich die folgende grundlegende Strategie:
Das Ergebnis der Ausführung des Programms wird in diesem Bild gezeigt:
Sie können die Peak-Plots unterhalb und rechts neben dem Bild oben links sehen. Die Linien im oberen linken Bild sind die Positionen der Säulen und die roten Punkte zeigen die identifizierten Werte. Das Histogramm unten rechts zeigt die Füllstände jedes Kreises und die Klassifizierungslinie.
Das Problem mit dieser Methode besteht darin, dass eine sorgfältige Optimierung erforderlich ist und Unterschiede in den Scaneinstellungen auftreten. Gibt es einen robusteren Weg, das Gitter zu erkennen, das weniger A-priori-Informationen benötigt (im Moment verwende ich Wissen, wie viele Punkte es gibt) und ist robuster für Leute, die andere Formen auf die Blätter zeichnen? Ich glaube, dass es möglich sein kann, eine 2D-Fourier-Transformation zu verwenden, aber ich bin mir nicht sicher, wie.
Ich benutze die EPD, also habe ich einige Bibliotheken zur Verfügung.
Die korrekte Methode besteht darin, die Analyse Verbundener Komponenten im Bild zu verwenden, um sie in "Objekte" zu segmentieren. Dann können Sie höhere Algorithmen (z. B. Hough Transformation auf den Komponentenschwerpunkten) verwenden, um das Gitter zu erkennen und für jede Zelle zu bestimmen, ob es ein- / ausgeschaltet ist, indem Sie die Anzahl der aktiven Pixel betrachten.
Zunächst finde ich Ihre anfängliche Methode ziemlich stichhaltig und ich hätte wahrscheinlich den gleichen Weg versucht (ich schätze besonders die Zeilen- / Spaltenprojektion, gefolgt von der Histogrammierung, die eine unterschätzte Methode ist, die normalerweise in realen Anwendungen ziemlich effizient ist) .
Da Sie jedoch eine robustere Verarbeitungspipeline verwenden möchten, finden Sie hier einen Vorschlag, der wahrscheinlich vollständig automatisiert werden kann (wobei gleichzeitig auch die Entzerrung über ImageMagick entfernt wird):
Diese Pipeline ist möglicherweise ein wenig CPU-intensiv (besonders Schritt 2, der zu einer Art gieriger Suche übergeht), sollte aber ziemlich robust und automatisch sein.
Tags und Links python image-processing