Datacode

Liste der Operatoren ↓

Dieses Kapitel beschreibt Operatoren für das Lesen von 2D-Datacodes.

Konzept des 2D-Datacode-Lesers

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.

Lesen eines 2D-Datacodes vom Typ PDF417. Dieses Bild stammt aus dem Beispielprogramm 2d_data_codes_default_settings.hdev.

Im Folgenden werden die einzelnen Schritte, die zum Lesen von 2D-Datacodes benötigt werden, kurz beschrieben.

Anlegen eines 2D-Datacode-Modells:

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.

Ändern der Modellparameter für Nicht-Standard-Codes:

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'"default_parameters""default_parameters""default_parameters""default_parameters" z.B. auf den Wert 'enhanced_recognition'"enhanced_recognition""enhanced_recognition""enhanced_recognition""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_paramsquery_data_code_2d_paramsQueryDataCode2dParamsQueryDataCode2dParamsQueryDataCode2dParams 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_paramget_data_code_2d_paramGetDataCode2dParamGetDataCode2dParamGetDataCode2dParam 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.

Lesen des 2D-Datacodes:

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_resultsget_data_code_2d_resultsGetDataCode2dResultsGetDataCode2dResultsGetDataCode2dResults und get_data_code_2d_objectsget_data_code_2d_objectsGetDataCode2dObjectsGetDataCode2dObjectsGetDataCode2dObjects 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_resultsget_data_code_2d_resultsGetDataCode2dResultsGetDataCode2dResultsGetDataCode2dResults, auf verschiedene alphanumerische Ergebnisse zuzugreifen, die während der Suche und dem Lesen des Codes berechnet wurden, und get_data_code_2d_objectsget_data_code_2d_objectsGetDataCode2dObjectsGetDataCode2dObjectsGetDataCode2dObjects, auf ikonische Objekte zuzugreifen, die während dem letzten Aufruf von find_data_code_2dfind_data_code_2dFindDataCode2dFindDataCode2dFindDataCode2d erzeugt wurden.

Weitere Operatoren

Zusätzlich zu den oben genannten Operatoren erlaubt es write_data_code_2d_modelwrite_data_code_2d_modelWriteDataCode2dModelWriteDataCode2dModelWriteDataCode2dModel, 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_modelread_data_code_2d_modelReadDataCode2dModelReadDataCode2dModelReadDataCode2dModel angelegt, also ohne create_data_code_2d_modelcreate_data_code_2d_modelCreateDataCode2dModelCreateDataCode2dModelCreateDataCode2dModel aufrufen zu müssen. Außerdem kann das Modell mit serialize_data_code_2d_modelserialize_data_code_2d_modelSerializeDataCode2dModelSerializeDataCode2dModelSerializeDataCode2dModel und deserialize_data_code_2d_modeldeserialize_data_code_2d_modelDeserializeDataCode2dModelDeserializeDataCode2dModelDeserializeDataCode2dModel serialisiert bzw. deserialisiert werden.

Glossar

2D-Datacode-Symbol

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.

Stapelcode

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.

Matrixcode

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.

Module

Dunkle und helle Punkte, Balken oder Quadrate, aus denen ein 2D-Datacode-Symbol gebildet wird.

Ruhezone

Homogener Rahmen um den Rand eines Symbols, das dazu dient, das Symbol im Bild besser von seiner Umgebung abzuheben.

Finder-Pattern

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.

Weiterführende Information

Weitere Details zum Lesen von 2D-Datacodes finden sich im „Solution Guide Basics“ und „Solution Guide on 2D Data Codes“.


Liste der Operatoren

clear_data_code_2d_modelClearDataCode2dModelClearDataCode2dModelclear_data_code_2d_model
Löschen eines 2D-Datacode-Modells und Freigabe des verwendeten Speichers.
create_data_code_2d_modelCreateDataCode2dModelCreateDataCode2dModelcreate_data_code_2d_model
Anlegen eines generischen Modells für eine Klasse von 2D-Datacodes.
deserialize_data_code_2d_modelDeserializeDataCode2dModelDeserializeDataCode2dModeldeserialize_data_code_2d_model
Deserialisieren eines serialisierten 2D-Datacode-Modells.
find_data_code_2dFindDataCode2dFindDataCode2dfind_data_code_2d
Suchen und Lesen von 2D-Datacode-Symbolen im Eingabebild sowie Training des 2D-Datacode-Modells.
get_data_code_2d_objectsGetDataCode2dObjectsGetDataCode2dObjectsget_data_code_2d_objects
Zugriff auf ikonische Objekte, die bei der Suche nach einem 2D-Datacode angelegt werden bzw. diesen beschreiben.
get_data_code_2d_paramGetDataCode2dParamGetDataCode2dParamget_data_code_2d_param
Abfrage von einem oder mehreren Parametern, die das 2D-Datacode-Modell beschreiben.
get_data_code_2d_resultsGetDataCode2dResultsGetDataCode2dResultsget_data_code_2d_results
Abfrage von alphanumerischen Ergebnissen, die bei der Suche nach 2D-Datacode-Symbolen angefallen sind.
query_data_code_2d_paramsQueryDataCode2dParamsQueryDataCode2dParamsquery_data_code_2d_params
Liefert für das übergebene 2D-Datacode-Modell die Namen der generischen Parameter bzw. Objekte, die in den anderen Datacode-Operatoren gesetzt oder abgefragt werden können.
read_data_code_2d_modelReadDataCode2dModelReadDataCode2dModelread_data_code_2d_model
Liest ein 2D-Datacode-Modell aus einer Datei und legt ein neues Modell an.
serialize_data_code_2d_modelSerializeDataCode2dModelSerializeDataCode2dModelserialize_data_code_2d_model
Serialisieren eines 2D-Datacode-Modells.
set_data_code_2d_paramSetDataCode2dParamSetDataCode2dParamset_data_code_2d_param
Setzen ausgewählter Parameter des 2D-Datacode-Modells.
write_data_code_2d_modelWriteDataCode2dModelWriteDataCode2dModelwrite_data_code_2d_model
Schreibt ein 2D-Datacode-Modell in eine Datei.