F_VN_GradeBarcodeExp

F_VN_GradeBarcodeExp 1:

Grades a 1D barcode according to ISO / IEC 15416:2016. Requires uniform illumination, good focus and the image sensor plane parallel to the code plane to achieve meaningful results. (expert function)

Syntax

Definition:

FUNCTION F_VN_GradeBarcodeExp : HRESULT
VAR_INPUT
    ipSrcImage            : ITcVnImage;
    ipDecodedData         : Reference To ITcVnContainer;
END_VAR
VAR_IN_OUT
    stCodeGrades          : TcVnCodeGrades1D;
END_VAR
VAR_INPUT
    eBarcodeType          : ETcVnBarcodeType;
    eSearchDirection      : ETcVnBarcodeSearchDirection;
    ipResultVisualization : Reference To ITcVnImage;
    ipScanLineInfo        : Reference To ITcVnContainer;
    ipContour             : Reference To ITcVnContainer;
    hrPrev                : HRESULT;
END_VAR
VAR_OUTPUT
    fAngleDeg             : REAL;
END_VAR

F_VN_GradeBarcodeExp 2: Inputs

Name

Type

Description

ipSrcImage

ITcVnImage

Source image, only containing the horizontally aligned barcode region (USINT, 1 channel, including quiet zones on left and right, excluding Text or empty space on more than 10% total height on top or bottom)

ipDecodedData

Reference To ITcVnContainer

Returns the decoded data (ContainerType_String_SINT)

eBarcodeType

ETcVnBarcodeType

Type of the barcode (supported: CODE39, CODE128, EAN8, EAN13, ITF, UPCA, UPCE)

eSearchDirection

ETcVnBarcodeSearchDirection

Barcode search direction (BSD_ANY first tries horizontal, then vertical)

ipResultVisualization

Reference To ITcVnImage

Returns a visualization of the scan lines (optional, set to 0 if not required). Grades are color coded: >= 3 as green, >= 2 as light blue, >= 1 as orange, < 1 as red

ipScanLineInfo

Reference To ITcVnContainer

Returns additional scan line info for further evaluation, e.g. to use PlotIntensityProfile for visualization (optional, set to 0 if not required; ContainerType_Vector_TcVnVector3_REAL, containing [row index, overall grade, threshold])

ipContour

Reference To ITcVnContainer

Returns the 4 approximate code corner points, including the quiet zone (optional, set to 0 if not required; ContainerType_Vector_TcVnPoint2_DINT)

hrPrev

HRESULT

HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.)

F_VN_GradeBarcodeExp 3: In/Outputs

Name

Type

Description

stCodeGrades

TcVnCodeGrades1D

Returns the code grades in the range from 0 (very bad) to 4 (very good)

F_VN_GradeBarcodeExp 4: Outputs

Name

Type

Description

fAngleDeg

REAL

Returns the approximate clockwise rotation angle in degree

F_VN_GradeBarcodeExp 5: Return value

HRESULT

Weiterführende Informationen

Die Funktion F_VN_GradeBarcodeExp ist eine Expert-Variante von F_VN_GradeBarcode. Sie enthält zusätzliche Parameter.

Parameter

Eingangsbild

Das Eingangsbild ipSrcImage muss ein 1-kanaliges Bild mit Element-Typ USINT (8 Bit) sein. Das Eingangsbild darf nur den zu prüfenden Code, einschließlich der entsprechenden Ruhezonen, beinhalten. Der Strichcode muss horizontal oder vertikal ausgerichtet sein und darf keinen Text oder Leerraum auf mehr als 10% der Gesamthöhe ober- oder unterhalb aufweisen. Die Ruhezonen befinden sich bei horizontaler Ausrichtung links und rechts vom Code.

Um aussagekräftige Ergebnisse zu erzielen sind eine gleichmäßige Beleuchtung, nicht unter- oder überbelichtet, eine gute Fokussierung auf die Codeebene und eine dazu parallel ausgerichtete Bildsensorebene erforderlich. Weiterhin muss die Bildauflösung entsprechend der Strichstärke hoch genug sein. Bei Strichcodes sollte die minimale Strichbreite mit mindestens 3 Pixeln abgedeckt werden, um gute Ergebnisse zu erhalten.

Gelesene Daten

Die aus dem Code gelesenen Daten werden als String in dem Container ipDecodedData zurückgegeben. Der Container ist dabei vom Typ ContainerType_String_SINT. Wurde der Code erfolgreich gefunden und decodiert kann der Inhalt über die Funktion F_VN_ExportContainer_String in einen String exportiert werden.

hr := F_VN_ExportSubContainer_String(ipDecodedData, sText, nMaxLength, hr);
F_VN_GradeBarcodeExp 6:

Unterschiedliche Dekodierergebnisse

