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
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 query_data_code_2d_params
abgefragt werden.
get_data_code_2d_param
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
und get_data_code_2d_results
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_objects
, auf verschiedene alphanumerische Ergebnisse
zuzugreifen, die während der Suche und dem Lesen des Codes berechnet
wurden, und get_data_code_2d_results
, auf ikonische Objekte
zuzugreifen, die während dem letzten Aufruf von
get_data_code_2d_objects
erzeugt wurden.
find_data_code_2d
Zusätzlich zu den oben genannten Operatoren erlaubt es
, 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 write_data_code_2d_model
angelegt, also ohne
read_data_code_2d_model
aufrufen zu müssen. Außerdem kann das
Modell mit create_data_code_2d_model
und
serialize_data_code_2d_model
serialisiert bzw. deserialisiert
werden.
deserialize_data_code_2d_model
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“
.
clear_data_code_2d_model
create_data_code_2d_model
deserialize_data_code_2d_model
find_data_code_2d
get_data_code_2d_objects
get_data_code_2d_param
get_data_code_2d_results
query_data_code_2d_params
read_data_code_2d_model
serialize_data_code_2d_model
set_data_code_2d_param
write_data_code_2d_model