Operatoren |
Dieses Kapitel beschreibt Operatoren für das Lesen von 2D-Datacodes.
2D-Datacode-Symbole stellen eine spezielle Form von zweidimensionalen Mustern dar, die der Kodierung von Text und Zahlen dient. HALCON kann die gängigsten 2D-Datacodes lesen: Data Matrix ECC 200, QR Code, Micro QR Code, Aztec Code und PDF417. Diese Codes enthalten ein sogenanntes Finder-Pattern und ein Muster für die eigentlichen Daten des Codes. Das Finder-Pattern wird dafür gebraucht, das Muster im Bild zu finden und grundlegende Information über geometrische Eigenschaften, z.B. die Orientierung des Symbols im Bild, zu erhalten. Das Muster für die Daten, also der eigentliche Code, besteht aus vielen punktförmigen, balkenförmigen oder quadratischen Modulen. Durch das spezielle Design der Codes können sie auch dann dekodiert werden, wenn Teile des Symbols Störungen aufweisen.
Im Folgenden werden die einzelnen Schritte, die zum Lesen von 2D-Datacodes benötigt werden, kurz beschrieben.
Zuerst muss ein 2D-Datacode-Modell erstellt werden. Dies erfolgt mit dem Operator
Dieses Modell versorgt den 2D-Datacode-Leser mit allen nötigen Informationen bezüglich der Struktur des zu lesenden Codes. Für normal gedruckte Codes reicht es, den Namen des Codes anzugeben. Die passenden Standardparameter wählt HALCON dann automatisch. Für speziellere Fälle können die Modellparameter an ein bestimmtes Symbolerscheinungsbild angepasst werden. Die Parameter können bereits im Rahmen der Erstellung des Modells gesetzt werden oder in einem späteren Schritt angepasst werden.
Mit den Standardparametern kann der 2D-Datacode-Leser eine große Bandbreite von Codes lesen. Für Nicht-Standard-Codes können die Parameter mit dem folgenden Operator verändert werden:
Hierbei kann entweder ein erweiterter Satz von Standardparametern ausgewählt werden, indem der generische Parameter 'default_parameters' z.B. auf den Wert 'enhanced_recognition' gesetzt wird, oder die Parameter werden einzeln gesetzt, um das Modell optimal an die Eigenschaften des genutzten Drucktyps anzupassen. Mit query_data_code_2d_params können alle Parameter abgefragt werden, die für einen bestimmten 2D-Datacode-Symbol-Typen verfügbar sind. Die aktuell gesetzten Werte von Parametern können mit get_data_code_2d_param abgefragt werden.
Statt die Parameter manuell zu modifizieren, kann das Modell auch automatisch von HALCON trainiert werden. Dazu nutzt man den Operator
mit dem generischen Parameter 'train'. HALCON sucht dann automatisch nach den Parameterwerten, die am besten geeignet sind, den gegebenen Code zu lesen. Es wird empfohlen, das Training mit vielen Bildern auszuführen, damit alle auftretenden Variationen im Erscheinungsbild der Symbole abgedeckt werden können.
Der 2D-Datacode wird mit dem folgenden Operator gefunden und dekodiert:
Für jedes erfolgreich dekodierte Symbol liefert der Operator die umgebende XLD- Kontur, einen Kandidaten-Handle, der auf eine Ergebnisstruktur verweist, in der zusätzliche Informationen über das Symbol und den Such- und Leseprozess abgespeichert wurden, sowie den String, der in dem 2D-Datacode-Symbol kodiert ist. Mit den Ergebnis-Handles und den Operatoren get_data_code_2d_results und get_data_code_2d_objects kann auf zusätzliche Information über den Extraktionsprozess zugegriffen werden. Diese kann sowohl für die Prozessanalyse also auch für Visualisierungszwecke hilfreich sein. Insbesondere erlaubt es get_data_code_2d_results, auf verschiedene alphanumerische Ergebnisse zuzugreifen, die während der Suche und dem Lesen des Codes berechnet wurden, und get_data_code_2d_objects, auf ikonische Objekte zuzugreifen, die während dem letzten Aufruf von find_data_code_2d erzeugt wurden.
Zusätzlich zu den oben genannten Operatoren erlaubt es write_data_code_2d_model, das 2D-Datacode-Modell in eine Datei zu schreiben. Diese kann später z.B. in einer anderen Applikation dazu genutzt werden, eine identische Kopie des Modells zu erzeugen. Solch eine Kopie wird dann direkt über read_data_code_2d_model angelegt, also ohne create_data_code_2d_model aufrufen zu müssen. Außerdem kann das Modell mit serialize_data_code_2d_model und deserialize_data_code_2d_model serialisiert bzw. deserialisiert werden.
Zweidimensionales grafisches Symbol, das Text und Zahlen kodiert. Es besteht aus dunklen und hellen Punkten, Balken oder Quadraten, die als Module bezeichnet werden. Es gibt verschiedene Arten von 2D-Datacodes. Zwei gebräuchliche Arten sind die Stapelcodes und die Matrixcodes.
2D-Datacode-Symbol, das einen Stapel aus 1D-Barcodes enthält, die in Zeilen und Spalten angeordnet sind. Um zu gewährleisten, dass der komplette Stapel verarbeitet wird, enthält das Symbol außerdem ein Start- und ein Stoppmuster. Zusätzlich wird das Symbol durch eine Ruhezone umrahmt.
2D-Datacode-Symbol, das ein zweidimensionales grafisches Muster nutzt, das aus dunklen und hellen Modulen besteht. Das Symbol besteht aus drei Komponenten: dem Finder-Pattern, einem Muster, das die eigentlichen Daten enthält, und einer Ruhezone.
Dunkle und helle Punkte, Balken oder Quadrate, aus denen ein 2D-Datacode-Symbol gebildet wird.
Homogener Rahmen um den Rand eines Symbols, das dazu dient, das Symbol im Bild besser von seiner Umgebung abzuheben.
Muster, das dazu benutzt wird, das Symbol und seine Orientierung im Bild zu finden. Die Art des Musters hängt vom gewählten 2D-Datacode-Typ ab.
Weitere Details zum Lesen von 2D-Datacodes finden sich im „Solution Guide Basics“ und „Solution Guide on 2D Data Codes“.
Operatoren |