F_VN_DetectBarcodesWalsh
Detect barcodes using the Walsh transform.
Can use available TwinCAT Job Tasks for executing parallel code regions.
Syntax
Definition:
FUNCTION F_VN_DetectBarcodesWalsh : HRESULT
VAR_INPUT
ipSrcImage : ITcVnImage;
ipBarcodes : Reference To ITcVnContainer;
eOptions : UDINT;
END_VAR
VAR_IN_OUT
stParams : TcVnParamsWalshBarcodeDetection;
END_VAR
VAR_INPUT
hrPrev : HRESULT;
END_VARInputs
|
Name |
Type |
Description |
|---|---|---|
|
ipSrcImage |
Source image | |
|
ipBarcodes |
Reference To ITcVnContainer |
Returns the code positions as rotated rectangles (ContainerType_Vector_TcVnRotatedRectangle; Non-zero interface pointers are reused.) |
|
eOptions |
UDINT |
General flags controlling the detection process. (see ETcVnDetectBarcodesWalshOptions; default: TCVN_DBWO_HORIZONTAL) |
|
hrPrev |
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) |
In/Outputs
|
Name |
Type |
Description |
|---|---|---|
|
stParams |
Parameters for configuring the individual detection steps. |
Weiterführende Informationen
Die Funktion F_VN_DetectBarcodesWalsh lokalisiert Barcodes (1D-Codes) in einem Bild auf Basis der Walsh-Transformation und gibt deren Position und Ausrichtung zurück. Im Gegensatz zu den Code-Reading Funktionen findet hierbei keine Dekodierung des Code-Inhalts statt, sondern die Funktion dient als eine Vorlokalisierung der Code-Regionen.
Diese Code-Regionen können im nächsten Schritt mit den entsprechenden Code-Reading Funktionen dekodiert werden. Aufgrund der vorgegebenen Region reduziert sich die Ausführungszeit, da die Lokalisierung des Codes auf einen kleinen Bildbereich beschränkt wird. Dies ermöglich auch die direkte Verwendung der Code-Reading Funktionen, die eine vorgegebene ROI benötigen.
Im Vergleich zur neuronalen Code-Erkennung mit F_VN_DetectCodesNeuralNetwork bietet die Walsh-basierte Detektion in vielen Szenarien eine kürzere Ausführungszeit, kann jedoch ausschließlich Barcodes (1D-Codes) erkennen. Ob die Funktion tatsächlich schneller ist, hängt von der Wahl der Parameter und vom Bildinhalt ab.
Parameter
ipSrcImage
Das Eingangsbild ipSrcImage muss vom Typ USINT oder SINT sein.
ipBarcodes
Der Parameter ipBarcodes gibt die lokalisierten Barcode-Positionen als Container vom Typ ContainerType_Vector_TcVnRotatedRectangle zurück.
eOptions
Der Parameter eOptions vom Typ ETcVnDetectBarcodesWalshOptions legt fest, in welchen Orientierungen nach Barcodes gesucht wird. Mehrere Werte lassen sich per OR-Verknüpfung kombinieren. Standardwert: TCVN_DBWO_HORIZONTAL.
TCVN_DBWO_HORIZONTAL: Suche nach horizontal ausgerichteten BarcodesTCVN_DBWO_VERTICAL: Suche nach vertikal ausgerichteten BarcodesTCVN_DBWO_DIAGONAL_45: Suche nach um 45° rotierten BarcodesTCVN_DBWO_DIAGONAL_135: Suche nach um 135° rotierten BarcodesTCVN_DBWO_ALL_DIRECTIONS: Suche nach beliebig rotierten Barcodes
Ist die Orientierung der Barcodes in der Anwendung bekannt, empfiehlt es sich, nur die relevante Option zu setzen, da jede zusätzliche Suchrichtung die Rechenzeit erhöht. TCVN_DBWO_ALL_DIRECTIONS bietet die höchste Robustheit bei unbekannter Orientierung, ist jedoch entsprechend rechenintensiver.
stParams
Der Parameter stParams vom Typ TcVnParamsWalshBarcodeDetection konfiguriert die einzelnen Schritte der Barcode-Detektion. Die Code-Parameter können mithilfe von F_VN_AnalyzeBarcodeWalsh automatisch aus einem Referenzbild geschätzt werden.
Code-Parameter:
Die folgenden Parameter beschreiben die charakteristischen Eigenschaften der zu erkennenden Barcodes und werden typischerweise durch F_VN_AnalyzeBarcodeWalsh geschätzt:
nMaxBarDistance(Standard: 8): Maximaler Abstand zwischen zwei aufeinanderfolgenden dunklen oder hellen Balken in Pixeln. Sollte der maximalen Lückenbreite im Barcode entsprechen.fMinAspectRatio(Standard: 1.0) /fMaxAspectRatio(Standard: 5.0): Minimales und maximales Seitenverhältnis (Breite / Höhe) gültiger Code-Regionen.nIntensityDifference(Standard: 100): Mittlere Intensitätsdifferenz zwischen dunklen und hellen Code-Pixeln.nMinArea(Standard: -1): Erwartete minimale Code-Fläche in Pixeln. Der Wert -1 aktiviert eine automatische Schätzung basierend auf nMaxBarDistance.nChannelIndex(Standard: -1): Farbkanal für die interne Verarbeitung. Der Wert -1 aktiviert eine automatische Graustufen-Konvertierung: 3-kanalige Bilder werden als RGB, 4-kanalige als RGBA interpretiert; bei einer anderen Kanalanzahl wird der erste Kanal (Index 0) verwendet.
Für Farbbilder, bei denen Barcode und Hintergrund in einem einzelnen Kanal besonders kontrastreich sind, kann ein explizit gewählter Kanal die Detektionsrobustheit gegenüber der automatischen Konvertierung verbessern.
Beispiel: Bei einem roten Barcode auf blauem Hintergrund liefert Kanal 0 (Rot) den höchsten Kontrast, da der rote Barcode dort hell erscheint und der blaue Hintergrund dunkel, während die automatische Graustufen-Konvertierung diesen Kontrast durch die Mischung aller Kanäle abschwächt.
Filter-Parameter:
Die folgenden Parameter steuern Performance und Robustheit der Detektion
nWalshFilterNum(Standard: 5): Anzahl der verwendeten Walsh-Filter. Höhere Werte können die Erkennungsqualität verbessern, erhöhen jedoch die Rechenzeit. Werte zwischen 2 und 7 liefern in der Praxis gute Ergebnisse. Die Rechenzeit skaliert nicht linear mit der Filteranzahl: An den Grenzen 2n (also bei 2, 4, 8, ...) steigt die interne Kernel-Ordnung sprungartig. Eine Reduktion knapp unter eine solche Grenze (z. B. von 4 auf 3) kann daher einen überproportionalen Geschwindigkeitsgewinn bringen.fOutlierReductionFactor(Standard: 1.0): Unterdrückt störende Bildstrukturen wie Text, Logos oder Matrix-Codes, die zusammen mit Barcodes im Bild auftreten. Höhere Werte verstärken die Unterdrückung; zu hohe Werte können jedoch auch Barcode-Pixel abschwächen.fBarConnectionFactor(Standard: 1.0): Schließt Lücken zwischen Barcode-Streifensegmenten, die z. B. durch Beleuchtungsartefakte oder Reflexionen entstehen. Höhere Werte überbrücken breitere Lücken, können aber unerwünschte Bildbereiche miteinander verbinden.fRegionFilterFactor(Standard: 1.0): Entfernt kleine störende Bildregionen. Höhere Werte entfernen größere Störregionen, erhöhen aber die Rechenzeit und können die Form der Barcode-Regionen beeinflussen. Im Normalfall ist der Standardwert ausreichend.fPostProcessingResizeFactor(Standard: 0.5): Skalierungsfaktor vor der Nachverarbeitung. Kleinere Werte reduzieren die Rechenzeit, können aber die Detektionsqualität verschlechtern.eInterpolationType(Standard:TCVN_IT_BILINEAR): Interpolationsverfahren für die interne Bildskalierung. Für die meisten Anwendungen wirdTCVN_IT_BILINEARempfohlen.
Required License
TC3 Vision Code Reading
System Requirements
Development environment | Target platform | PLC libraries to include |
|---|---|---|
TwinCAT V3.1.4024.59 or later | PC or CX (x64) with min. PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |