-
Die
vorliegende Erfindung betrifft ein Verfahren gemäß dem Oberbegriff des Anspruchs
1 zum Erkennen eines aus einer Anzahl von Strichen und Lücken gebildeten
Strichcodes, dessen einzelne Striche und Lücken jeweils eine Breite besitzen,
die ein Vielfaches einer elementaren Breite darstellen, und bei
dem ein Breitenverhältnis
zwischen der elementaren Breite und einer größten möglichen Breite vorgegeben ist,
wobei:
- – der
Strichcode abgetastet wird,
- – anhand
der Abtastung ein Abtastsignal erzeugt wird,
- – anhand
von Flanken des Abtastsignals der Strichcode erkannt und ein dem
Strichcode entsprechender idealer Signalverlauf rekonstruiert wird.
-
Weiterhin
betrifft die vorliegende Erfindung eine Vorrichtung gemäß dem Oberbegriff
des Anspruchs 11 zum Erkennen eines aus einer Anzahl von Strichen
und Lücken
gebildeten Strichcodes, dessen einzelne Striche und Lücken jeweils
eine Breite aus einer vorbestimmten Anzahl von Breiten besitzen,
die jeweils ein Vielfaches einer elementaren Breite darstellen,
und bei dem ein Breitenverhältnis
zwischen der elementaren Breite und einer größten möglichen Breite vorgegeben ist,
mit:
-
- – einer
Abtasteinrichtung, die zum Erzeugen eines Abtastsignals beim Abtasten
des Strichcodes ausgebildet ist,
- – einer
Signalverarbeitungseinrichtung, die zum Erkennen des Strichcodes
und zum Rekonstruieren eines dem Strichcode entsprechenden idealen
Signalverlaufs anhand von Flanken des Abtastsignals ausgebildet
ist.
-
Darüber hinaus
betrifft die vorliegende Erfindung ein Computerprogrammprodukt gemäß dem Oberbegriff
des Anspruchs 13 zum Erkennen eines abgetasteten, aus einer Anzahl
von Stri chen und Lücken
gebildeten Strichcodes, dessen einzelne Striche und Lücken jeweils
eine Breite aus einer vorbestimmten Anzahl von Breiten besitzen,
die jeweils ein Vielfaches einer elementaren Breite darstellen,
und bei dem ein Breitenverhältnis
zwischen der elementaren Breite und einer größten möglichen Breite vorgegeben ist,
wobei durch das Abtasten ein Abtastsignal erzeugt wird und wobei
anhand von Flanken des Abtastsignals der Strichcode erkannt und
ein dem Strichcode entsprechender idealer Signalverlauf rekonstruiert
wird.
-
Ein
Strichcode oder Barcode ist eine maschinenlesbare Schrift, die aus
einer Abfolge von Strichen und Lücken
mit jeweils unterschiedlichen Breiten besteht. Ein derartiger Code
wird regelmäßig über optische
Abtaster, d. h. so genannte Strich- oder Barcodelesegeräte, maschinell
gelesen und anschließend
zum Erkennen und Decodieren des Codes bzw. zum Gewinnen der darin
enthaltenen Informationen in einer elektronischen Datenverarbeitungseinrichtung
weiterverarbeitet. Dabei werden die Strichcodes je nach Anwendung
mit konventionellen Druckverfahren, wie Offsetdruck, Flexo- oder
Tiefdruck, oder entsprechend nach Bedarf unter Verwendung von Laser-,
Tintenstrahl- oder Thermodruckern hergestellt. In der Regel besitzt
der Barcode eine gewisse Mindesthöhe, die in einigen Fällen genormt
ist. Außerdem
ist für
einen bestimmten Code das Breitenverhältnis zwischen schmalen und
breiten Balken, d. h. einer kleinsten (Elementarbalkenbreite) und
einer größten auftretenden
Balkenbreite, genormt. Dieses Breitenverhältnis liegt je nach Norm zwischen 1:1,8
und 1:3,4.
-
Für eine effiziente
Funktion eines auf Strichcodes basierenden Systems, beispielsweise
zur Warenerfassung, ist insbesondere die Druckqualität der verwendeten
Strichcodes ein entscheidender Faktor. Jedoch wird in der Praxis
dieser Aspekt oft vernachlässigt.
Zudem ist das durch die eingesetzten Abtaster erzeugte Abtastsignal
gegenüber
einem durch die Geometrie des Strichcodes selbst bedingten idealen Signal
regelmäßig mit
Rauschen überlagert,
was in Kombination mit un regelmäßiger Abtastung
dazu führt,
dass in der Praxis die gewünschte
Leserobustheit und entsprechend ein sicheres Erkennen/Decodieren
von Strichcodes nicht erreicht wird. Insbesondere die Ermittlung
der relativen Breiten von Strichen und Lücken stellt in der Praxis ein
großes
Problem dar.
-
Bei
vorbekannten Verfahren und Vorrichtungen der eingangs genannten
Art werden zum Ermitteln von Flanken des Abtastsignals zwecks einer
Rekonstruierung eines dem Strichcode entsprechenden idealen Signals
mit Hilfe von verschiedenen Kantenfiltern lokale Minima und Maxima
in einem aus dem Abtastsignal erzeugten Ableitungssignal gesucht.
Alternativ erfolgt eine Bestimmung der Nulldurchgänge eines
der zweiten Ableitung des Abtastsignals entsprechenden Signalverlaufs.
Die so ermittelten speziellen Punkte werden anschließend in
räumlichen Bezug
zu der Struktur des Strichcodes gebracht, wodurch sich das dem Strichcode
entsprechende ideale Signal selbst rekonstruieren lässt.
-
Es
hat sich jedoch herausgestellt, dass derartige Verfahren bzw. nach
einem solchen Verfahren arbeitende Vorrichtungen sehr empfindlich
gegenüber
Rauscheinflüssen
sind. Darüber
hinaus werden zur Detektion von Extremwerten des Ableitungssignals,
d. h. zur Kanten- oder Flankenbestimmung, regelmäßig nur lokale Informationen
verwendet, was die Zuverlässigkeit
des Erkennungsverfahrens negativ beeinflusst. Um insbesondere steigende
und fallende Flanken (Kanten) des Abtastsignals bzw. des Strichcodes
aufzufinden, wird bei vorbekannten Verfahren regelmäßig ein
Schwellwert gesetzt, dessen Überschreiten
jeweils das Auftreten einer Flanke des Abtastsignals anzeigt. Dabei
stellt die Schwellwertfindung eine weitere Schwachstelle vorbekannter
Verfahren dar, weil ein nicht optimal gesetzter Schwellwert dazu
führt,
dass bestimmte Flanken verloren gehen bzw. falsche Flanken mit in
die Auswertung einbezogen werden, was eine anschließende Decodierung
des Codes unmöglich
macht.
-
Weiterhin
sind Verfahren zum Erkennen von Strichcodes bekannt, bei denen zusätzlich eine Hough-Transformation
verwendet oder die Varianz der Energie des Signals minimiert wird,
um die Robustheit gegenüber
Rauscheffekten zu verbessern. Allerdings sind derartige Verfahren
in nachteiliger Weise rechenaufwendig, was ihren Anwendungsbereich
in der Praxis stark einschränkt.
-
Der
Erfindung liegt die Aufgabe zugrunde, ein eingangs genanntes Verfahren
und eine zur Durchführung
des Verfahrens geeignete eingangs genannte Vorrichtung anzugeben,
mit denen sich unter Vermeidung der vorstehend aufgeführten Nachteile
Strichcodes mit hoher Geschwindigkeit und großer Robustheit erkennen und
sicher decodieren lassen.
-
Die
Lösung
dieser Aufgabe ergibt sich bei einem Verfahren der eingangs genannten
Art aus den Merkmalen des kennzeichnenden Teils des Anspruchs 1.
Vorteilhafte Weiterbildungen des erfindungsgemäßen Verfahrens ergeben sich
aus den entsprechenden Unteransprüchen.
-
Gemäß der Erfindung
ist ein Verfahren zum Erkennen eines aus einer Anzahl von Strichen
und Lücken
gebildeten Strichcodes, dessen einzelne Striche und Lücken jeweils
eine Breite aus einer vorbestimmten Anzahl von Breiten besitzen,
die jeweils ein Vielfaches einer elementaren Breite darstellen,
und bei dem ein Breitenverhältnis
zwischen der elementaren Breite und einer größten möglichen Breite vorgegeben ist,
wobei:
- – der
Strichcode abgetastet wird,
- – anhand
der Abtastung ein Abtastsignal erzeugt wird,
- – anhand
von Flanken des Abtastsignals der Strichcode erkannt und ein dem
Strichcode entsprechender idealer Signalverlauf rekonstruiert wird,
dadurch gekennzeichnet, dass weiterhin - – aus dem
Abtastsignal die elementare Breite bestimmt wird und
- – Flanken
des Abtastsignals innerhalb eines verschiebbaren Filterungsfensters
mit von der elementaren Breite abhängiger Fensterbreite ermittelt
werden, wobei das Filterungsfenster zum Auffinden der Flanken bezüglich eines
durch das Abtastsignal vorgegebenen Signalverlaufs verschoben wird.
-
Bei
einer Vorrichtung der eingangs genannten Art ergibt sich die Lösung der
Aufgabe aus den Merkmalen des kennzeichnenden Teils des Anspruchs
11.
-
Entsprechend
ist gemäß der vorliegenden Erfindung
eine Vorrichtung zum Erkennen eines aus einer Anzahl von Strichen
und Lücken
gebildeten Strichcodes, dessen einzelne Striche und Lücken jeweils
eine Breite aus einer vorbestimmten Anzahl von Breiten besitzen,
die jeweils ein Vielfaches einer elementaren Breite darstellen,
und bei dem ein Breitenverhältnis
zwischen der elementaren Breite und einer größten möglichen Breite vorgegeben ist,
mit:
- – einer
Abtasteinrichtung, die zum Erzeugen eines Abtastsignals beim Abtasten
des Strichcodes ausgebildet ist,
- – einer
Signalverarbeitungseinrichtung, die zum Erkennen des Strichcodes
und zum Rekonstruieren eines dem Strichcode entsprechenden idealen
Signalverlaufs anhand von Flanken des Abtastsignals ausgebildet
ist,
dadurch gekennzeichnet, dass die Signalverarbeitungseinrichtung
aufweist: - – eine
erste Bestimmungseinheit, die zum Bestimmen der elementaren Breite
aus dem Abtastsignal ausgebildet ist, und
- – eine
zweite Bestimmungseinheit, die zum Auffinden von Flanken des Abtastsignals
innerhalb eines Filterungsfensters mit von der elementaren Breite
abhängiger
Fensterbreite ausgebildet ist, wobei das Filterungsfenster zum Auffinden
der Flanken bezüglich
eines durch das Abtastsignal vorgegebenen Signalverlaufs verschiebbar
ist.
-
Darüber hinaus
ergibt sich die Lösung
der Aufgabe bei einem Computerprogrammprodukt der eingangs genannten
Art aus den Merkmalen des kennzeichnenden Teils des Anspruchs 13.
-
Gemäß der Erfindung
ist also ein Computerprogramm zum Erkennen eines abgetasteten, aus
einer Anzahl von Strichen und Lücken
gebildeten Strichcodes, dessen einzelne Striche und Lücken jeweils
eine Breite aus einer vorbestimmten Anzahl von Breiten besitzen,
die jeweils ein Vielfaches einer elementaren Breite darstellen,
und bei dem ein Breitenverhältnis
zwischen der elementaren Breite und einer größten möglichen Breite vorgegeben ist,
wobei durch das Abtasten ein Abtastsignal erzeugt wird und wobei
anhand von Flanken des Abtastsignals der Strichcode erkannt und
ein dem Strichcode entsprechendes ideales Signal rekonstruiert wird,
gekennzeichnet durch Programmcode-Sequenzen, bei deren Ausführung ein
erfindungsgemäßes Verfahren durchgeführt wird.
-
Eine
grundlegende Idee des erfindungsgemäßen Lösungsansatzes basiert somit
auf der Tatsache, dass der abgetastete Strichcode eine gewisse innere
Struktur besitzt: Die Breiten der Striche und Lücken sind jeweils das Mehrfache
der Breite eines bestimmten Elements, d. h. Vielfache der elementaren
Breite. Diese jeweiligen Breitenverhältnisse eines gegebenen Strichs
bzw. einer gegebenen Lücke
zu der elementaren Breite des betreffenden Codes bleiben auch in
praxisrelevanten Anwendungen über
die gesamte abzutastende Codefläche
in etwa gleich. Wenn die vorstehend definierte elementare Breite bekannt
ist, ist es im Zuge der vorliegenden Erfindung auf relativ einfache
Weise möglich,
nicht zum Code gehörende Flanken,
die beispielsweise auf Rauscheinflüsse im Abtastsignal zurückzuführen sind,
aus diesem herauszufiltern, um ein ideales Abtastsignal und damit
einen dem abgetasteten Strichcode entsprechenden idealen Signalverlauf
zu rekonstruieren.
-
In
Weiterbildung des erfindungsgemäßen Verfahrens
ist vorgesehen, dass die elementare Breite mittels einer Autokorrelationsfunktion
bestimmt wird. Dementsprechend ist in Weiterbildung der erfindungsgemäßen Vorrichtung
vorgesehen, dass die erste Bestimmungseinheit ein Autokorrelationsmodul aufweist,
das zum Anwenden einer Autokorrelationsfunktion auf das Abtastsignal
ausgebildet ist.
-
Wie
dem Fachmann bekannt ist, können durch
Anwendung einer Autokorrelationsfunktion statistisch unabhängige Störanteile
eines zu verarbeitenden Signals unterdrückt werden, wobei zugleich periodische
Signalanteile verstärkt
hervortreten und eine so genannte Basisfrequenz des Signals bestimmbar
ist. Vorliegend entspricht eine derartig mittels Autokorrelation
bestimmte Basisfrequenz des Abtastsignals gerade der gesuchten elementaren Breite,
so dass erfindungsgemäß die elementare Breite
des abgetasteten Strichcodes durch Vermessung lokaler Extremwerte
(Maxima und/oder Minima) der Autokorrelationsfunktion, d. h. eines
durch Anwendung dieser Funktion auf das Abtastsignal erzeugten Signalverlaufs,
gewonnen werden kann.
-
Um
eine hohe Robustheit des erfindungsgemäßen Verfahrens zu gewährleisten,
wird erfindungsgemäß mittels
des Filterungsfensters in bestimmten, relativ kleinen Intervallen
nach Flanken des Abtastsignals gesucht, um das ideale Abtastsignal
zu rekonstruieren, wobei in Weiterbildung des erfindungsgemäßen Verfahrens
die einer solchen Intervalllänge
entsprechende Fensterbreite des Filterungsfensters als Produkt der
elementaren Breite und des für
den abgetasteten Strichcode vorgegebenen Breitenverhältnisses
bestimmt wird.
-
Nach
einer anderen Weiterbildung des erfindungsgemäßen Verfahrens wird das Auffinden
der Flanken anhand eines durch – vorzugsweise
numerische – Ableitung
des Abtastsignals gewonnenen Signalsverlaufs vorgenommen, wozu entsprechend
zunächst
die erste Ableitung des Abtastsignals gebildet wird.
-
Wenn
die oben definierte Basisfrequenz des Abtastsignals, d. h. die elementare
Breite des Strichcodes, bekannt ist, lässt sich das ideale Signal
rekonstruieren, indem nur die stärksten
Flanken, d. h. die Flanken mit der größten Steigung, in bestimmten, durch
die Breite des Filterungsfensters vorgegebenen Intervallen verbleiben
und die restlichen Flanken ausgefiltert werden. Entsprechend sieht
eine Weiterbildung des erfindungsgemäßen Verfahrens vor, dass jeweils
wenigstens eine stärkste
Flanke innerhalb des Filterungsfensters bestimmt wird und dass anschließend das
Filterungsfenster so weit verschoben wird, dass ein Fensteranfang
mit dem Ort der soeben innerhalb des Filterungsfensters bestimmten stärksten Flanke
in dem Signalverlauf zusammenfällt.
-
Um
weiterhin auch bei anfänglich
fehlerhafter Erkennung/Decodierung des abgetasteten Strichcodes
ohne erneutes, zeitaufwendiges Abtasten alternative Decodierungsmöglichkeiten
vorzuhalten, sieht eine andere Weiterbildung des erfindungsgemäßen Verfahrens
vor, dass innerhalb eines jeweiligen Filterungsfensters eine Anzahl
von Flanken bestimmt wird, die schwächer sind als eine jeweils stärkste Flanke.
Kanten oder Flanken des Abtastsignals bzw. des Strichcodes lassen
sich im Zuge des erfindungsgemäßen Verfahrens
in einfacher Weise dadurch auffinden, dass wenigstens ein lokales
Maximum (für
steigende Flanken) des Signalwertes bzw. ein lokales Minimum (für fallende
Flanken) des Signalwertes der Ableitung des Abtastsignals innerhalb
des Filterungsfensters bestimmt wird.
-
Wenn
im Zuge des erfindungsgemäßen Verfahrens
neben erkannten stärksten
Extremwerten, d. h. größten Amplituden
des Ableitungssignals, auch weitere, schwächere Extremwerte und ent sprechend schwächere Flanken
bestimmt werden, lässt
sich in Weiterbildung des erfindungsgemäßen Verfahrens bei fehlerhafter
Erkennung des Strichcodes unter Verwendung der bestimmten stärksten Flanken
ohne zusätzliches
Abtasten eine erneute Erkennung unter Verwendung wenigstens einer
der vorab bestimmten schwächeren
Flanken durchführen.
-
Zum
Erreichen einer größeren Fehlersicherheit
ist jedoch alternativ oder zusätzlich
in Weiterbildung des erfindungsgemäßen Verfahrens vorgesehen,
dass auch bei richtiger Erkennung des Strichcodes ein weiteres Abtastsignal
erzeugt wird, insbesondere durch eine erneute Abtastung des Strichcodes,
wobei anschließend
anhand des weiteren Abtastsignals eine erneute Erkennung des Strichcodes nach
dem erfindungsgemäßen Verfahren
vorgenommen wird und wobei anschließend die Erkennungsergebnisse
miteinander verglichen werden.
-
Somit
ergeben sich durch den erfindungsgemäßen Einsatz des vorgeschlagenen
Verfahrens bzw. der vorgeschlagenen Vorrichtung die folgenden Vorteile:
Es wird beim Erkennen von Strichcodes eine hohe Geschwindigkeit
erreicht, da keine aufwendigen Berechnungen notwendig sind, um das
typischerweise als Grauwertprofil vorliegende Abtastsignal eines
Strichcodes einer Autokorrelationsfunktion zu unterziehen, durch
Vermessen der Basisfrequenz die elementare Breite des Strichcodes
zu bestimmen und anschließend
falsche Flanken aus dem Abtastsignal herauszufiltern. Des Weiteren
wird durch das erfindungsgemäße Verfahren
eine hohe Robustheit erreicht, da zum Ermitteln der elementaren
Breite nicht nur lokale Informationen verwendet, sondern das gesamte
Profil ausgewertet wird. Zudem ist keine Schwellwertfindung notwendig,
um die zu einem abgetasteten Strichcode gehörenden Flanken zu extrahieren.
Stattdessen werden in die Auswertung nur diejenigen stärksten Flanken
des Abtastsignals mit einbezogen, die auf einem begrenzten Intervall
in Abhängigkeit
von der elementaren Breite des Strichcodes bestimmt wurden.
-
Weitere
Vorteile und Eigenschaften der Erfindung ergeben sich aus der nachfolgenden
Beschreibung eines Ausführungsbeispiels
anhand der Zeichnung.
-
Es
zeigt:
-
1 ein
schematisches Blockschaltbild einer erfindungsgemäßen Vorrichtung
zum Erkennen eines Strichcodes,
-
2 den
Verlauf eines mittels der Vorrichtung aus 1 durch
Abtasten eines Strichcodes erhaltenen Abtastsignals,
-
3 den
Verlauf eines Autokorrelationssignals des Abtastsignals aus 2,
-
4 einen
Ausschnitt aus einem einer Ableitung des Abtastsignals aus 2 entsprechenden Signalverlauf
mit einer Anzahl von Filterungsfenstern zum Auffinden von Flanken
des Abtastsignals,
-
5 ein
mit Hilfe des erfindungsgemäßen Verfahrens
aus dem Abtastsignal der 2 rekonstruiertes (Strichcode-)Signal
und
-
6 ein
Ablaufdiagramm einer Ausgestaltung des erfindungsgemäßen Verfahrens.
-
Die 1 zeigt
anhand eines schematischen Blockschaltbilds eine Ausgestaltung der
erfindungsgemäßen Vorrichtung 1 zum
Erkennen eines Strichcodes 2. Bei dem Strichcode 2 handelt
es sich um eine maschinenlesbare Schrift, die aus Strichen (Balken) 2.1 und
Lücken 2.2 besteht.
Derartige Strichcodes werden je nach Anwendung mit konventionellen
Druckverfahren (unter anderem Offset-, Flexo- oder Tiefdruck) oder
nach Bedarf (unter anderem im Laser-, Thermodirekt-, Thermotransfer-
oder Tintenstrahl-Verfahren) auf einem jeweils geeigneten Trägermaterial 2.3 hergestellt.
Typischerweise besitzt der Strichcode 2 eine gewisse Mindesthöhe H, die
in einigen Fällen
genormt ist. Des Weiteren ist ein Breitenverhältnis BV (in 1 nicht
gezeigt) zwischen einem schmalsten und einem breitesten vorkommenden
Balken 2.1 genormt und damit vorab bekannt und liegt je
nach Norm zwischen 1:1,8 und 1:3,4.
-
Die
erfindungsgemäße Vorrichtung 1 weist zunächst eine
Abtasteinrichtung 3 auf. Die Abtasteinrichtung 3 ist
mit einer Signalverarbeitungseinrichtung 4 verbunden, die
zum Erkennen des Strichcodes 2 und zum Rekonstruieren eines
dem Strichcode entsprechenden idealen Signalverlaufs ausgebildet
ist.
-
Dazu
weist die Signalverarbeitungseinrichtung 4 zunächst eine
Datenverarbeitungseinrichtung 5 auf, die in der 1 anhand
eines gestrichelt gezeichneten Kastens dargestellt ist. Die Datenverarbeitungseinrichtung 5 steht
in Wirkverbindung mit einer Speichereinrichtung 6.
-
In
der Datenverarbeitungseinrichtung 5, die vorzugsweise in
Form eines Mikroprozessors oder dergleichen ausgebildet ist, ist
eine erste Bestimmungseinheit 7 vorgesehen, die erfindungsgemäß zum Bestimmen
einer elementaren Breite des Strichcodes 2 aus einem beim
Abtasten des Strichcodes 2 mittels der Abtasteinrichtung 3 erzeugten
Abtastsignal AS ausgebildet ist, wie nachfolgend noch detailliert
beschrieben wird. Die erste Bestimmungseinheit 7 beinhaltet
ein Autokorrelationsmodul 8, das erfindungsgemäß zum Anwenden
einer Autokorrelationsfunktion auf das Abtastsignal AS ausgebildet
ist, wie ebenfalls nachfolgend noch detailliert beschrieben wird.
Gemäß dem Ausführungsbeispiel
der 1 sind sowohl die erste Bestimmungseinheit 7 als
auch das Autokorrelationsmodul 8 softwaretechnisch innerhalb
der Datenverarbeitungseinrichtung 5 ausgebildet.
-
Des
Weiteren weist die Datenverarbeitungseinrichtung 5 eine
zweite Bestimmungseinheit 9 auf, die erfindungsgemäß zum Auffinden
von Flanken des Abtastsignals innerhalb eines verschiebbaren Filterungsfensters
ausgebildet ist, wie ebenfalls nachfolgend noch detailliert beschrieben
wird. Die zweite Bestimmungseinheit 9 beinhaltet ein Ableitungsmodul 10,
ein Fenstermodul 11 sowie ein Extremwert-Bestimmungsmodul 12,
deren jeweilige Funktion nachfolgend beschrieben wird. Wie die erste
Bestimmungseinheit 7 und das Autokorrelationsmodul 8 sind
vorliegend auch die zweite Bestimmungseinheit 9 und die
darin enthaltenen Module 10–12 softwaretechnisch
innerhalb der Datenverarbeitungseinrichtung 5 ausgebildet.
-
Darüber hinaus
weist die erfindungsgemäße Vorrichtung 1 in
signaltechnischer Wirkverbindung mit der Signalverarbeitungseinrichtung 4 eine
Eingabeeinrichtung 13 sowie eine Ausgabeeinrichtung 14 auf.
Die Eingabeeinrichtung 13 kann beispielsweise als CD-ROM-Lesegerät, als DVD-Lesegerät oder als Netzwerk-Interface
ausgebildet sein und ist entsprechend zum Einlesen geeigneter Datenträger, wie
einer CD-ROM oder DVD 15, ausgebildet. Bei der Ausgabeeinrichtung 14 kann
es sich erfindungsgemäß beispielsweise
um eine Anzeigeeinrichtung, wie einen Bildschirm oder dergleichen,
einen Drucker, ein Software-Log und so weiter handeln.
-
Zur
softwaretechnischen Ausbildung der erfindungsgemäß innerhalb der Datenverarbeitungseinrichtung 5 angeordneten
Bestimmungseinrichtungen 7, 9 bzw. Module 8, 10, 11, 12 wird
gemäß der gezeigten
Ausgestaltung vorzugsweise ein entsprechende Programmcode-Sequenzen
eines Computerprogrammprodukts aufweisender Datenträger 15 über die
Eingabeeinrichtung 13 zugeführt, was dem Fachmann geläufig ist.
In diesem Zusammenhang sei betont, dass es sich bei dem Datenträger 15 insbesondere
nicht um einen körperlichen
Gegenstand handeln muss, sondern dass es sich dabei um ein Trägersignal
mit aufmodulierten Nutzdaten handeln kann, wenn die Eingabe einrichtung 13 insbesondere in
Form einer Netzwerk-Schnittstelle ausgebildet ist.
-
Bei
Betrieb der erfindungsgemäßen Vorrichtung 1 wird
der Strichcode 2 mittels der als optischer Abtaster fungierenden
Abtasteinrichtung 3 in einer Scanbewegung (Pfeil SB in 1)
gescannt, wobei ein Abtastsignal AS erzeugt und an die Signalverarbeitungseinrichtung 4 übertragen
wird.
-
Die 2 zeigt
beispielhaft einen gemessenen Signalverlauf des Abtastsignals AS,
wobei in der 2 eine Signalstärke in willkürlichen
Einheiten über
einer in Pixeln entlang der Scanrichtung (Scanbewegung SB in 1)
bestimmten Ortskoordinate aufgetragen ist. Wie aus der 2 ersichtlich,
weicht das mittels der Abtasteinrichtung 3 (1)
bestimmte Abtastsignal AS relativ stark von einem idealen, durch
die Geometrie des Strichcodes 2 (1) vorgegebenen
Verlauf ab, was beispielsweise durch die Druckqualität des Strichcodes,
durch eine ungleichförmige
und/oder schiefe Abtastung des Strichcodes oder durch Rauschüberlagerung
des Signals bedingt sein kann. Um dennoch auch ausgehend von dem
in der 2 gezeigten, nicht-idealen Abtastsignal AS den
idealen Signalverlauf des dem Abtastsignal zugrunde liegenden Strichcodes 2 (1)
bzw. eine in diesem enthaltene Information mit ausreichend großer Leserobustheit
zu rekonstruieren, wird erfindungsgemäß das Abtastsignal AS gemäß der 2 zunächst der
ersten Bestimmungseinheit 7 (1) zugeführt, in
der eine elementare Breite x des Strichcodes bestimmt wird. Gemäß dem vorliegenden
Ausführungsbeispiel
der erfindungsgemäßen Vorrichtung 1 (1)
geschieht dies mit Hilfe des Autokorrelationsmoduls 8,
in dem eine Autokorrelationsfunktion auf das Abtastsignal AS angewendet
wird.
-
Die 3 zeigt
einen durch Anwendung des Autokorrelationsmoduls 8 auf
das Abtastsignal AS aus 2 erhaltenen Signalverlauf eines
Autokorrelationssignals ASK. Dabei ist in der 3 wiederum eine
Signalstärke
des Autokorrelations signals ASK über
einer in Pixeln bestimmten Ortskoordinate aufgetragen. Wie dem Fachmann
geläufig
ist, führt
die Anwendung einer Autokorrelationsfunktion zur Unterdrückung statistisch
unabhängiger
Störanteile
eines verarbeiteten Signals, wie des Abtastsignals AS, wohingegen
periodische Signalanteile verstärkt
werden. Demgemäß entspricht
die gesuchte elementare Breite x des Strichcodes 2 (1)
bzw. des Abtastsignals AS gerade einer in der 3 angegebenen „Basisfrequenz" des Abtastsignals
bzw. des Autokorrelationssignals ASK. Gemäß der 3 lässt sich
die elementare Breite x in der Einheit Pixel durch Vermessen periodisch
wiederkehrender lokaler Maxima des Autokorrelationssignals ASK in
der ersten Bestimmungseinheit 7 (1) gewinnen.
Vorliegend ergibt sich beispielsweise aus der 3 eine
Periodendauer und damit eine elementare Breite x von circa zehn Pixeln.
Dieser Wert gibt ein Maß für die innere
Struktur des Strichcodes 2 (1) vor.
Die Breiten der Striche 2.1 und Lücken 2.2 des Strichcodes 2 sind
jeweils Mehrfache dieser elementaren Breite x, wobei das jeweilige
Breitenverhältnis
auch in praxisrelevanten Anwendungen über die gesamte Codefläche in etwa
gleich bleibt. Wenn also erfindungsgemäß die elementare Breite x des
Strichcodes 2 bekannt ist, lassen sich nicht zum eigentlichen
Code gehörende Signalbestandteile
aus dem Abtastsignal AS (2) herausfiltern, um das ideale
Signal und damit das dem Strichcode entsprechende ideale Signal
zu rekonstruieren, wie nachfolgend weiter im Detail beschrieben
ist.
-
Zur
Rekonstruktion des dem Strichcode 2 (1)
entsprechenden idealen Signals wird erfindungsgemäß mittels
der zweiten Bestimmungseinheit 9 bzw. des darin enthaltenen
Ableitungsmoduls 10 die erste Ableitung des Abtastsignals
AS (2) (numerisch) bestimmt, beispielsweise durch
Differenzenbildung.
-
Die 4 zeigt
schematisch-idealisiert einen Ausschnitt aus einem derart bestimmten
Ableitungssignal AS' des
Abtast signals AS. Wie aus der 4 ersichtlich,
weist das Ableitungssignal AS' eine
Anzahl lokaler Maxima MAX1–MAX5
auf, die grundsätzlich
mit steigenden Flanken des Abtastsignals AS bzw. eines idealisierten
Strichcode-Signals zusammenfallen. Des Weiteren besitzt das Ableitungssignal AS' eine Anzahl lokaler
Minima MIN1–MIN6,
die entsprechend mit fallenden Flanken des Abtastsignals AS bzw.
des idealisierten Strichcode-Signals zusammenfallen. Dabei entsprechen
in dem gezeigten Beispiel die lokalen Extrema MAX4, MIN1 und MIN3
keinen „echten" Flanken des Strichcodes
bzw. des Abtastsignals, sondern ergeben sich durch die vorstehend
beispielhaft aufgeführten
Signalstörungen.
-
Um
erfindungsgemäß dennoch
eine für
praktische Anwendungen ausreichende Leserobustheit zu erreichen,
werden Flanken des Abtastsignals AS (2) bzw.
lokale Extrema des Ableitungssignals AS' mittels eines durch das Fenstermodul 11 der zweiten
Bestimmungseinheit 9 (1) gesteuerten verschiebbaren
Filterungsfensters ermittelt, welches in der 4 in Form
eines in Richtung des Pfeils VR verschiebbaren Rechtecks FF1–FF3 in
jeweils unterschiedlichen Positionen dargestellt ist. Aus Gründen der Übersichtlichkeit
sind die einzelnen Filterungsfenster FF1–FF3 in der 4 vertikal
verschoben dargestellt. Um eine hohe Robustheit des Verfahrens zu
gewährleisten,
ist das Ermittlungsintervall – also eine
Fensterbreite FB des Filterungsfensters – erfindungsgemäß relativ
klein zu einer Gesamtlänge
des Codes gewählt
und hängt
speziell von der ermittelten elementaren Breite x ab. Gemäß dem Ausführungsbeispiel
der 4 entspricht die Fensterbreite FB dem Produkt
des dem abgetasteten Strichcode 2 (1) innewohnenden
Breitenverhältnisses
BV (siehe oben) und der ermittelten elementaren Breite x, d. h.
FB = BV·x
= größtmögliche Breite
eines Balkens oder einer Lücke.
-
Gemäß dem Ausführungsbeispiel
der 4 befindet sich das Filterungsfenster zunächst an
der mit FF1 bezeichneten Position (durchgezogenes Rechteck). Dies
entspricht gerade der Situation nach Auffinden einer steigenden
Flanke des Strichcodes bzw. des Abtastsignals AS, die mit dem lokalen
Maximum MAX1 des Ableitungssignals AS' zusammenfällt. Anschließend wird
erfindungsgemäß die zu
der steigenden Flanke gehörende
nächste
fallende Flanke des Strichcodes bzw. des Abtastsignals AS gesucht.
Dies geschieht unter Einsatz des Extremwert-Bestimmungsmoduls 12,
welches innerhalb des Filterungsfensters FF1 nach lokalen Minima MIN1–MIN3 sucht,
welche grundsätzlich
das Vorliegen einer zu der gefundenen steigenden Flanke gehörigen fallenden
Flanke des Strichcodes bzw. des Abtastsignals AS anzeigen können.
-
Erfindungsgemäß wird die
stärkste
innerhalb des Filterungsintervalls der Breite FB aufgefundene fallende
Flanke, d. h. der Ort des lokalen Extremums MIN2 mit dem größten negativen,
innerhalb des Filterungsfensters FF1 gefundenen Ableitungswert,
als Ort der gesuchten fallenden Flanke bestimmt und entsprechend
gemeinsam mit der zuvor bestimmten elementaren Breite x in der Speichereinrichtung 6 der erfindungsgemäßen Vorrichtung 1 (1)
abgelegt.
-
Des
Weiteren werden erfindungsgemäß auch die
entsprechenden Orte weiterer aufgefundener lokaler Extrema, d. h.
der lokalen Minima MIN1, MIN3, bestimmt und entsprechend in der
Speichereinrichtung 6 abgelegt. Anschließend wird
das Filterungsfenster FF1 – wie
gesagt – in
Richtung des Pfeils VR bis in seine mit FF2 bezeichnete Stellung (gestricheltes
Rechteck) verschoben, wobei diese Stellung derart gewählt wird,
dass ein Ort einer bezüglich
der Verschiebungsrichtung VR definierten Hinterkante des Filterungsfensters
FF2 gerade mit der zuvor bestimmten Position des stärksten lokalen Minimums
MIN2 bzw. der (scheinbar) fallenden Flanke des Abtastsignals AS
bzw. des Strichcodes zusammenfällt.
Bezüglich
der Verschiebungsrichtung VR lässt
sich die Hinterkante somit auch als Fensteranfang des Filterungsfensters
definieren.
-
Anschließend wird
in dem Filterungsfenster FF2 die nächste steigende Flanke des
Abtastsignals AS bzw. des Strichcodes in Form des nunmehr fensterintern
stärksten
lokalen Maximums MAX2 des Ableitungssignals AS' bestimmt, wobei vorliegend innerhalb
des Filterungsintervalls FF2 gemäß der 4 keine
weiteren lokalen Maxima aufzufinden sind, was einer idealisierten
Situation entspricht. Anschließend wird
das Filterungsfenster FF2 wiederum in Richtung des Pfeils VR in
eine neue Position verschoben, die in der 4 mit FF3
(strichpunktiertes Rechteck) bezeichnet ist. In dem Filterungsfenster
FF3 wird anschließend
nach der nächsten
stärksten
fallenden Flanke des Abtastsignals AS bzw. des Strichcodes gesucht,
die vorliegend mit dem lokalen Minimum MIN4 des Ableitungssignals
AS' korrespondiert.
Diese Vorgehensweise wird anschließend bis zum Erreichen des
Endes des Abtastsignals AS bzw. des Ableitungssignals AS' fortgesetzt, wobei
jeweils bestimmte Flankenwerte in der Speichereinrichtung 6 (1)
abgelegt werden.
-
Unter
Verwendung der jeweils stärksten
in einem Filterungsintervall gemäß der 4 aufgefundenen
lokalen Extrema werden anschließend
die entsprechenden Flanken des Abtastsignals AS bzw. des Strichcodes
und damit der dem Strichcode 2 (1) entsprechende
ideale Signalverlauf rekonstruiert. Zu diesem Zweck greift die Datenverarbeitungseinrichtung 5 der
erfindungsgemäßen Vorrichtung 1 aus 1 auf
die Speichereinrichtung 6 zu und rekonstruiert den dem
Strichcode 2 entsprechenden idealen Signalverlauf bzw.
einen entsprechenden idealen Signalverlauf des Abtastsignals anhand
der erfindungsgemäß bestimmten
und in der Speichereinrichtung 6 abgelegten Orte der steigenden
und fallenden Flanken des Abtastsignals AS bzw. des Strichcodes, wobei
zunächst
die jeweils stärksten
bestimmten Flanken berücksichtigt
werden, wie oben beschrieben.
-
Die 5 zeigt
den Verlauf eines Rekonstruktionssignals RS, das erfindungsgemäß anhand der
in der Speichereinrichtung 6 hinterlegten Flankenorte durch
die Datenverarbeitungseinrichtung 5 erzeugt wurde. Wie
insbesondere in den 2 und 3 ist in
der 5 wiederum eine Signalstärke in willkürlichen
Einheiten über
einer in Pixeln bestimmten Ortskoordinate angegeben. Anhand des
Signalverlaufs des Rekonstruktionssignals RS wertet die Datenverarbeitungseinrichtung 5 das
Abtastsignal AS bzw. den Strichcode aus, d. h. der Strichcode 2 (1)
wird decodiert, und ein entsprechendes Ergebnis wird über die
Ausgabeeinrichtung 14 angezeigt.
-
Sollte
dabei der Fall auftreten, dass die Datenverarbeitungseinrichtung 5 anhand
der bestimmten Flankenorte nicht in der Lage ist, den Strichcode 2 zu
decodieren, so kann das im Zuge des vorstehend beschriebenen Verfahrens
seine Ursache darin haben, dass beispielsweise innerhalb des Filterungsfensters
FF1 (4) über
das stärkste
lokale Minimum MIN2 des Ableitungssignals AS' die gesuchte fallende Flanke des Abtastsignals
AS bzw. des Strichcodes nicht korrekt bestimmt wurde. Dies kann insbesondere
dann der Fall sein, wenn sich innerhalb des betrachteten Filterungsintervalls,
d. h. des Filterungsfensters FF1, mehrere, möglicherweise in etwa gleich
starke lokale Extrema MIN1–MIN3
auffinden lassen, von denen einige auf Störeinflüsse zurückzuführen sind.
-
Im
Zuge des erfindungsgemäßen Verfahrens ist
es jedoch in einem solchen Fall ohne nochmaliges Abtasten des Strichcodes
möglich,
eine erneute Decodierung unter Verwendung eines neu bestimmten Flankenortes
vorzunehmen, wobei nunmehr der Ort des zweitstärksten lokalen Extremums MIN1
innerhalb des betreffenden Filterungsfensters FF1 des Ableitungssignals
AS' mit dem Ort
der gesuchten (fallenden) Flanke des Abtastsignals AS bzw. des Strichcodes
identifiziert wird. Sollte auch auf diese Weise keine korrekte Decodierung
des Strichcodes möglich sein,
kann das vorstehend beschriebene Verfahren unter Verwendung des
nächststärksten lokalen
Extremums MIN3 des Ableitungssignals AS' innerhalb des Filterungsfensters FF1
wiederholt werden. Dies geschieht erfindungsgemäß so lange, bis entweder der
Code korrekt ermittelt werden konnte oder bis keine weiteren innerhalb
des Filterungsfensters bestimmte lokale Extrema des Ableitungssignals
AS' in der Speichereinrichtung 6 (1)
zur Verfügung
stehen. In dem letztgenannten Fall ist die Decodierung endgültig gescheitert,
so dass eine erneute Abtastung des Strichcodes 2 (1)
notwendig ist.
-
Alternativ
oder zusätzlich
kann jedoch auch im Falle einer korrekten Decodierung eine erneute Abtastung
des Strichcodes vorgenommen werden, um das Decodierungsergebnis
zu verifizieren. Bei automatischer Abtastung des Strichcodes 2 durch die
Abtasteinrichtung 3 der 1 kann in
diesem Falle durch die Signalverarbeitungseinrichtung 4 bzw, die
Datenverarbeitungseinrichtung 5 direkt ein entsprechender
Steuerbefehl zum erneuten Abtasten des Strichcodes an die Abtasteinrichtung 3 bzw.
an entsprechende Bewegungsmittel (nicht gezeigt) übermittelt
werden. Bei manueller Betätigung
der Abtasteinrichtung 3 kann entsprechend eine Benachrichtigung über die
Ausgabeeinrichtung 14 an eine Bedienperson (nicht gezeigt)
ausgegeben werden.
-
Die 6 zeigt
anhand eines Ablaufdiagramms eine Ausgestaltung des erfindungsgemäßen Verfahrens
zum Erkennen eines Strichcodes.
-
Das
Verfahren beginnt in Schritt 600. In einem anschließenden Schritt 602 erfolgt
die Abtastung des Strichcodes mittels einer geeigneten Abtasteinrichtung,
so dass ein entsprechendes Abtastsignal erzeugt wird, wie weiter
oben anhand der 1 bereits detailliert erläutert. Anschließend wird in
Schritt 604 eine Autokorrelationsfunktion auf das Abtastsignal
angewendet, um dessen elementare Breite zu bestimmen. In einem weiteren
Verfahrensschritt 606 wird numerisch aus dem Abtastsignal
ein Ableitungssignal bestimmt, anhand dessen sich über eine
Bestimmung lokaler Extrema (Maxima und Minima) Flanken des Abtastsignals
und damit des abgetasteten Strichcodes bestimmen lassen.
-
Um
hierbei gegenüber
vorbekannten Verfahren eine höhere
Robustheit zu erzielen, wird in einem nachfolgenden Schritt 608 in
Abhängigkeit
von der ermittelten elementaren Breite und weiteren bekannten Eigenschaften
des abgetasteten Strichcodes ein Filterungsfenster definiert, innerhalb
dessen – wie vorstehend
beschrieben – lokale
Extrema des Ableitungssignals bestimmt werden. Diese Extremwert-Bestimmung
geschieht in einem nachfolgenden Schritt 610, wobei neben
einem jeweils ermittelten stärksten
lokalen Extremwert gegebenenfalls auch weitere, schwächere lokale
Extrema des Ableitungssignals innerhalb eines gegebenen Filterungsfensters
bestimmt und abgespeichert werden, wie weiter oben anhand der 4 bereits
detailliert beschrieben.
-
Anschließend erfolgt
in Schritt 612 eine Abfrage dahin gehend, ob das Abtastsignal
bereits vollständig
bearbeitet wurde. Wird diese Abfrage verneint (n), so erfolgt in
Schritt 614 eine Verschiebung des Filterungsfensters bis
zum Ort des zuletzt bestimmten, stärksten Extremwertes des Ableitungssignals.
Daraufhin springt das Verfahren nach Schritt 610 zurück. Wird
jedoch die Abfrage in Schritt 612 bejaht (j), so wird der
Code anhand der bestimmten Flanken (entsprechend den bestimmten
stärksten
lokalen Extrema des Ableitungssignals) ausgewertet (Schritt 616).
-
Anschließend erfolgt
in Schritt 618 eine Abfrage dahin gehend, ob der Code korrekt
ausgewertet wurde, d. h. ob mit den bestimmten stärksten Extremwerten
eine sinnvolle Decodierung des Strichcodes möglich war. Wird die Abfrage
in Schritt 618 bejaht, so erfolgt in einem anschließenden Schritt 620 eine entsprechende
Ausgabe an eine Bedienperson, beispielsweise in Form eines akustischen
Signals, und das erfindungsgemäße Verfahren
endet mit Schritt 622.
-
Wird
jedoch die Abfrage in Schritt 618 verneint, so erfolgt
in einem anschließenden
Schritt 624 eine weitere Abfrage dahin gehend, ob weitere (schwächere) Extremwerte
des Abtastsignals bzw. entsprechende Flanken des Strichcodes für eine alternative
Decodierung zur Verfügung
stehen. Wird diese Abfrage verneint, so erfolgt in einem anschließenden Schritt 626 wiederum
eine entsprechende Ausgabe und das Verfahren endet in Schritt 622. Wird
die Abfrage in Schritt 624 hingegen bejaht, wird anschließend in
Schritt 628 das entsprechend nächststärkste lokale Extremum des Abtastsignals zur
Bestimmung einer Flanke des Abtastsignals bzw. des Strichcodes herangezogen
und das Verfahren mit einer (erneuten) Codeauswertung (ohne erneute Abtastung)
in Schritt 616 fortgesetzt.
-
Zusätzlich besteht – ausgehend
von den Verfahrensschritten 620 bzw. 626 – im Zuge
der in 6 gezeigten Ausführungsform des erfindungsgemäßen Verfahrens
auch die Möglichkeit,
sowohl bei erfolgreicher Decodierung des Strichcodes (Schritt 620) als
auch bei erfolgloser Decodierung des Strichcodes (Schritt 626)
nach Schritt 602 zurückzukehren
und entsprechend eine erneute Abtastung des Strichcodes vorzunehmen – entweder,
um das Decodierungsergebnis zu verifizieren oder um bei gescheiterter
Decodierung ein neues Abtastsignal für einen weiteren Decodierungsversuch
aufzunehmen. Dies ist in der 6 anhand
gestrichelter Linien zeichnerisch dargestellt.