| Operatoren |
create_data_code_2d_model — Anlegen eines generischen Modells für eine Klasse von 2D-Datacodes.
create_data_code_2d_model( : : SymbolType, GenParamName, GenParamValue : DataCodeHandle)
Mit Hilfe von create_data_code_2d_model wird ein generisches Modell für eine Klasse von 2D-Datacodes angelegt. Als Ergebnis liefert der Operator in DataCodeHandle ein Handle zurück, das für alle weiteren Datacode-Operationen verwendet wird, beispielsweise um das Modell zu modifizieren, um im Bild nach Symbolen zu suchen und diese zu lesen, oder um später auf die Ergebnisse der Symbolsuche zuzugreifen.
Das Konzept des 2D-Datacode-Lesers ist bei der Einleitung zu Kapitel Identifizierung / Datacode beschrieben.
Unterstützte Symboltypen
Der Parameter SymbolType legt den Typ der zu lesenden 2D-Datacode-Symbole fest. Derzeit werden vier 2D-Datacode-Typen unterstützt: 'Data Matrix ECC 200', 'QR Code', 'PDF417' und 'Aztec Code'. Zusätzlich werden drei weitere GS1 Type unterstützt: 'GS1 DataMatrix', 'GS1 QR Code' und 'GS1 Aztec Code'. Die Datamatrix-Codes ECC 000-140 werden nicht unterstützt, der QR-Code hingegen kann sowohl in der älteren Model-1-Version als auch in der neuen Model-2-Version gelesen werden. Der PDF417 kann sowohl in seiner herkömmlichen als auch in seiner kompakten Form ('Compact/Truncated PDF417') gelesen werden. Der Aztec Code kann im 'compact', 'full_range' und 'rune' (siehe ISO/IEC 24778:2008 (E) Annex E ) Format gelesen werden. Die Symbolstruktur der drei GS1 Symbologien ist identisch mit der Struktur ihrer nicht-GS1-Varianten - ECC 200, QR Code, bzw. Aztec Code. Deswegen gelten alle typspezifischen Parameter, Einstellungen und Vorgaben, die ECC 200, QR Code oder Aztec betreffen, auch für ihre entsprechende GS1-Variante. Die GS1 Symbologien haben lediglich zusätzliche Vorgabe bezüglich des Formats der im jeweiligen Symbol kodierten Daten. Die Daten müssen in sogenannten "GS1 Application Element Strings" organisiert werden, welche in den allgemeinen GS1 Spezifikationen definiert sind.
Alle Datacode-Leser unterstützen das Extended Channel Interpretation (ECI) Protokoll. Wenn das Symbol einen ECI-Code enthält, werden dem Standard entsprechend alle Backslashs ('\', ASCII-Code 92), die im normalen Datenstrom vorkommen, in den Ausgabedaten verdoppelt ('\\'), damit diese von der ECI-Sequenz '\nnnnnn' unterschieden werden können.
Ob ein Symbol einen ECI-Code enthält und damit, ob Backslashs verdoppelt wurden oder nicht, kann der Symbology Identifier Kennung entnommen werden. Diese kann mit dem Operator get_data_code_2d_results, mit dem Parameter 'symbology_ident' für jedes erfolgreich gelesene Symbol abgefragt werden. Wie in der so zurückgelieferten Zahl kodiert ist, ob das Symbol ECI-Codes enthält oder nicht, kann den jeweiligen Symbol-Standards oder der Operatorbeschreibung get_data_code_2d_results entnommen werden.
Der Datacode-Leser stellt den Ausgabedaten in keinem Fall, also auch dann nicht, wenn das Symbol ECI-Codes enthält, automatisch die Symbology Identifier Kennung voran. Wenn ein solcher Datenstrom für die weitere Verarbeitung notwendig sein sollte, muss die Sequenz bestehend aus Identifierflag und Symbolkennung (']d' für Datamatrix-Codes, ']Q' für QR-Codes, ']L' für PDF417 Codes bzw. ']z' für Aztec Codes) sowie der als 'symbology_ident' zurückgelieferten Optionsnummer in der Anwendung vor dem Datenstrom manuell ausgegeben werden. Dementsprechend liefert der Parameter 'symbology_ident' für die GS1 Symbologien die folgenden Werte zurück: 2 für GS1 DataMatrix, 3 für GS1 QR Code und 1 für GS1 Aztec, welche den Identifiern ']d2', ']Q3', bzw. ']z1' entsprechen.
Standardeinstellung des Datacode-Modells
In der Grundeinstellung sind die Modellparameter so gewählt, dass eine relativ große Gruppe von Symbolen in vertretbarer Zeit erkannt wird, wobei in dieser Einstellung aus Laufzeitgründen nur Symbole gelesen werden können, die gewissen Einschränkungen unterliegen (vgl. dazu die folgende Tabelle). Wurde das Modell wie weiter unten beschrieben modifiziert, kann es durch Setzen des generischen Parameters 'default_parameters' auf 'standard_recognition' (Operator set_data_code_2d_param) jederzeit wieder in diese Grundeinstellung zurückgesetzt werden.
| Modellparameter | 'standard_recognition' | 'enhanced_recognition' | 'maximum_recognition' |
| Polarität | dunkle Symbole vor hellem Hintergrund | dunkle Symbole vor hellem Hintergrund und umgekehrt | dunkle Symbole vor hellem Hintergrund und umgekehrt |
| Minimaler Kontrast | 30 | 10 | 10 |
| Modulgröße (ECC 200, QR Code, Micro QR Code, Aztec Code) | 6 ... 20 Pixel | >= 4 Pixel (bei guter Schärfe >= 2) | >= 4 Pixel (bei guter Schärfe >= 1) |
| Modulgröße (PDF417) - Breite | 3 ... 15 Pixel | >= 3 Pixel (bei guter Schärfe >= 2) | >= 3 Pixel (bei guter Schärfe >= 1) |
| Modulgröße (PDF417) - Seitenverhältnis | 1 ... 4 | 1 ... 10 | 1 ... 10 |
| 'small_modules_robustness' | niedrig ('low') | niedrig ('low') | hoch ('high') |
| Modulform: | keine oder nur kleine Lücken zwischen benachbarten Modulen (< 10% der Modulgröße) | auch größere Lücken möglich, bis zu 50% der Modulgröße) (nur bei ECC 200, QR Code, Aztec Code) | auch größere Lücken möglich, bis zu 50% der Modulgröße) (nur bei ECC 200, QR Code, Aztec Code) |
| maximaler Slant (ECC 200) | 10° (0.1745) | 30° (0.5235) | 30° (0.5235) |
| Modulgitter (ECC 200) | fest ('fixed') | fest oder variabel ('any') | fest oder variabel ('any') |
| 'finder_pattern_tolerance' (ECC 200) | niedrig ('low') | niedrig ('low') | variabel ('any') |
| 'contrast_tolerance' (ECC 200) | niedrig ('low') | niedrig ('low') | variabel ('any') |
| 'finder_pattern_tolerance' (Aztec Code) | niedrig ('low') | hoch ('high') | hoch ('high') |
| Anzahl der Position-Detection-Patterns, die klar erkennbar sein müssen (QR Code) | 3 | 2 | 2 |
Ändern der Modelleinstellung
Ist bekannt, dass einzelne Parameter der zu lesenden Symbole diesen Vorgaben (möglicherweise) nicht entsprechen (erscheinen im Bild beispielsweise die Symbole hell vor dunklem Hintergrund oder ist mit einem sehr geringen Kontrast zu rechnen), oder ergeben erste Tests, dass einzelne Symbole in der Grundeinstellung nicht lesbar sind, können entweder die entsprechenden Werte - wenn sie bekannt sind - einzeln angepasst werden, wobei alle anderen Einstellungen unverändert bleiben, oder aber das gesamte Modell wird durch Setzen des generischen Parameters 'default_parameters' auf den Wert 'enhanced_recognition' in einem Schritt stark erweitert, so dass eine deutlich größere Gruppe von 2D-Datacode-Symbolen erkannt werden kann. Da die Suche mit einem derart allgemeinen Modell allerdings deutlich aufwendiger ist, kann sich die Rechenzeit des Operators find_data_code_2d bei der Symbolsuche z.T. erheblich erhöhen. Dies ist insbesondere dann zu erwarten, wenn in einem Bild kein lesbarer Datacode gefunden werden kann, wenn das Symbol heller als der Hintergrund ist oder wenn die Module sehr klein sind.
Durch Setzen des generischen Parameters 'default_parameters' auf den Wert 'maximum_recognition' wird das Modell im Vergleich zu 'enhanced_recognition' nochmals erweitert, so dass Datacodes mit sehr kleiner Modulgröße robuster gelesen werden können (siehe 'small_modules_robustness'). Für den Fall des ECC 200 unterscheidet sich der Modus 'maximum_recognition' vom Modus 'enhanced_recognition' insofern, dass auch Symbole mit einem gestörten oder teilweise fehlenden Finder-Pattern gefunden werden können (siehe 'finder_pattern_tolerance'). Die Verwendung dieses Modus kann zu einer erhöhten Rechenzeit und einem erhöhten Speicherbedarf des Operators find_data_code_2d bei der Symbolsuche und der Dekodierung führen.
Aus diesen Gründen sollte das Modell immer durch Setzen der bekannten Symbolparameter soweit wie möglich eingeschränkt werden. Dies kann hier direkt beim Erzeugen des Modells oder aber später mit dem Operator set_data_code_2d_param erfolgen, wofür bei beiden Operatoren die generischen Parameter GenParamName und GenParamValue zur Verfügung stehen. So sollte z.B. im Falle des ECC 200 bei der Verwendung des Modus 'maximum_recognition' die Symbolgröße soweit wie möglich eingeschränkt werden. Eine detaillierte Beschreibung der Parameter findet sich beim Operator set_data_code_2d_param.
Schließlich steht als eine weitere Möglichkeit, das Modell an eine bestimmte Symbolform anzupassen, auch ein Trainingsmodus zur Verfügung. Der Operator find_data_code_2d erlaubt es, mit der Parametereinstellung 'train' die Symbolparameter aus einem oder mehreren Beispielbildern zu trainieren.
In jedem Fall können die aktuell eingestellten Modellparameter mit get_data_code_2d_param ausgelesen werden. Die Namen der Parameter, die für das konkrete Modell gesetzt bzw. abgefragt werden können, liefert query_data_code_2d_params.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Typ des 2D-Datacodes.
Defaultwert: 'Data Matrix ECC 200'
Werteliste: 'Aztec Code', 'Data Matrix ECC 200', 'GS1 Aztec Code', 'GS1 DataMatrix', 'GS1 QR Code', 'Micro QR Code', 'PDF417', 'QR Code'
Namen der generischen Parameter, die für das 2D-Datacode-Modell eingestellt werden sollen.
Defaultwert: []
Werteliste: 'additional_levels', 'contrast_min', 'contrast_tolerance', 'default_parameters', 'finder_pattern_tolerance', 'mirrored', 'model_type', 'module_aspect', 'module_aspect_max', 'module_aspect_min', 'module_gap', 'module_gap_col', 'module_gap_col_max', 'module_gap_col_min', 'module_gap_max', 'module_gap_min', 'module_gap_row', 'module_gap_row_max', 'module_gap_row_min', 'module_grid', 'module_size', 'module_size_max', 'module_size_min', 'module_width', 'module_width_max', 'module_width_min', 'persistence', 'polarity', 'position_pattern_min', 'slant_max', 'small_modules_robustness', 'strict_model', 'strict_quiet_zone', 'symbol_cols', 'symbol_cols_max', 'symbol_cols_min', 'symbol_rows', 'symbol_rows_max', 'symbol_rows_min', 'symbol_shape', 'symbol_size', 'symbol_size_max', 'symbol_size_min', 'timeout', 'version', 'version_max', 'version_min'
Werte der generischen Parameter, die für das 2D-Datacode-Modell eingestellt werden sollen.
Defaultwert: []
Wertevorschläge: 'standard_recognition', 'enhanced_recognition', 'maximum_recognition', 'yes', 'no', 'any', 'dark_on_light', 'light_on_dark', 'square', 'rectangle', 'small', 'big', 'fixed', 'variable', 'low', 'high', 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 30, 50, 70, 90, 12, 14, 16, 18, 20, 22, 24, 26, 32, 36, 40, 44, 48, 52, 64, 72, 80, 88, 96, 104, 120, 132, 144
Handle für den Zugriff auf das 2D-Datacode-Modell
* Two simple examples that show the use of create_data_code_2d_model
* to detect a Data matrix ECC 200 code and a QR Code.
* (1) Create a model for reading simple QR Codes
* (only dark symbols on a light background will be read)
create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)
* Read an image
read_image (Image, 'datacode/qrcode/qr_workpiece_01')
* Read the symbol in the image
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], \
ResultHandles, DecodedDataStrings)
* Clear the model
clear_data_code_2d_model (DataCodeHandle)
* (2) Create a model for reading a wide range of Data matrix ECC 200 codes
* (this model will also read light symbols on dark background)
create_data_code_2d_model ('Data Matrix ECC 200', 'default_parameters', \
'enhanced_recognition', DataCodeHandle)
* Read an image
read_image (Image, 'datacode/ecc200/ecc200_cpu_010')
* Read the symbol in the image
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], \
ResultHandles, DecodedDataStrings)
* Clear the model
clear_data_code_2d_model (DataCodeHandle)
create_data_code_2d_model liefert den Wert 2 (H_MSG_TRUE), falls die übergebenen Parameter korrekt sind und das Modell erzeugt werden kann. Ansonsten wird eine Fehlerbehandlung durchgeführt.
set_data_code_2d_param, find_data_code_2d
International Standard ISO/IEC 16022: „Information technology -
Automatic identification and data capture techniques -
Data Matrix bar code symbology specification“;
Reference number ISO/IEC 16022:2006 (E);
ISO/IEC 2006.
International Standard ISO/IEC 15438: „Information technology -
Automatic identification and data capture techniques -
PDF417 bar code symbology specification“;
Reference number ISO/IEC 15438:2006 (E);
ISO/IEC 2006.
International Standard ISO/IEC 18004: „Information technology -
Automatic identification and data capture techniques -
QR Code 2005 bar code symbology specification“;
Reference number ISO/IEC 18004:2006 (E);
ISO/IEC 2006.
International Standard ISO/IEC 24778: „Information technology -
Automatic identification and data capture techniques -
Aztec Code bar code symbology specification“;
Reference number ISO/IEC 24778:2008 (E);
ISO/IEC 2008.
GS1 General Specifications; Version 12; Issue 1, Jan-2012; GS1.
Data Code
| Operatoren |