Dieses Kapitel gibt eine Einführung zum Thema Barcodes und den wichtigsten Begriffen beim Finden und Dekodieren von Barcodes in HALCON.
Ein Barcode besteht aus mehreren dunklen Balken und hellen Leerzeichen. Dabei gibt es ein kleinstmögliches Element, also der schmalst-mögliche Balken, bzw. das schmalst-mögliche Leerzeichen des Barcodes, welches Modul genannt wird. Die Breite der Balken und Leerzeichen ist im Allgemeinen unterschiedlich, aber stets ein vielfaches des Moduls. Mehrere Balken und Leerzeichen ergeben ein Muster. Dieses Muster kodiert ein Symbol, welches in einer Dekodiertabelle festgehalten ist. Die Konventionen, wie ein solches binäres Muster ein Symbol kodiert und wie die Dekodiertabelle aussieht, führen zum jeweiligen Barcode-Typen. Nebst den Mustern zum Kodieren der Symbole gibt es noch Muster mit speziellen Aufgaben. Je nach Typ gibt es weitere Muster, die vorkommen können oder müssen:
Ruhezone (quiet-zone): Zone in der keine Kanten auftreten dürfen. Sie wird vor dem Start- und nach dem Stoppzeichen benötigt, um den Code zu finden.
Start- und Stoppzeichen: Legen Start, Ende und Richtung fest. Damit kann der Code sowohl von links nach rechts als auch von rechts nach links (und somit auf dem Kopf stehend) gelesen und dekodiert werden.
Prüfziffer: Ziffer, die als Sicherheitscheck dient. Mit ihr wird überprüft, ob der Code richtig gelesen wurde.
Guard-Pattern: Spezielle Muster, die links, rechts, in der Mitte oder als Zusatzsymbol vorkommen können.
Finder-Pattern: Spezielle Suchmuster zur Lokalisierung des Barcodes.
Add-on Symbol: Zusätzliche Symbole zur Kodierung ergänzender Informationen. Diese Symbole sind als Barcodes begrenzter Länge kodiert.
Zusammengesetzte Barcodes (composite bar codes) bestehen aus folgenden Elementen:
Linearer Barcode: Wie oben beschrieben.
2D Code: Für Erklärungen zu den 2D Codes wird auf den
„Solution Guide II-C - 2D Data Codes“ verwiesen.
Verbindendes Muster: Verbindet die beiden vorher gelisteten Codes miteinander.
Die folgende Abbildung zeigt ein Schema eines zusammengesetzten Barcodes.
Um auf einem Bild einen Barcode lesen zu können, muss dieser zuerst gefunden werden. Die Regionen, in welchen HALCON einen Barcode vermutet, werden Kandidaten genannt.
Zum Lesen eines Kandidaten werden verschiedene Linien durch die Region gelegt, sogenannte Scanlinien. Obwohl theoretisch eine einzelne Scanlinie reichen würde, wird entlang jeder Scanlinie versucht, den Barcode zu dekodieren. Dadurch steigt die Chance, den Code richtig zu dekodieren. Zudem ermöglichen mehrere erfolgreich dekodierte Scanlinien zusätzliche Plausibilitätschecks, d.h., werden mehrere Scanlinien gleich gelesen, so sinkt das Risiko, den Barcode falsch zu dekodieren.
Der generelle Ablauf und verschiedene Beispiele, wie Barcodes in HALCON
gelesen werden können, finden sich im „Solution Guide I - Basics“.
clear_bar_code_modelcreate_bar_code_modeldecode_bar_code_rectangle2deserialize_bar_code_modelfind_bar_codeget_bar_code_objectget_bar_code_paramget_bar_code_param_specificget_bar_code_resultquery_bar_code_paramsread_bar_code_modelserialize_bar_code_modelset_bar_code_paramset_bar_code_param_specificwrite_bar_code_model