| Operatoren |
find_1d_bar_code — Einen Barcode in einem Bild finden.
find_1d_bar_code ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt. Neue Applikationen zum Lesen von Barcode-Symbologien sollten stattdessen die Funktionalitäten im Kapitel Identifizierung / Barcode verwenden (siehe find_bar_code).
find_1d_bar_code(Image : CodeRegion : BarCodeDescr, GenericName, GenericValue : BarcodeFound, BarCodeElements, Orientation)
find_1d_bar_code sucht einen Barcode in einem Bild. Übergeben wird die Barcode Beschreibung die mit gen_1d_bar_code_descr oder gen_1d_bar_code_descr_gen erzeugt wurde. Hierdurch wird festgelegt, welche Art von Barcode gefunden werden soll.
Als Ergebnis werden die Dicken der Elemente und die Orientierung des Barcodes zurückgegeben. Zusätzlich erhält man die Region, in der der Barcode liegt. Falls ein Barcode gefunden wurde, liefert BarcodeFound den Wert 1, sonst 0.
Zur Steuerung der internen Bildverarbeitung können über die Parameter GenericName und GenericValue gezielt Steuerparameter übergeben werden. Dies geschieht, indem bei GenericName die Liste der Namen der Parameter als Strings übergeben werden. Bei GenericValue werden die zugehörigen Werte an den gleichen Indexpositionen übergeben. Normalerweise ist es nicht nötig, die Werte zu ändern. Dies ist nur bei schwierigen Aufnahmebedingungen oder bei speziellen Barcodes empfohlen. Im Einzelnen handelt es sich hierbei um folgende Werte:
Mindestamplitude für die Kantensuche: Die Barcode-Suche basiert im ersten Schritt auf dem Sobelfilter. Dies hat gegenüber einem Schwellenwertverfahren den Vorteil, dass das Bild ungleichmäßig ausgeleuchtet sein kann. Im Falle eines sehr schlechten Kontrastes (Unterschied zwischen hellen und dunklen Elementen des Barcodes) kann dieser Wert kleiner gewählt werden, um alle Teile zu finden. Falls der Kontrast sehr gut ist, kann der Wert auch größer gewählt werden, um die Laufzeit zu verbessern. Die Wirkung kann mit dem Operator sobel_dir mit dem Kantentyp 'sum_abs' getestet werden.
Vorbesetzung: 70
Verwendung: Suche der Barcode-Region
Bei der Analyse von Objekten, die (Teile von) Elemente(n) sein können, wird dieser Parameter zum Unterdrücken von sehr kleinen Objekten verwendet. Es ist zu beachten, dass bei schlechter Bildqualität ein Element zunächst in mehrere Bruchstücke zerfallen kann. Der Parameter muss hier größer als das kleinste Bruchstück gewählt werden. Bei guter Bildqualität kann der Wert erhöht werden. Dies verbessert die Laufzeit. Der Wert muss aber immer kleiner als die Länge eines Elementes (in Pixeln) sein. Ist der Wert zu groß, kann der gefundene Barcode unvollständig sein.
Vorbesetzung: 30
Verwendung: Suche der Barcode-Region
Analog zur Mindestgröße von Barcode-Teilen werden mit diesem Parameter zu große Teile unterdrückt. Es ist zu beachten, dass bei geringer Auflösung mehrere Elemente bei der Vorverarbeitung verschmelzen können. Der Wert ist also entsprechend groß zu wählen. Weiterhin sollte der Wert kleiner sein als die Größe des gesamten Barcodes.
Vorbesetzung: 15000
Verwendung: Suche der Barcode-Region
Dieser Parameter hat die gleiche Funktion wie der Parameter 'sum_angles', nur wird er bei der Suche nach Elementen des Barcodes verwendet. Er hat somit Einfluss auf die Schätzung der Ausrichtung der Elemente. Bei schlechten Aufnahmen muss der Wert groß sein. Kleinere Werte haben eine kürzere Laufzeit zur Folge. Der Wert wird in Grad angegeben. Dieser Parameter braucht nicht geändert zu werden.
Vorbesetzung: 24
Verwendung: Suche der Barcode-Region
Dieser Wert hat Einfluss auf die Entscheidung, ob eine Region ein Barcode-Element sein kann. Hierzu wird die Orientierung aller Randpunkte eines potentiellen Elementes bestimmt. Wenn genügend Punkte die gleiche Orientierung haben wird die Region als Elementkandidat akzeptiert. Eine Erhöhung des Wertes schränkt die Auswahl stärker ein und verbessert damit die Laufzeit. Um so schlechter die Bildqualität ist, um so kleiner muss der Wert sein.
Vorbesetzung: 50 (Prozent)
Verwendung: Suche der Barcode-Region
Zunächst werden die einzelnen Elemente des Barcodes gesucht, die dann anschließend zu dem gesamten Barcode (CodeRegion) zusammengefasst werden. Hierzu wird der morphologische Operator Closing verwendet. Das Maß der Dilatation wird automatisch geschätzt. Sollte diese Schätzung zu hoch oder zu niedrig sein, kann dies mit dem Parameter korrigiert werden. Dies kann bei Barcodes mit großen Lücken (Wert erhöhen) oder bei Barcodes die zu dicht an anderen Objekten liegen (Wert erniedrigen) nötig sein. Der Parameter ist unabhängig von der Bildqualität.
Vorbesetzung: 1
Verwendung: Suche der Barcode-Region
Dieser Parameter wird für die abschließende Bestimmung der Orientierung des Barcodes verwendet (Wert von Orientation). Hierzu werden alle Kantenrichtungen, die innerhalb des Barcodes auftreten, bestimmt. Zunächst wird die häufigste Orientierung bestimmt. Unter Miteinbeziehung der Nachbarorientierungen wird das Ergebnis durch Mittelung berechnet. Mit dem Parameter wird der Winkelbereich der mit einbezogenen Nachbarorientierungen festlegt. Der Wert wird in Grad angegeben. Dieser Parameter braucht nicht geändert zu werden.
Vorbesetzung: 40
Verwendung: Suche der Barcode-Region
Dieser Wert dient zur abschließenden Beurteilung der potentiellen Barcode-Region. Der Parameter gibt die Mindestfläche der Gesamtregion vor. Werden zu kleine Regionen gefunden, kann dieser Wert erhöht werden. Der Parameter ist dann von Bedeutung, wenn kleine Regionen mit gleicher Ausrichtung wie die Barcode-Elemente im Bild vorhanden sind. Der Parameter ist unabhängig von der Bildqualität.
Vorbesetzung: 1000
Verwendung: Suche der Barcode-Region
Für die Extraktion der Barcode-Elemente werden die Grauwerte der Barcode-Region in Richtung der Elemente projeziert. Die so erhaltenen Daten werden vor der Dickenbestimmung geglättet. Bei großen Abständen zwischen den Elementen kann die Glättung erhöht werden, um Scheinstrukturen zu unterdrücken. Der Wert sollte auf jeden Fall größer als 0.5 sein.
Vorbesetzung: 0.7
Verwendung: Suche der Barcode-Region
Für die Extraktion der Barcode-Elemente werden die Grauwerte der Barcode-Region in Richtung der Elemente projeziert. Mit diesem Wert kann die Richtung der Elemente vorgegeben werden. Die Richtung wir in Grad angegeben -360 bis +360.
Vorbesetzung: Keine Auswahl
Verwendung: Suche der Barcode-Region
Für die Extraktion der Barcode-Elemente werden die Grauwerte der Barcode-Region in Richtung der Elemente projeziert. Mit diesem Wert kann die Toleranz für die Richtung der Elemente eingestellt werden. Der Wert wird zu 'element_orientation' addiert, bzw. subtrahiert.
Vorbesetzung: 10
Verwendung: Extraktion der Elementdicken
Bei der Bestimmung der Elementdicken aus den Grauwertprojektionen bestimmt dieser Parameter die Mindestamplitude (Grauwertunterschiede) bei den Übergängen von Hell nach Dunkel und Dunkel nach Hell. Bei starken Störungen (Flecken) kann dieser Wert erhöht werden, um Scheinstrukturen zu unterdrücken. Bei sehr schwachen Kontrasten (z.B. bei einer geringen Auflösung und sehr dünnen Elementen) muss der Wert klein sein.
Vorbesetzung: 3
Verwendung: Extraktion der Elementdicken
Die Grauwertprojektionen werden nur in einem inneren Bereich der Barcode-Region entlang meherer Linien bestimmt (siehe unten). Der Parameter gibt die halbe Breite des Bereiches an, der zur Berechnung der Grauwertprojektionen verwendet wird. Falls der Winkel der Barcode-Region nicht gut geschätzt wird, sollte dieser Wert klein sein. Falls Störungen im Barcode auftreten (z.B. Kratzer, Flecken), kann dieser Wert erhöht werden, um diese Störungen zu überbrücken. Bei sehr schmalen Barcodes sollte der Wert klein gewählt werden.
Vorbesetzung: 5
Verwendung: Extraktion der Elementdicken
Da die Barcode-Region manchmal zu kurz extrahiert wird, verlängert dieser Parameter die Region in beide Richtungen um den angegebenen Betrag in Pixeln. Falls andere Objekte in der Nähe des Barodes liegen, kann dies zu einer Extraktion von falschen Elementen führen. In diesem Fall sollte der Wert verkleinert werden. Werden die Anfangs- und Endelemente nicht gefunden, ist der Wert zu erhöhen.
Vorbesetzung: 5
Verwendung: Extraktion der Elementdicken
Mit diesem Parameter wird die Art der Grauwertinterpolation bei der Grauwertprojektion festgelegt. Bei einem Wert von 1 wird eine bilineare Interpolation verwendet. Bei dem Wert 0 wird keine Interpolation verwendet. Ohne Interpolation ist die Berechnung schneller, jedoch ist die Qualität nicht so gut und es kann zu Fehlmessungen kommen.
Vorbesetzung: 1
Verwendung: Extraktion der Elementdicken
Dieser Wert bestimmt die maximale Anzahl von Linien, entlang derer versucht wird, den Barcode zu extrahieren. Der Wert sollte relativ groß gewählt werden, falls zu erwarten ist, dass stark gestörte Barcodes gelesen werden müssen. Falls 'num_scanlines' auf einen Wert größer als 1 gesetzt wird, wird der Wert von 'width_project' mit 5 vorbesetzt, andernfalls mit 25. Diese Vorbesetzung dient dazu, auch mit einer einzigen Linie die Erkennung des Barcodes robuster zu machen.
Vorbesetzung: 9
Verwendung: Extraktion der Elementdicken
Dieser Wert dient dazu, eventuell in der Umbebung des Barcodes extrahierte, zu den Strichen des Barcodes parallele Elemente zu eliminieren, und so eine korrekte Dekodierung zu ermöglichen. Der Wert gilt für beide Enden des Barcodes getrennt, so dass insgesamt 2*'max_extra_elements' Elemente (Striche und Lücken) eliminiert werden können. Auf jeder Seite des Barcodes können also bis zu 'max_extra_elements'/2 Striche eliminiert werden.
Vorbesetzung: 6
Verwendung: Extraktion der Elementdicken
Es ist zu beachten, dass die beschriebenen Parameter im Normalfall nicht verändert werden sollten. Eine Veränderung erfordert Erfahrung in der Bildverarbeitung.
Bild, das Barcode enthält.
Region des Barcode.
Beschreibung eines Barcode-Typs
Namen der optionalen Steuerparameter.
Defaultwert: []
Werteliste: 'add_length_project', 'amplitude_project', 'amplitude_sobel', 'angle_range', 'correct_angle', 'dilation_factor', 'element_orientation', 'element_orientation_tolerance', 'interpolation_project', 'max_extra_elements', 'max_size_element', 'min_size_element', 'num_scanlines', 'sigma_project', 'sum_angles', 'width_project'
Wert der optionalen Steuerparameter.
Defaultwert: []
Information ob der Barcode gefunden wurde.
Werteliste: 0, 1
Breiten der Elemente.
Orientierung des Barcodes.
HTuple empty; // empty list of values
HTuple BarCodeDescr;
HTuple BarcodeFound,Elements,Orientation;
HTuple Characters,Reference,IsCorrect;
Hobject Image,CodeRegion;
gen_1d_bar_code_descr("EAN 13",13,13,&BarCodeDescr);
find_1d_bar_code(Image,&CodeRegion,BarCodeDescr,empty,empty,
&BarcodeFound,&Elements,&Orientation);
if (BarcodeFound[0].l)
{
decode_1d_bar_code(Elements,BarCodeDescr,
&Characters,&Reference,&IsCorrect);
if (IsCorrect[0].l)
for (int i=0; i<Characters.Num(); i++)
{
char *value = Characters[i];
}
}
find_1d_bar_code liefert den Wert 2 (H_MSG_TRUE), sofern die die Parameter korrekt sind.
Bar Code
| Operatoren |