Release Notes: v1.1.0
Erstes funktionsfähiges Release von LumiScan Object Finder. Frühere Versionen registrierten die Data-Layer-Knoten der Anwendung, lieferten aber ein festes Platzhalterergebnis zurück, sodass nichts von dem Folgenden vorher nutzbar war.
Neu
Formbasierte Objekterkennung. <module>/find-object/execute durchsucht ein Kamerabild nach einem bekannten
Objekt und meldet jedes Vorkommen, jeweils mit Position, Größe der übereinstimmenden Vorlage, Score und Namen
des Objekts. Das Matching erfolgt auf Gradientenorientierungen statt auf Pixelintensitäten und toleriert daher
Beleuchtungsänderungen und Oberflächentexturen, an denen Intensitätskorrelation scheitert.
Ein Objekt ist ein Bild, gespeichert als <object-dir>/<object-id>.png, wobei der Dateiname die Objekt-ID
ist. Der Detektor dreht oder skaliert es nicht, sodass ein Teil, das in mehreren Orientierungen erkannt werden
muss, mehrere Objekte ist - screw-m6-front, screw-m6-tilted -, nach denen nacheinander gesucht wird.
Siehe Objektspeicher.
Ein Objekt pro Suche. <module>/find-object/input/object-id nennt das Objekt und ist erforderlich; ein
leerer Wert wird mit Statuscode -2 abgelehnt. Es gibt keinen Durchlauf „nach allem suchen": Ein Detektor
wird um ein Bild herum aufgebaut; die Suche nach mehreren Objekten bedeutete also mehrere Detektoren, und der
Detektor verarbeitet jedes Mal das ganze Bild einmal - der teure Teil. Die Methode einmal pro Objekt
auszuführen, hält diese Kosten sichtbar.
Einlernen von der Live-Kamera. system/create-object/execute schneidet eine Region aus einem Kamerabild aus
und speichert sie als <object-id>.png, sodass ein Objekt in der echten Beleuchtung im echten Arbeitsabstand
eingelernt werden kann, ohne Dateien zu übertragen. Das Speichern unter einer bestehenden ID ersetzt diese, und
output/object-path meldet, wo die Datei abgelegt wurde.
Mehrere Module, jedes mit eigenem find-object, eigenen Einstellungen und Ergebnissen, sodass eine
Installation mehrere Kameras gleichzeitig überwachen kann. Eine Lizenz gilt für zehn Module.
Ein Objektverzeichnis für die Anwendung, system/object-dir, dessen Objekte auf system/objects
aufgelistet werden - ein Eintrag pro .png, was zugleich die vollständige Liste der Vorlagen ist.
system/set-object-dir wechselt es und speichert die Wahl.
Eine Geschwindigkeitseinstellung, die wirkt. input/preprocess/bin-size sucht mit geringerer Auflösung:
Sowohl das Bild als auch das Bild des Objekts werden vor dem Matching um diesen ganzzahligen Faktor
verkleinert, sodass die Kosten mit der Pixelzahl sinken. Auf einem Full-HD-Bild mit einem 128x128-Objekt war
2 gemessen etwa sechsmal schneller bei unverändertem Score und 4 etwa vierzehnmal schneller. Das erkauft
es mit Präzision - Positionen werden auf bin-size Pixel quantisiert - und mit Detail, denn ein weit genug
gebinntes Objekt verliert die Kanten, auf die sich der Detektor stützt, und wird abgelehnt, was als
fehlgeschlagener Durchlauf und nicht als fehlendes Teil gemeldet wird. Positionen werden immer in den Pixeln
des Bildes gemeldet, das Sie konfiguriert haben. input/pyramid klingt wie eine Geschwindigkeitseinstellung
und ist keine: Tiefere Pyramiden waren gemessen etwas langsamer.
Eine Region of Interest pro Durchlauf, input/crop, und die Wahl, ob Positionen in Bild- oder
Ausschnittskoordinaten gemeldet werden.
Ein Status auf jeder Operation: output/status-code und output/status-text, wobei ein negativer Code
immer bedeutet, dass der Durchlauf fehlgeschlagen ist und nichts erzeugt hat.
Wissenswert
Die zu durchsuchende Region wird genau wie konfiguriert durchsucht - der Detektor braucht eine bestimmte Größe und füllt bis dahin auf, statt einen Teil Ihrer Region wegzulassen. Positionen bleiben exakt, sodass ein bei y=300 gemeldeter Treffer bei y=300 im von Ihnen konfigurierten Bild liegt.
Ein leeres Ergebnis bedeutet, dass das Objekt nicht im Bild war, und nichts anderes. Jeder andere Grund, aus
dem eine Suche leer zurückkommen könnte - das Bild des Objekts fehlt, das Bild ist unbrauchbar, eine
Pyramidenebene ist ungültig, das Bild hat zu wenig Kontrast, als dass der Detektor sich darauf stützen könnte,
bin-size hat zu wenig davon übrig gelassen -, wird vor dem Start der Suche abgefangen und als negativer
Statuscode gemeldet. Siehe Ausführungsstatus.
Ungültige Eingaben werden alle gemeinsam gemeldet, jede mit Nennung der fehlerhaften Eingabe und ihres Werts.
Objekte und das Objektverzeichnis werden immer relativ zum Konfigurationsverzeichnis der Anwendung interpretiert. Absolute Pfade und Pfade, die daraus hinausführen, werden abgelehnt.