Die Dekodierung mit dem jeweiligen Referenzalgorithmus kann zu abweichenden Ergebnissen führen. Daher ist es möglich, dass der Codeinhalt von anderen Geräten oder Funktionen gelesen werden kann, der Referenzalgorithmus aber fehlschlägt.

Rückgabe der Qualitätsbewertung

Der Rückgabewert stCodeGrades vom Type TcVnCodeGrades1D enthält die ermittelten Einzelergebnisse und ein Gesamtsamtergebnis fOverall. Die Qualitätseinstufung erfolgt von 0 (sehr schlecht) bis 4 (sehr gut). Die Ergebnisse werden über mehrere Scanlinien gemittelt.

Parameter

Beschreibung

fDecode

Bewertet, ob der Code mit dem Referenzalgorithmus dekodiert werden konnte.

fSymbolContrast

Bewertet den globalen Symbolkontrast, d.h. die Differenz zwischen dem hellsten und dunkelsten Wert auf der gesamten Scanlinie.

fMinReflectance

Bewertet das Verhältnis vom dunkelsten zum hellsten Wert der Scanlinien.

fMinEdgeContrast

Bewertet den minimalen lokalen Kontrast benachbarter Elemente der Scanlinien.

fModulation

Bewertet das Verhältnis zwischen dem minimalen lokalen Kontrast und dem globalen Symbolkontrast.

fDefects

Bewertet Unregelmäßigkeiten innerhalb von Elementen und Ruhezonen.

fDecodability

Bewertet, wie verlässlich der Code mit dem Referenzalgorithmus dekodiert werden kann.

fOverall

Die Gesamtnote des Codes ist die niedrigste erreichte Note der Einzelprüfungen, gemittelt über alle Scanlinien. Führen verschiedene Scanlinien zu unterschiedlichen dekodierten Daten, ist die Gesamtnote 0.

Barcode-Typ

Der Parameter eBarcodeType definiert den Barcode-Typ, dessen Druckqualität beurteilt werden soll. Die folgenden Barcode-Typen aus dem Enum ETcVnBarcodeType werden unterstützt:

  • TCVN_BT_CODE39
  • TCVN_BT_CODE128
  • TCVN_BT_EAN8
  • TCVN_BT_EAN13
  • TCVN_BT_ITF
  • TCVN_BT_UPCA
  • TCVN_BT_UPCE

Suchrichtung

Über eSearchDirection kann die Suchrichtung vorgegeben werden:

Ergebnisdarstellung

ipResultVisualization gibt ein Bild mit der Visualisierung der Scanlinien und den jeweiligen Bewertungsergebnissen zurück. Die Linien sind entsprechend der einzelnen Bewertungen farblich kodiert: >= 3 als grün, >= 2 als hellblau, >= 1 als orange, < 1 als rot. Dieser Parameter ist optional und kann auf 0 gesetzt werden, wenn er nicht benötigt wird.

Scanlinien Informationen

ipScanLineInfo liefert zusätzliche Informationen über die einzelnen Scanlinien für eine detailliertere Auswertung zurück. Die Rückgabewerte sind vom Typ ContainerType_Vector_TcVnVector3_REAL und geben pro Scanlinie je nach Ausrichtung den Index der Bildreihe oder Bildspalte, die Gesamtnote und den ermittelten globalen Threshold an. Die einzelnen Linien können z. B. mit F_VN_PlotIntensityProfile visualisiert werden. Dieser Parameter ist optional und kann auf 0 gesetzt werden, wenn er nicht benötigt wird.

Position des Codes

Der Parameter ipContour gibt die Code-Eckpunkte, einschließlich der Ruhezone, als vier Konturpunkte vom Typ ContainerType_Vector_TcVnPoint2_DINT zurück. Die Berechnung basiert nur auf den Scanlinien, die dekodiert werden konnten. Die Kontur kann z.B. direkt mit F_VN_DrawContours gezeichnet oder mit den Funktionen zur Contour Analysis weiter analysiert werden. Dieser Parameter ist optional und kann auf 0 gesetzt werden, wenn er nicht benötigt wird.

Drehwinkel (Rückgabewert)

fAngleDeg gibt den Drehwinkel im Uhrzeigersinn in 90°-Schritten zurück.

Anwendung

Die Druckqualität von einem Barcode kann z.B. so ermittelt werden:

hr := F_VN_GradeBarcodeExp(
    ipSrcImage            := ipSrcImage,
    ipDecodedData         := ipDecodedData,
    stCodeGrades          := stCodeGrades,
    eBarcodeType          := eBarcodeType,
    eSearchDirection      := eSearchDirection,
    ipResultVisualization := ipResultVisualization,
    ipScanLineInfo        := ipScanLineInfo,
    ipContour             := ipContour,
    hrPrev                := hr,
    fAngleDeg             => fAngleDeg);

Required License

TC3 Vision Code Quality

System Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT V3.1.4024.59 or later

PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU

Tc3_Vision