Anleitung: Teilefläche aus einem Kamerabild messen
Von Anfang bis Ende: eine echte Flächenmessung aus einer laufenden Kamera gewinnen und dafür sorgen, dass sie einen Neustart übersteht.
Bevor Sie beginnen
-
LumiScan Cam Driver ist installiert und veröffentlicht ein Bild, zum Beispiel unter
hdvisionsystems/lumiscan-cam-driver/camera1/output/image. -
LumiScan Area Detector ist installiert, und
system/modulesführtmodule-1auf. Auf ctrlX OS ist die Anwendung außerdem lizenziert, siehe Voraussetzungen. -
Die Teile liegen vor der Kamera, in der Beleuchtung, die die Installation tatsächlich verwenden wird.
Schritt 1: Sehen, was mit den Standardwerten gefunden wird
module-1/detect-area/input/input-image-address = hdvisionsystems/lumiscan-cam-driver/camera1/output/image write module-1/detect-area/execute
Prüfen Sie, dass output/status-code 1 ist, und lesen Sie dann output/result. Sehen Sie sich
blob_count an: zu viele bedeutet, dass Rauschen mitgezählt wird, null bedeutet, dass nichts zutraf.
Die Flächen sind bereits echte Pixelzahlen. Was der nächste Schritt ändert, ist, wie die Regionen gefunden werden.
Schritt 2: Den Schwellwert einstellen
Die eine Einstellung, die entscheidet, ob das funktioniert, ist die Helligkeit, die ein Pixel überschreiten muss. Raten Sie nicht - messen Sie das Bild:
system/analyse-scene/input/input-image-address = "hdvisionsystems/lumiscan-cam-driver/camera1/output/image" write system/analyse-scene/execute read system/analyse-scene/output/recommended-settings read system/analyse-scene/output/histogram
recommended-settings liefert Ihnen einen Schwellwert, welche Seite das Teil ist und ob Löcher gefüllt
werden sollen. Mit histogram prüfen Sie das: Der Schwellwert sollte im Tal zwischen dem Buckel des
Teils und dem des Hintergrunds liegen. Zwei Buckel mit einer Lücke
bedeuten, dass sich das Bild sauber trennt; ein Buckel bedeutet, dass kein Schwellwert es rettet und
stattdessen die Beleuchtung korrigiert werden muss.
Setzen Sie ihn dann am Modul:
module-1/detect-area/input/method-specific/fixed/level = 128 write module-1/detect-area/execute
Sind die Teile dunkler als der Hintergrund, ergänzen Sie:
module-1/detect-area/input/detect-dark = true
Schritt 3: Kein Rauschen mehr zählen
Sehen Sie sich die kleinsten Einträge in blobs an. Die App meldet jede Region, die sie getrennt hat -
es gibt kein Flächenfenster, das sich anheben ließe -, Rauschen und Staub werden daher an einer von
zwei Stellen behandelt:
-
Am Schwellwert.
method-specific/fixed/levelso weit anzuheben, bis das Rauschen den Schwellwert nicht mehr überschreitet, ist die bessere Lösung, weil das Finden dieser Regionen dann nichts mehr kostet. -
In Ihrem Steuerungsprogramm. Ignorieren Sie jeden
blobs[]-Eintrag, dessenareaunter dem liegt, was ein Teil sein kann. Ein Viertel der Fläche des kleinsten Teils, das Sie interessiert, ist ein guter Ausgangspunkt. Diese Entscheidung liegt bei Ihnen: Nur Sie wissen, was ein Teil ist.
Schritt 4: Die Zahl gegen etwas Bekanntes prüfen
Messen Sie ein Teil, dessen echte Fläche Sie kennen - oder zählen Sie seine Pixel einmal in einem
Bildbetrachter -, und vergleichen Sie sie mit blobs[0].area. Beide sollten eng übereinstimmen. Ist die
Messung durchgehend zu niedrig, schneidet der Schwellwert in das Teil hinein: Senken Sie
method-specific/fixed/level, und probieren Sie detect-dark, wenn das Teil das dunklere von beiden
ist.
Schritt 5: Dauerhaft machen
system/save-module-inputs/input/module-id = module-1 write system/save-module-inputs/execute write system/save-current-modules/execute
Beide sollten 1 melden. Das Modul und seine Einstellungen überstehen jetzt einen Neustart.
Schritt 6: Aus einem Steuerungsprogramm ausführen
Pro Zyklus:
-
Schreiben Sie auf
module-1/detect-area/execute. -
Lesen Sie
module-1/detect-area/output/status-code. -
Ist er negativ, ist der Durchlauf fehlgeschlagen - lesen Sie
output/status-textund verwenden Sie das Ergebnis nicht. -
Ist er
1, lesen Sieoutput/resultund reagieren Sie auftotal_area, oder aufblob_countfür eine Anwesenheitsprüfung.
Lesen Sie die Ausgaben, bevor Sie das nächste execute auslösen: Ein Durchlauf leert sie, sobald er
beginnt.
Wenn die Zahlen falsch aussehen
Probleme sind Schritt für Schritt unter Fehlerbehebung beschrieben:
-
Die gemessene Fläche ist größer oder kleiner als das Teil - viel größer, durchgehend zu klein oder ein Teil mit einem Loch
-
Der Messwert driftet mit der Beleuchtung, oder kein Schwellwert funktioniert