Anleitung: Ein Teil in einem Kamerabild finden
Durchgängige Anleitung von einer laufenden Kamera bis zum Matching-Ergebnis, mit dem Modul, das die Anwendung bei der Installation für Sie anlegt.
Bevor Sie beginnen
-
LumiScan Cam Driver oder eine andere Bildquelle läuft auf demselben Gerät - derselben ctrlX CORE oder demselben ctrlX IPC oder demselben PC - und hat ein Bild aufgenommen.
-
Sie kennen die Adresse ihres Bildknotens. Für Kamera 1 des Cam Driver:
hdvisionsystems/lumiscan-cam-driver/camera1/output/image
Alle Pfade sind im Folgenden relativ zur Anwendung:
hdvisionsystems/lumiscan-template-finder/
Das Erstellen einer Vorlage ist eine Operation der gesamten Anwendung, unter system/; die Suche gehört zum
Modul module-1.
Schritt 1 - Beide Operationen auf die Kamera richten
Setzen Sie die Bildadresse bei beiden Operationen:
system/create-template/input/input-image-address = hdvisionsystems/lumiscan-cam-driver/camera1/output/image module-1/find-template/input/input-image-address = hdvisionsystems/lumiscan-cam-driver/camera1/output/image
Es sind absichtlich getrennte Knoten - eine Vorlage kann aus einer Kamera ausgeschnitten und in einer anderen gesucht werden.
Schritt 2 - Ein Bild mit dem Teil im Sichtfeld aufnehmen
Lösen Sie in der Kameraanwendung eine Aufnahme aus, mit dem Teil so positioniert, wie es in der Produktion liegen wird. Die Vorlage wird aus diesem Bild ausgeschnitten; seine Beleuchtung und sein Arbeitsabstand werden damit zur Referenz.
Schritt 3 - Die Vorlage ausschneiden
Ermitteln Sie die Pixelkoordinaten einer Region, die das Teil enthält. Am einfachsten lesen Sie sie in der Bildvorschau der Kameraanwendung ab.
Dann:
system/create-template/input/crop/startX = 100 system/create-template/input/crop/startY = 200 system/create-template/input/crop/width = 190 system/create-template/input/crop/height = 100 system/create-template/input/template-name = screw
Schreiben Sie auf system/create-template/execute und lesen Sie dann system/create-template/output/status-code.
1 bedeutet, dass es funktioniert hat, und system/create-template/output/template-path zeigt jetzt
templates/screw.png.
Erhalten Sie -5, passt die Region nicht in das Bild; output/status-text nennt die tatsächliche Bildgröße.
Schritt 4 - Anhand desselben Bilds prüfen
Bevor Sie etwas ändern, durchsuchen Sie das Bild, aus dem Sie eben ausgeschnitten haben:
module-1/find-template/input/template-name = screw
Schreiben Sie auf module-1/find-template/execute und lesen Sie module-1/find-template/output/result.
Sie sollten genau einen Treffer erhalten, dessen oriented_bounding_box in der Mitte der angegebenen Region
liegt - (195, 250) für die obigen Werte - mit einer Konfidenz nahe 1.
|
Diese Prüfung ist die halbe Minute wert, die sie dauert. Wird die Vorlage nicht einmal in dem Bild gefunden, aus dem sie stammt, liegt das Problem an der Region oder der Bildadresse, und keine Abstimmung der Parameter wird das beheben. |
Schritt 5 - Ein echtes Bild durchsuchen
Nehmen Sie ein neues Bild mit dem Teil in einer anderen Position auf und suchen Sie erneut. Der Treffer sollte dem Teil folgen.
Wird nichts gefunden, hat das Teil gegenüber der Vorlage wahrscheinlich Größe oder Ausrichtung geändert. Gehen Sie zu Schritt 6.
Schritt 6 - Die Suche bei Bedarf erweitern
Nur wenn Schritt 5 fehlgeschlagen ist:
Das Teil dreht sich. Setzen Sie einen Drehungsbereich mit grober Schrittweite:
module-1/find-template/input/rotation/max-rot = 360 module-1/find-template/input/rotation/step-rot = 5
Das Teil ändert den Abstand. Setzen Sie einen Skalierungsbereich:
module-1/find-template/input/scale/min-scale = 0.9 module-1/find-template/input/scale/max-scale = 1.1 module-1/find-template/input/scale/step-scale = 0.05
Jede Kombination ist ein eigener Durchlauf über das Bild; beide Einstellungen zusammen sind also 72 x 5 = 360 Durchläufe. Erweitern Sie einen Bereich nach dem anderen und hören Sie auf, sobald das Teil zuverlässig gefunden wird.
Wenn die Erweiterung des Bereichs Treffer an falschen Stellen erzeugt, erhöhen Sie den Schwellwert:
module-1/find-template/input/match-thresh = 0.95
Der Grund ist in Die Suche abstimmen erklärt.
Schritt 7 - Die Einstellungen behalten
Die Einstellungen sind wirksam, aber noch nicht dauerhaft. Damit sie nach einem Neustart wiederhergestellt werden:
system/save-module-inputs/input/module-id = module-1
Schreiben Sie auf system/save-module-inputs/execute.
Die Vorlagendatei selbst ist bereits dauerhaft - sie ist eine Datei im Konfigurationsverzeichnis der Anwendung, das auf ctrlX OS Teil der aktiven Solution ist.
In der Produktion
Ein Zyklus ist jetzt ein einziger Schreibvorgang auf module-1/find-template/execute, gefolgt von:
-
module-1/find-template/output/status-codelesen - negativ bedeutet, dass die Suche fehlgeschlagen ist -
module-1/find-template/output/resultlesen -best_scoreundmatches[0]liefern den besten Treffer
Zwischen den Zyklen muss nichts weiter gesetzt werden. Wie jedes Bild der Kamera ohne einen Aufruf pro Bild durchsucht wird, steht in Vorlagen in einem Bild-Stream finden (experimentell).