-
Die vorliegende Erfindung betrifft
ein Verfahren zum Erkennen und Lesen eines an einem Objekt vorgesehenen,
aus einer Anzahl von Codeelementen bestehenden Strichcodes nach
dem Oberbegriff des Anspruchs 1. Weiterhin ist die Erfindung auf
eine Vorrichtung zum Durchführen
dieses Verfahrens gerichtet.
-
Strichcodes werden üblicherweise
jeweils an ihrem Anfang und Ende durch sogenannte Weißzonen, d.h.
Bereiche ohne Aufdruck, abgeschlossen. Durch diese Weißzonen,
die eine bestimmte Mindestausdehnung besitzen, ist, oftmals auch
in Verbindung mit Start- und Stoppmarkierungen, gewährleistet,
daß übliche Dekodierverfahren
den Anfang bzw. das Ende eines Strichcodes erkennen und somit gezielt
ausschließlich Strichcodeinformation
und nicht Streudruckinformation, d.h. fälschlicherweise als Codeelemente
interpretierte, auf dem Objekt aufgedruckte Elemente, zu dekodieren
versuchen.
-
Aufgrund von Platzproblemen auf dem
Objekt kann jedoch nicht in allen Fällen gewährleistet werden, daß ein Strichcode
normgerecht mit Weißzonen
abgeschlossen wird. Darüber
hinaus kann bei einem schrägen Überstreichen
eines Strichcodes mit einem Abtaststrahl nicht davon ausgegangen
werden, daß beim Überstreichen
des Strichcodes auch eine eventuell vorhandene Weißzone mit überstrichen
wird. Somit ist auch in diesen Fällen
eine Unterscheidung zwischen Streudruck und Strichcode nicht durch
Erkennen einer Weißzone möglich.
-
Aus der
DE 195 34 009 A1 sind ein
Verfahren und eine Vorrichtung zum Erkennen und Lesen von Strichcodes
bekannt, bei denen zum Erkennen eines Barcodes nach linienförmigen Strukturen
gesucht und anschließend
die Anzahl der gefundenen Linien ermittelt sowie geprüft wird,
ob eine Mindestanzahl für
einen Barcode erreicht ist.
-
Aus der
EP 0 353 842 A2 ist ein
Verfahren zum Erkennen und Lesen eines Barcodes bekannt, bei dem die Überprüfung auf
einen vorliegenden Barcode durch einen Vergleich der Balkenbreiten
erfolgt.
-
Aus der
US 5,270,525 A sind ein Verfahren
sowie eine Vorrichtung zum Lesen eines Strichcodes bekannt, wobei überstrichene
Codeelemente je nach Dicke in unterschiedliche Klassen eingeteilt
werden, um dadurch die Erkennungsgenauigkeit zu erhöhen.
-
Aus der
US 5,343,028 A ist ein Verfahren
zum Lesen eines Strichcodes bekannt, bei dem zur Verbesserung der
Decodiereigenschaft ein Histogramm von Pixelintensitäten von
erfassten Codeelementen erzeugt wird.
-
Aufgabe der Erfindung ist es, ein
Verfahren und eine Vorrichtung der eingangs genannten Art anzugeben,
bei dem abgetastete Strichcodes bzw. Strichcodeabschnitte mit hoher
-
Wahrscheinlichkeit erkannt und von
abgetastetem Streudruck unterschieden werden können, auch wenn beim Abtasten
keine Weißzone
von dem Abtaststrahl überstrichen
wird.
-
Diese Aufgabe wird erfindungsgemäß durch
ein Verfahren mit den Merkmalen des Anspruchs 1 und eine Vorrichtung
mit den Merkmalen des Anspruchs 21 gelöst.
-
Die Erfindung geht von der grundsätzlichen Überlegung
aus, daß die
Breiten der Codeelemente innerhalb eines zu erkennenden Strichcodes
nur bestimmte, bekannte Werte annehmen können. Als Codeelemente werden
dabei sowohl Balken als auch Lücken
eines Strichcodes bezeichnet. Bei einem Zweibreitencode, bei dem
der Strichcode aus Codeelementen mit zwei unterschiedlichen Breiten
besteht, können
somit bei einer idealen Abtastung, d.h. ohne Druckverzerrungen oder
Verschmutzungen, bei einer Bestimmung der Breiten der abgetasteten
Codeelemente nur zwei unterschiedliche Sollbreiten ermittelt werden.
Entsprechendes gilt für
einen Dreibreitencode, bei dem im Idealfall lediglich drei unterschiedliche
Sollbreiten der abgetasteten Codeelemente ermittelbar sind, usw.
-
Demgegenüber besitzen Elemente, die
nicht Teil eines Strichcodes sind, sondern Streudruck darstellen,
beispielsweise gedruckter Text oder sonstige Zeichen, beliebige,
unterschiedliche Breiten, so daß die
bei einer Abtastung ermittelten Breiten dieser Elemente völlig beliebig
sind.
-
Mit dem erfindungsgemäßen Verfahren
wird während
einer Abtastung jeweils für
die abgetasteten, erkannten Elemente ein für die Breite des Elements in
Abta strichtung repräsentativer
Breitenindex bestimmt, der auch direkt durch die Breite des Elements
selbst gegeben sein kann. Anschließend wird die Häufigkeit
des Auftretens der ermittelten Breitenindexe in einer Häufigkeitsverteilung,
einem sogenannten Histogramm, bestimmt, aus der auf das Vorliegen
eines Strichcodes geschlossen werden kann. Handelt es sich bei den
abgetasteten Elementen ausschließlich um Codeelemente eines
Strichcodes, so besitzt die Häufigkeitsverteilung im
Idealfall ausschließlich
bei den die Sollbreiten des jeweiligen Strichcodetyps kennzeichnenden
Werten Maxima, während
zwischen diesen Maxima die Häufigkeitsverteilung
gleich Null ist. Im Realfall werden die ermittelten Breitenindexe
vorwiegend um die Sollbreiten herum angeordnet sein, während im
Bereich zwischen den Sollbreiten nur, durch Fehler im Druckbild
oder sonstige Störeinflüsse bedingt,
einzelne ermittelte Breitenindexe auftreten.
-
Trotz der in der Realität auftretenden
Unsauberkeiten im Druckbild unterscheidet sich die Häufigkeitsverteilung
der Breitenindexe eines Strichcodes deutlich von der Häufigkeitsverteilung
der Breitenindexe eines Streudrucks, die üblicherweise keine ausgeprägten Maxima,
sondern einen relativ gleichmäßigen Verlauf
besitzt.
-
Um eine einfache Auswertung der abgetasteten
Elemente zu ermöglichen,
werden in einer bevorzugten Ausführungsform
der Erfindung die Breitenindexe aus einer Vielzahl von vorgegebenen,
diskreten Werten gewählt.
Dadurch wird erreicht, daß die
in der Praxis auftretenden Schwankungen der ermittelten Breitenindexe,
die beispielsweise durch unsauberen Druck bedingt sein können, nicht
zu einer unüberschaubaren
Vielzahl von unterschiedlichen, zu vergleichenden Breitenindexen
führen,
sondern daß beispielsweise
durch Rundung auf den nächsten
vorgegebenen, diskreten Wert eine begrenzte Anzahl von ermittelten
Breitenindexen bezüglich
der Sollbreiten des zu erkennenden Strichcodes überprüft werden müssen.
-
Bevorzugt kann während einer Abtastung die Zeitdauer
für das Überstreichen
eines Elements und aus dieser Zeitdauer der Breitenindex für dieses
Element bestimmt werden. Durch die Messung der Zeitdauer ist eine
einfache Bestimmung der Breitenindexe für die abgetasteten Elemente
möglich.
Dabei kann insbesondere die Bestimmung der Zeitdauer durch Zählen eines
Taktsignals erfolgen, wobei als Breitenindex jeweils die Anzahl
der Taktsignale, die während
des Abtasten eines Elements gezählt
werden, verwendet wird. In diesem Fall erfolgt somit keine direkte
Bestimmung der Breiten der abgetasteten Elemente, da Elementen mit
unterschiedlichen Breiten, während
derer Abtastung jedoch die gleiche Anzahl von Taktsignalen gezählt werden, der
gleiche Breitenindex zugewiesen wird. Durch eine sorgfältige Wahl
der Taktrate kann erreicht werden, daß zum einen Elemente, die im
wesentlichen die gleiche Breite aufweisen, den gleichen Breitenindex
zugewiesen bekommen, während
gleichzeitig Unterschiede in den erfaßten Elementbreiten, die lediglich
durch Störeinflüsse oder
fehlerhaften Druck bedingt sind, eliminiert werden.
-
Ist die Abtastgeschwindigkeit sowie
die Breite der Codeelemente des zu erkennenden Strichcodes bekannt,
so kann die Anzahl der Taktsignale, die jeweils während der
Abtastung eines Codeelements gezählt werden,
vorab bestimmt werden und jeweils als Sollbreitenindex dieser Codeelemente
abgespeichert werden. Beim Abtasten des zu überprüfenden Objekts können dann
die tatsächlich
ermittelten Breitenindexe mit den für die Codeelemente abgespeicherten
Sollbreitenindexen verglichen werden.
-
Erfindungsgemäß erfolgt die Bestimmung der
Breitenindexe jeweils für
eine ein Abtastfenster definierende Anzahl aufeinanderfolgender
Elemente, deren Gesamtbreite kürzer
ist als die Lauflänge
des zu erkennenden Strichcodes. Die Unterteilung einer Abtastung
in unterschiedliche Abtastfenster hat den Vorteil, daß, wenn
das Abtastfenster klein genug gewählt wird, auch beim schrägen Überstreichen
eines Strichcodes ausschließlich
Codeelemente des Strichcodes und kein Streudruck erfaßt und ausgewertet
werden. Dabei ist die Länge
des Abtastfensters durch zwei gegensätzliche Randbedingungen festzulegen.
Zum einen ist das Abtastfenster möglichst groß zu wählen, damit die Wahrscheinlichkeit,
daß in
dem Abtastfenster erfaßter
Streudruck ausschließlich
Elemente enthält,
deren Breiten den Breiten der Codeelemente des zu erfassenden Strichcodes
entsprechen, möglichst
gering gehalten wird. Zum anderen muß die Länge des Abtastfensters möglichst
klein gehalten werden, damit auch bei einer sehr schrägen Abtastung
des Strichcodes keine in Laufrichtung des Strichcodes seitlich angeordneten
Streudruckelemente in dem Abtastfenster zu liegen kommen und dadurch
die Auswertung innerhalb des Abtastfensters verfälschen. Je nach Anwendung muß die Länge des
Abtastfensters zwischen der Gesamtlauflänge des zu erkennenden Strichcodes
und beispielsweise einem Zehntel dieses Wertes gewählt werden.
-
Bevorzugt erfolgt eine Dekodierung
des abgetasteten Strichcodes, wenn in mindestens zwei aufeinanderfolgenden
Abtastfenstern das Vorhandensein eines Strichcodes erkannt wird.
Durch die Aneinanderreihung mehrerer, aufeinanderfolgender Abtastfenster
wird die Wahrscheinlichkeit für
das sichere Erkennen eines Strichcodes erhöht. Auf diese Weise können die
Abtastfenster relativ klein gewählt
werden, da Streudruck, der fälschlicherweise
innerhalb eines Abtastfensters als Strichcodeabschnitt eingestuft
wird, nicht unmittelbar zu einer Fehlbewertung führt. Nur wenn in einer gewissen
Anzahl von sich daran anschließenden
Abtastfenstern ebenfalls die abgetasteten Elemente als Codeelemente
eines Strichcodes eingestuft werden, werden die in den aufeinanderfolgenden
Abtastfenstern erkannten Elemente als Codeelemente interpretiert
und entsprechend dekodiert. Grundsätzlich ist es jedoch auch möglich, eine
Dekodierung des abgetasteten Strichcodes bereits durchzuführen, wenn
in einem einzigen Abtastfenster das Vorhandensein eines Strichcodes
erkannt wird. Das Abtastfenster kann dabei eines von mehreren aufeinanderfolgenden
Abtastfenstern oder auch das einzige Abtastfenster innerhalb einer
Abtastung darstellen.
-
Nach einer weiteren bevorzugten Ausführungsform
der Erfindung werden die innerhalb des Abtastfensters liegenden
Elemente als Codeelemente eines Strichcodes erkannt, wenn die Anzahl
der ermittelten Breitenindexe, die jeweils in einem vorgegebenen
Bereich um die Sollbreitenindexe der Codeelemente liegen, deutlich
größer ist
als die Anzahl der ermittelten Breitenindexe, die außerhalb dieser
Bereiche liegen. Durch den Vergleich der ermittelten Breitenindexe
nicht nur mit den Sollbreitenindexen der Codeelemente, sondern mit
Werten innerhalb eines Bereichs um die Sollbreitenindexe herum ist
gewährleistet,
daß auch
Codeelemente, deren tatsächliche
Breite etwas von ihrer Normbreite abweicht, wie es beispielsweise
bei Druckverzerrungen durch verlaufende Tinte der Fall ist, korrekt
als Codeelemente und nicht als Streudruck interpretiert werden.
Dabei wird gleichzeitig durch den Vergleich der Anzahl der ermittelten
Breitenindexe innerhalb und außerhalb
der vorgegebenen Bereiche Fehlern im Druckbild eines Strichcodes,
die beispielsweise durch Verschmutzung oder schlechte Druckqualität entstehen
können,
Rechnung getragen.
-
Nach der Erfindung wird als Kennzeichen
für das
Vorhandensein eines Strichcodes ein Gütekriterium G bestimmt, wobei
die abgetasteten Elemente als Codeelemente eines Strichcodes erkannt
werden, wenn das Gütekriterium
G einen vorgegebenen Schwellenwert erreicht bzw. überschreitet.
Bei entsprechender Wahl des Gütekriteriums
können
die abgetasteten Elemente als Codeelemente eines Strichcodes erkannt
werden, wenn das Gütekriterium
G einen vorgegebenen Schwellenwert nicht über, sondern unterschreitet.
-
Durch die Verwendung eines Gütekriteriums
ist eine einfache, automatische Auswertung der ermittelten Breitenindexe
möglich.
Bevorzugt wird das Gütekriterium
G dabei durch folgende Formel bestimmt:
-
Dabei gibt h(x) die Häufigkeitsverteilung
der ermittelten Breitenindexe und f(x) eine Bewertungsfunktion für h(x) an.
-
Die Bewertungsfunktion f(x) ist dabei
so zu wählen,
daß in
vorgegebenen Bereichen um die Sollbreitenindexe der Codeelemente
herum ermittelte Breitenindexe eine hohe Bewertung, beispielsweise
durch Multiplikation mit einem hohen Faktor, erhalten, während zwischen
diesen Bereichen liegende Breitenindexe gering bewertet, beispielsweise
mit 0 multipliziert werden.
-
Die genaue Form der Bewertungsfunktion
f(x) kann dabei in vielfältiger
Weise gewählt
werden, wobei der optimale Verlauf von f(x) beispielsweise in einem
Teach-in-Verfahren eingelernt werden kann. Dazu können unterschiedliche
Bewertungsfunktionen während
des Lernverfahrens eingesetzt und die jeweils ermittelten Ergebnisse
für eine
Vielzahl von abgetasteten Strichcodes verglichen werden. Die Bewertungsfunktion,
mit der die höchste
Erkennungsrate erzielt wird, kann dann als Standardbewertungsfunktion
abgespeichert werden.
-
Beispielsweise kann als Bewertungsfunktion
f(x) gewählt
werden zu
wobei a eine beliebige Zahl
ungleich Null, insbesondere a = 1, y und z beliebige Zahlen, n die
Anzahl der unterschiedlichen Sollbreitenindexe der Codeelemente
des zu erkennenden Strichcodes und x
Si jeweils
die unterschiedlichen Sollbreitenindexe eines Codeelements des zu
erkennenden Strichcodes sind.
-
Durch die Bewertungsfunktion f(x)
werden somit ermittelte Breitenindexe, die innerhalb eines vorgegebenen
Bereichs um die Sollbreitenindexe der Codeelemente des Strichcodes
herum liegen, mit dem Wert a, insbesondere mit 1, bewertet, während die
zwischen diesen Bereichen liegenden, ermittelten Breitenindexe mit
Null multipliziert und damit ausgeblendet werden. Anstelle dieser
rechteckförmigen
Pulse um die Sollbreitenindexe herum können beispielsweise auch gaußförmige Pulse
oder sonstige geeignete Verläufe
verwendet werden.
-
Bei g(x) handelt es sich im wesentlichen
um das Komplement von f(x), durch die die innerhalb der um die Sollbreitenindexe
liegenden Bereiche ermittelten Breitenindexe gering bewertet bzw.
beispielsweise durch Multiplikation mit 0 ausgeblendet werden, wohingegen
die zwischen diesen Bereichen ermittelten Breiten indexe hoch, beispielsweise
durch Multiplikation mit einem hohen Bewertungsfaktor, bewertet
werden.
-
Beispielsweise kann g(x) gewählt werden
zu
wobei insbesondere b = a
gewählt
wird. Somit werden durch die Funktion g(x) die innerhalb der Bereiche
um die Sollbreitenindexe der Codeelemente liegenden, ermittelten
Breitenindexe durch Multiplikation mit 0 ausgeblendet, während die
dazwischenliegenden, ermittelten Breitenindexe mit dem Wert b, insbesondere
mit 1, multipliziert werden.
-
Da es sich bei L um die Menge der
ermittelten Breitenindexe handelt und N die Zahl der innerhalb eines
Abtastfensters abgetasteten Elemente ist, wird G im Idealfall, wenn
alle ermittelten Breitenindexe innerhalb der vorgegebenen Bereiche
um die Sollbreitenindexe der Codeelemente herum angeordnet sind,
zu 1. Je kleiner die Anzahl der überstrichenen
Elemente ist, deren ermittelten Breitenindexe innerhalb der vorgegebenen
Bereiche angeordnet sind, desto kleiner wird der Wert des Gütekriteriums
G. Somit ist das Gütekriterium G
ein Maß für die Wahrscheinlichkeit
des Vorliegens eines Strichcodes während einer Abtastung.
-
Wird nach einer weiteren Ausführungsform
der Erfindung das Gütekriterium
G durch die Formel
bestimmt, so steigt auch
hier mit zunehmendem Wert des Gütekriteriums
G die Wahrscheinlichkeit, daß innerhalb
des Abtastfensters ein Strichcode abgetastet wurde. Im Idealfall
geht hier das Gütekriterium
gegen unendlich.
-
Nach einer weiteren bevorzugten Ausführungsform
der Erfindung wird anstelle des Breitenindexes eines abgetasteten
Elements das Verhältnis
der Breitenindexe des abgetasteten Elements zu dem sich daran anschließenden oder
dem vorhergehenden Element verwendet. Weiterhin werden anstelle
der Sollbreitenindexe eines Codeelements die Verhältnisse
der Sollbreitenindexe der Codeelemente des zu erkennenden Strichcodes
verwendet. Durch die Auswertung der Verhältnisse der Breitenindexe zweier
aufeinanderfolgender, abgetasteter Elemente wird erreicht, daß sich die
Maxima der ermittelten Häufigkeitsverteilung
der Breitenindexe unabhängig
von der Abtastgeschwindigkeit, dem Leseabstand sowie dem Druckmaßstab des Strichcodes,
d.h. der tatsächlichen
Breite der gedruckten Codeelemente, an bestimmten, fest vorgegebenen Positionen
innerhalb der Häufigkeitsverteilung
angeordnet sind. So liegen die Maxima beispielsweise bei einem Zweibreitencode
mit Druckverhältnis
3:1, bei dem die Codeelemente eine einfache bzw. eine dreifache Einheitsbreite
besitzen, bei den Werten 1/3 = 0,33, 1/1 = 1 und 3/1 = 3.
-
Nach einer weiteren bevorzugten Ausführungsform
der Erfindung wird anstelle der Breitenindexe der Logarithmus der
Breitenindexe verwendet. Auch durch diese logarithmische Bewertung
der Abszissenwerte des zugehörigen
Histogramms wird eine Unabhängigkeit
von der Abtastgeschwindigkeit, dem Druckmaßstab und dem Leseabstand erreicht.
Insbesondere wird bei einer solchen logarithmischen Bewertung der
Breitenindexe der Abstand zwischen den Maxima der Häufigkeitsverteilung
für unterschiedliche
Elementbreiten bei gleichem Druckverhältnis gleich groß. Da sich
unterschiedliche Abtastgeschwindigkeiten, unterschiedliche Druckmaßstäbe und unterschiedlicher
Leseabstand in unterschiedlichen Breiten und damit unterschiedlichen Breitenindexen
der ermittelten Codeelemente niederschlagen, können durch die logarithmische
Bewertung die Abhängigkeit
von diesen Faktoren eliminiert werden. Auch dadurch ist eine einfachere
Auswertung des ermittelten Histogramms möglich.
-
Weitere vorteilhafte Ausführungsformen
sind in den Unteransprüchen
angegeben.
-
Die Erfindung wird nachfolgend anhand
von Ausführungsbeispielen
unter Bezugnahme auf die Zeichnungen näher beschrieben; in diesen
zeigen:
-
1 die
Häufigkeitsverteilung
der ermittelten Breitenindexe eines Zweibreitencodes,
-
2 die
Häufigkeitsverteilung
der ermittelten Breitenindexe eines Zweibreitencodes mit gegenüber der
in 1 gezeigten Darstellung
geänderten
Breiten der Codeelemente,
-
3 eine
entsprechende Häufigkeitsverteilung
der Breitenindexe bei der Abtastung von Streudruck,
-
4 die
Häufigkeitsverteilung
der Breitenindexe eines Vierbreitencodes,
-
5 die
Häufigkeitsverteilung
nach 2 mit zusätzlich dargestellten
Bewertungsfunktionen,
-
6 die
Häufigkeitsverteilung
nach 4 mit zusätzlich dargestellten
Bewertungsfunktionen,
-
7 eine
Gütefunktion,
die zur Bestimmung der Wahrscheinlichkeit, ob ein Strichcode vorliegt,
verwendet wird,
-
8 die
Häufigkeitsverteilung
nach 1 bei logarithmischer
Bewertung der Abszissenwerte,
-
9 die
Häufigkeitsverteilung
nach 2 bei logarithmischer
Bewertung der Abszissenwerte und
-
10 die
Häufigkeitsverteilung
der Verhältnis
der Breitenindexe zweier aufeinanderfolgender Codeelemente eines
Zweibreitencodes.
-
1 zeigt
in einem Histogramm die Häufigkeitsverteilung
1 der Breitenindexe x eines abgetasteten Zweibreitencodes mit Druckverhältnis 3:1,
d.h. bei dem die Codeelemente Breiten im Verhältnis 3:1 besitzen. Die Breitenindexe
x wurden durch Zählen
von Taktimpulsen, die jeweils während
des Überstreichen
eines Codeelements aufsummiert wurden, ermittelt, wobei die Sollbreitenwerte
sich in vorliegendem Fall zu x1 = 5 und x2 = 15 ergeben.
-
Das Abtastfenster, innerhalb dessen
die abgetasteten Codeelemente ausgewertet wurden, wurde so gewählt, daß N = 30
Elemente abgetastet und jeweils deren Breitenindexe ermittelt wurden.
Gemäß 1 wurden fünfzehn Codeelemente
mit dem Breitenindex 6, drei Codeelemente mit dem Breitenindex 7,
weitere drei Codeelemente mit dem Breitenindex 15, sechs
Codeelemente mit dem Breitenindex 16 und drei Codeelemente
mit dem Breitenindex 17 erkannt. Man erkennt anhand der
Maxima 5 und 6 der Häufigkeitsverteilung 1 deutlich,
daß alle
ermittelten Breitenindexe x um die Sollbreitenindexe x1 und
x2 herum angeordnet sind. Die Abweichungen
der ermittelten Breitenindexe von den Sollbreitenindexen ist dabei
durch Toleranzen im Druck bzw. der Abtastung begründet. Beispielsweise
können
die gedruckten Codeelemente aufgrund eines Verlaufens der Tinte
eine Breite besitzen, die größer als
die Sollbreite ist.
-
2 zeigt
die in einem Histogramm dargestellten Häufigkeitsverteilung 2 eines
Zweibreitencodes, bei dem die Codeelemente Sollbreitenindexe von
x1 = 10 x2 = 30
besitzen, so daß die
Maxima 7 und 8 der Häufigkeitsverteilung 2 nahe
bei diesen Werten liegen. Entsprechend den schmäleren Codeelementen wurden bei
einer Abtastung drei Breitenindexe zu zehn, zwölf Breitenindexe zu elf und
wei tere drei Breitenindexe zu zwölf
Taktimpulsen ermittelt. Entsprechend den breiteren Codeelementen
wurden jeweils drei Breitenindexe zu neunundzwanzig, dreißig, einunddreißig und
zweiunddreißig
Taktimpulsen erkannt.
-
Auch aus 2 ist ersichtlich, daß die ermittelten Breitenindexe
jeweils in Bereichen um die Sollbreitenindexe x1 und
x2 der Codeelemente herum angeordnet sind.
-
Sowohl aus 1 als auch aus 2 ist ersichtlich, daß die Häufigkeitsverteilungen 1 und 2 ausgeprägte Maxima 5, 6, 7, 8 im
Bereich der Sollbreitenindexe x1 und x2 besitzen, während im Bereich zwischen den
Sollbreitenindexen die Häufigkeitsverteilungen 1, 2 jeweils
gleich Null sind.
-
Demgegenüber besitzt das in 3 dargestellte Histogramm,
das die Häufigkeitsverteilung 3 der
bei der Abtastung von Streudruck ermittelten Breitenindexe x darstellt,
keine ausgeprägten
Maxima. Beim Abtasten von Streudruck, bei dem es sich beispielsweise
um Text oder beliebige andere Information handelt, wird eine Vielzahl
von mehr oder weniger gleichmäßig auftretenden
Breitenindexen ermittelt, wodurch sich die in 3 dargestellte Häufigkeitsverteilung 3 ergibt.
-
Man erkennt deutlich den Unterschied
zwischen den bei der Abtastung eines Strichcodes entstehenden Häufigkeitsverteilungen 1 und 2 mit
jeweils zwei ausgeprägten
Maxima gegenüber
der mehr oder weniger gleichmäßig verlaufenden
Häufigkeitsverteilung 3 bei
der Abtastung von Streudruck gemäß 3.
-
Das in 4 dargestellte
Histogramm stellt die Häufigkeitsverteilung 4 der
Breitenindexe x für
einen Vierbreitencode (Code 128) dar. Die Sollbreitenindexe
der Codeelemente betragen x1 = 10, x2 = 20, x3 = 30 und
x4 = 40. Wie bei den Häufigkeitsverteilungen gemäß den 1 und 2 wurde das Abtastfenster so gewählt, daß N = dreißig Codeelemente
erfaßt
und deren Breitenindexe bestimmt wurden.
-
Auch die Häufigkeitsverteilung 4 besitzt
Maxima, die um die Sollbreitenindexe xi bis x4 herum
angeordnet sind. Die Häufigkeitsverteilung 4 entspricht
der statistischen Verteilung der einzelnen Codeelementbreiten in
Vierbreitencodes, da die schmalen Elemente mit Breitenindex x1 am häufigsten
und die breiten Codeelemente mit Breitenindex x4 am
seltensten innerhalb eines Vierbreitencodes vorkommen.
-
Auch der Vergleich zwischen 4 und 3 zeigt deutlich den Unterschied zwischen
der Häufigkeitsverteilung 4 der
Breitenindexe eines Vierbreitencodes und der Häufigkeitsverteilung 3 der
Breitenindexe, die beim Abtasten von Streudruck ermittelt wird.
-
In 5 ist
neben der bereits in 2 dargestellten
Häufigkeitsverteilung 2 der
Breitenindexe x eines Zweibreitencodes eine Bewertungsfunktion f(x)
9 sowie eine Bewertungsfunktion g(x) 10 dargestellt.
-
Die Bewertungsfunktion f(x) 9 hat
in einem Bereich x1 – Δz ≤ x ≤ x1 + Δz' sowie in einem weiteren
Bereich x2 – Δz'' ≤ x ≤ x2 + Δz''' den
Funktionswert 1 und außerhalb
dieser Bereiche den Funktionswert 0. Die Bewertungsfunktion g(x)
10 ist dazu invers ausgebildet, d.h. sie hat innerhalb der angegebenen
Bereiche den Funktionswert 0 und außerhalb dieser Bereiche den
Funktionswert 1.
-
Durch die Bewertungsfunktionen f(x)
und g(x) kann die Wahrscheinlichkeit, daß innerhalb eines Abtastfensters
Codeelemente eines Strichcodes abgetastet werden, abgeschätzt werden,
indem die Häufigkeitsverteilung
mit den gewählten
Bewertungsfunktionen gewichtet wird. Dazu werden beispielsweise
für alle
ermittelten Breitenindexe deren Häufigkeit mit dem entsprechenden
Funktionswert der Bewertungsfunktion f(x) multipliziert und die
jeweils berechneten Produkte über
alle ermittelten Breitenindexe aufaddiert. Auf diese Weise wird
die Häufigkeit
der innerhalb der um die Sollbreitenindexe vorgesehenen Bereiche
angeordneten, ermittelten Breitenindexe berechnet, während die
zwischen die sen Bereichen liegenden Breitenindexe durch Multiplikation
mit 0 ausgeblendet werden.
-
Entsprechend werden für alle ermittelten
Breitenindexe, deren Häufigkeiten
mit den entsprechenden Funktionswerten der Bewertungsfunktion g(x)
multipliziert und aufsummiert, wodurch die Gesamthäufigkeit
der zwischen den Bereichen liegenden Breitenindexe bestimmt wird.
-
Anschließend wird die Gesamtsumme der
Häufigkeiten
der zwischen den Bereichen liegenden Breitenindexe von der Gesamtsumme
der Häufigkeiten
der innerhalb der Bereiche angeordneten Breitenindexe subtrahiert
und das Ergebnis durch die Gesamtanzahl N der innerhalb des Abtastfensters
abgetasteten Elemente dividiert.
-
Das auf diese Weise ermittelte Gütekriterium
G ist im Idealfall, d.h., wenn alle ermittelten Breitenindexe innerhalb
der um die Sollbreitenindexe angeordneten Bereiche liegen, gleich
1 und ist um so kleiner, je mehr ermittelte Breitenindexe außerhalb
dieser Bereiche angeordnet sind. Somit gibt das Gütekriterium
G ein Maß für die Wahrscheinlichkeit
an, daß innerhalb
des Abtastfensters ein Strichcode abgetastet wird.
-
Anstelle der Differenz der Summenprodukte
zwischen der Häufigkeitsverteilung
h(x) und der jeweiligen Bewertungsfunktion f(x) bzw. g(x) und anschließender Division
durch die Anzahl N der überstrichenen
Elemente kann beispielsweise ein alternatives Gütekriterium G durch Bildung
des Verhältnisses
aus dem Summenprodukt der Häufigkeitsverteilung
h(x) mit der Bewertungsfunktion f(x) und dem Summenprodukt der Häufigkeitsverteilung
h(x) und der Bewertungsfunktion g(x) berechnet werden. Das auf diese
Weise berechnete Gütekriterium
G ist um so größer, je
mehr ermittelte Breitenindexe innerhalb der vorgegebenen Bereiche
um die Sollbreitenindexe herum angeordnet sind. Daher kann auch
dieses Gütekriterium
G zur Bestimmung der Wahrscheinlichkeit, daß innerhalb eines Abtastfensters
ein Strichcode bzw. ein Strichcodeabschnitt überstrichen wurde, verwendet
werden.
-
Die Werte Δz, Δz', Δz'' und Δz''' können dabei
sowohl unterschiedlich gewählt
werden, wie es in 5 dargestellt
ist, so daß die
Bereiche um die Sollbreitenindexe x1 und
x2 unsymmetrisch ausgebildet sind. Dadurch
kann beispielsweise Druckverzerrungen, die eine Verbreiterung der
Codeelemente gegenüber
den Sollbreiten bewirken, Rechnung getragen werden. Es ist jedoch
auch möglich,
die Werte Δz, Δz', Δz'' und Δz''' gleich
groß zu
wählen,
so daß die
Bereiche um die Sollbreitenindexe x1 und
x2 symmetrisch und gleich groß ausgebildet
sind.
-
6 zeigt
die Häufigkeitsverteilung 4 für einen
Vierbreitencode, wie sie bereits in 4 dargestellt wurde.
Darüber
hinaus ist in 6 sowohl
die Bewertungsfunktion f(x) 11 und die dazu inverse Bewertungsfunktion
g(x) 12 dargestellt.
-
Aus 6 ist
ersichtlich, daß von
den dreißig
ermittelten Breitenindexen lediglich drei (bei den Breitenindexen 13 und 23)
nicht innerhalb der Bereiche um die Sollbreitenindexe x1,
x2, x3 und x4 angeordnet sind. Somit ergibt sich bei
der Auswertung einer der Gütekriterien
G ein Wert, der auf eine hohe Wahrscheinlichkeit für das Vorliegen
eines Strichcodes hinweist.
-
Wird das Abtastfenster relativ klein
gewählt,
so kann zufällig
ein relativ großer
Wert für
das Gütekriterium
G berechnet werden, obwohl innerhalb des Abtastfensters kein Strichcode,
sondern Streudruck abgetastet wurde. Dies ist dann der Fall, wenn
der abgetastete Streudruck Elemente enthält, deren Breitenindexe im wesentlichen
gleich den Breitenindexen der Codeelemente des zu erkennenden Strichcodes
sind. Um die Wahrscheinlichkeit für die richtige Einordnung,
ob eine Strichcode vorliegt oder nicht, zu erhöhen, kann eine Vielzahl von
aufeinanderfolgenden Abtastfenstern ausgewertet werden, wobei ein
Strichcode dann als erkannt gilt, wenn für mehrere aufeinanderfolgende
Abtastfenster das berechnete Gütekriterium
jeweils einen vorgegebenen Schwellenwert überschreitet.
-
Dies ist in 7 dargestellt. 7 zeigt eine Gütefunktion 13, die
aus einer Vielzahl von miteinander verbundenen Werten 14 besteht.
Die Werte 14 stellen jeweils berechnete Werte eines Gütekriteriums
dar, die jeweils für
aufeinanderfolgende Abtastfenster berechnet wurden. Weiterhin ist
in 7 ein Schwellenwert
S angegeben, bei dessen Überschreiten
durch die Werte des jeweiligen Gütekriteriums
ein Strichcode als erkannt angesehen wird.
-
Ein Bereich 15 stellt die
von sieben Abtastfenstern abgedeckte Länge eines Strichcodes dar,
wobei für jedes
dieser Abtastfenster ein Wert 14 des Gütekriteriums berechnet wurde,
der oberhalb des Schwellenwertes S liegt. Außerhalb des Bereichs 15,
d.h. außerhalb
des Strichcodes, sind die Werte 14 des Gütekriteriums unterhalb des
Schwellenwertes S angeordnet. Beim Überstreichen des den Strichcode
tragenden Objektes werden somit in aufeinanderfolgende Abtastfenstern
zunächst
jeweils Gütekriterien
berechnet, deren Werte unterhalb des Schwellenwertes liegen. Somit
werden die jeweils abgetasteten Bereiche nicht als Strichcodeabschnitte
eingestuft.
-
Im Verlauf der weiteren Abtastung
wird zum ersten Mal durch den Wert 14' der Schwellenwert S überschritten,
so daß der
innerhalb dieses Abtastfensters überstrichene
Bereich des Strichcodes als Strichcodeabschnitt eingestuft wird.
Nachdem für
eine einstellbare Anzahl von aufeinanderfolgenden Abtastfenstern
jeweils der berechnete Wert 14 des Gütekriteriums über dem
Schwellenwert S liegt, werden ausgehend von dem Abtastfenster, in
dem der Schwellenwert S zum ersten Mal vom Gütekriterium überschritten
wurde, die abgetasteten Bereiche als Bereiche eines Strichcodes
einstuft.
-
Auf diese Weise wird die Abtastung
und Auswertung so lange fortgesetzt, bis der Wert 14'' des Gütekriteriums zum ersten Mal
unter den Schwellenwert S sinkt. Der bis zu diesem Zeitpunkt in
den aufeinanderfolgenden Abtastfenstern abgetastete Bereich 15 des
Objekts wird als Strichcode klassifiziert und mit konventionellen
Dekodierverfahren dekodiert.
-
Die in 8 dargestellte
Häufigkeitsverteilung 1' stellt die
Häufigkeitsverteilung 1 nach 1 dar, wobei die Breitenindexe
x nicht linear, sondern logarithmisch dargestellt sind. Gleiches
gilt für
die Darstellung gemäß 9, die eine Häufigkeitsverteilung 2' zeigt, die
der Häufigkeitsverteilung 2 nach 2 bei logarithmischer Darstellung
der Breitenindexe x entspricht.
-
Im Gegensatz zu den nicht logarithmischen
Darstellungen gemäß den 1 und 2, bei denen die Abstände zwischen den Maxima 5 und 6 sowie
den Maxima 7 und 8 unterschiedlich sind, besitzen
die Maxima 5' und 6' bzw. 7' und 8' jeweils den
gleichen Abstand zueinander, nämlich
ca. 4,7 Abszisseneinheiten.
-
Durch die logarithmische Bewertung
der Breitenindexe wird somit die Distanz zwischen den Maxima, die
die schmalen und breiten Codeelemente der Strichcodes repräsentieren,
unabhängig
von der tatsächlichen Breite
der Codeelemente. Somit werden durch die logarithmische Darstellung
Faktoren wie der Druckmaßstab des
Strichcodes, Leseabstand sowie Abtastgeschwindigkeit, die jeweils
einen Skalierfaktor für
die erkannte Breite der abgetasteten Codeelemente bewirken, kompensiert.
Solange das Druckverhältnis
zweier unterschiedlicher, abgetasteter Strichcodes gleich gewählt wird,
besitzen die Maxima der im logarithmischen Maßstab dargestellten Häufigkeitsverteilungen
jeweils den gleichen Abstand zueinander.
-
Bei einer Überprüfung, ob die Maxima der Häufigkeitsverteilung
von ermittelten Breitenindexen mit den Sollbreitenindexen des zu
erkennenden Strichcodes korrespondieren, können somit bei einer logarithmischen
Bewertung der Breitenindexe für
unterschiedliche Druckbreiten, Abtastgeschwindigkeiten oder Abtastabstände jeweils
die gleichen Bewertungsfunktion f(x) und g(x) verwendet werden.
Eine Überdeckung
der Maxima der Häufigkeitsverteilung
h(x) durch die Bewertungsfunktion f(x) sowie der zwischen den Maxima
liegenden Bereichen durch die Wertungsfunktion g(x) wird somit durch
einheitliche Bewertungsfunktionen f(x) und g(x) unabhängig von
dem Druckmaßstab
des Strichcodes, dem Leseabstand sowie der Abtastgeschwindigkeit erreicht.
Es muß lediglich
ein Offset zwischen den unterschiedlichen Häufigkeitsverteilungen berücksichtigt werden.
-
10 zeigt
den Verlauf einer Häufigkeitsverteilung 15 eines
Zweibreitencodes, wenn anstelle der Breitenindexe jeweils die Verhältnisse
der Breitenindexe zweier aufeinanderfolgender, abgetasteter Elemente zugrundegelegt
werden. Bei einem Zweibreitencode mit einem Druckverhältnis von
3:1 ergeben sich somit als mögliche
Verhältnisse
zwischen aufeinanderfolgenden Codeelementen die Werte 1/3, 1 und
3. Beim Abtasten eines Strichcodes entstehen somit die in 10 dargestellten Maxima 16, 17, 18,
die um die Sollverhältniswerte
1/3, 1 und 3 herum angeordnet sind.
-
Die Verwendung der Verhältnisse
der Breitenindexe zweier aufeinanderfolgender abgetasteter Elemente
zur Bestimmung der Häufigkeitsverteilung
hat, wie die bereits beschriebene logarithmische Darstellung, den
Vorteil, daß Skalierungsfaktoren,
die beispielsweise durch unterschiedliche Druckmaßstäbe des Strichcodes,
unterschiedliche Leseabstände
sowie unterschiedliche Abtastgeschwindigkeiten entstehen, durch
die Verhältnisbildung
kompensiert werden.
-
Darüber hinaus hat die Zugrundelegung
der Verhältnisse
der Breitenindexe zweier aufeinanderfolgender, abgetasteter Elemente
gegenüber
der logarithmischen Darstellung den Vorteil, daß bei bekanntem Druckverhältnis die
Lage der Sollbreitenindexverhältnisse
fest angegeben werden kann. Es muß in diesem Fall also kein
Offset berücksichtigt
werden, wie es bei der logarithmischen Darstellung der Fall ist.
-
Die Auswertung der abgetasteten Elemente
erfolgt, wie zu den 5 und 6 beschrieben, durch Gewichtung
der Häufigkeitsverteilung
mit den Bewertungsfunktion f(x) und g(x).
-
Während
bisher grundsätzlich
davon ausgegangen wurde, daß Balken
und Lükken
eines Codeelements bzw. helle und dunkle Elemente eines abgetasteten
Bereichs eines Objekts gleichwertig als Elemente betrachtet und
während
einer Abtastung gleich behandelt werden, ist es auch möglich, die
Balken und Lücken bzw.
die hellen und dunklen Elemente separat zu betrachten. Dies ist
beispielsweise dann vorteilhaft, wenn durch Druckverzerrungen, beispielsweise
einem Verschmieren der Balken, diese generell breiter ausgebildet sind
als entsprechende Lückenelemente.
Durch die Druckverzerrungen würden
die Breitenindexe für
Balken und theoretisch gleich breite Lücken unterschiedlich bestimmt
werden, so daß eine
zusätzliche
Verfälschung der
ermittelten Häufigkeitsverteilung
entsteht. Bei einer Bestimmung der Häufigkeitsverteilung, jeweils
getrennt für
Balken und Lücken
oder ausschließlich
für Balken
oder für
Lücken,
tritt diese Verfälschung
nicht auf, so daß die
jeweils separat ermittelte Häufigkeitsverteilung
zu einem besseren Wert für
das berechnete Gütekriterium führt.
-
Weiterhin ist es möglich, daß jeweils
zwei aufeinanderfolgende Balken- und Lükkenelemente als ein Gesamtelement
betrachtet werden, da sich auf diese Weise ebenfalls die durch Druckverzerrungen,
z.B. Verschmieren der Balken, verursachten Fehler in den Breitenindexen
der Balken und Lücken
durch die Summenbildung aufheben. Dabei ist es zum einen möglich, die
Gesamtelemente ohne Überlappung
zu wählen,
d.h. ein Balken- und ein sich daran anschließendes Lückenelement als erstes Gesamtelement
und das nächste
Balken- und sich daran anschließende
Lückenelement
wiederum als nächstes
Gesamtelement zu behandeln. Es ist jedoch auch möglich, die Gesamtelemente überlappend
zu betrachten, so daß ein
Balken- und das sich daran anschließende Lückenelement das erste Gesamtelement
ergeben, woraufhin das nächste
Gesamtelement aus dem gerade betrachteten Lückenelement und dem sich daran
anschließenden
Balkenelement zusammensetzt usw.
-
Da beim Zusammenfassen zweier aufeinanderfolgender
Codeelemente (Balken und Lücken)
bei einem Zweibreitencode Gesamtelemente mit drei unterschiedlichen
Breiten (1+1, 1+2, 2+2 Grundbreiten) existieren, ist in diesem Fall
eine Auswertung analog zu der Auswertung eines Dreibreitencodes
erforderlich. Insbesondere besitzt die Häufigkeitsverteilung in diesem
Fall wie bei einem Dreibreitencode drei Maxima, so daß die Selektivität des Algorithmus
sich gegenüber
der Auswertung der normalen Häufigkeitsverteilung
eines Zweibreitencodes mit zwei Maxima verschlechtert.