DE19711873C2 - Verfahren und Vorrichtung zum Lesen eines Strichcodes - Google Patents

Verfahren und Vorrichtung zum Lesen eines Strichcodes

Info

Publication number
DE19711873C2
DE19711873C2 DE19711873A DE19711873A DE19711873C2 DE 19711873 C2 DE19711873 C2 DE 19711873C2 DE 19711873 A DE19711873 A DE 19711873A DE 19711873 A DE19711873 A DE 19711873A DE 19711873 C2 DE19711873 C2 DE 19711873C2
Authority
DE
Germany
Prior art keywords
code
elements
scanning
width
bar code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE19711873A
Other languages
English (en)
Other versions
DE19711873A1 (de
Inventor
Juergen Reichenbach
Hubert Uhl
Peter Hauser
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sick AG
Original Assignee
Sick AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sick AG filed Critical Sick AG
Priority to DE19711873A priority Critical patent/DE19711873C2/de
Priority to US09/044,494 priority patent/US6073847A/en
Publication of DE19711873A1 publication Critical patent/DE19711873A1/de
Application granted granted Critical
Publication of DE19711873C2 publication Critical patent/DE19711873C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1491Methods for optical code recognition the method including quality enhancement steps the method including a reconstruction step, e.g. stitching two pieces of bar code together to derive the full bar code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Mechanical Optical Scanning Systems (AREA)

Description

Die vorliegende Erfindung betrifft ein Verfahren zum Lesen eines aus einer vorgegebenen Anzahl von Codeelementen beste­ henden Strichcodes gemäß dem Oberbegriff des Anspruchs 1. Weiterhin ist die Erfindung auf eine Vorrichtung zur Durch­ führung dieses Verfahrens gerichtet.
Übliche Verfahren dieser Art können einen Strichcode nur dann decodieren, wenn der Strichcode durch einen Abtaststrahl entlang zumindest einer Abtastlinie über seine gesamte Lauf­ länge überstrichen wird. Um eine solche vollständige Über­ streichung zu gewährleisten, muß der Winkel zwischen der Abtastrichtung und der Senkrechten zur Strichorientierung des Strichcodes (Tiltwinkel) nahezu gleich Null bzw. möglichst klein sein.
Um eine entsprechende Ausrichtung des abzutastenden Strichco­ des zu erreichen, sind entweder aufwendige Kontrollmaßnahmen zur Lagekontrolle des Strichcodes oder beispielsweise Vor­ richtungen zur omnidirektionalen Abtastung des Strichcodes erforderlich.
Aus der US 5,155,344 ist ein Verfahren zum Lesen und Dekodieren eines Strichcodes bekannt, bei dem eine Dekodierung auch dann möglich ist, wenn die Abtastlinien schräg zu den Codeelementen verlaufen. Dabei werden zur Rekonstruktion der Codeelemente die beim Überstreichen eines Codeelementes erzeugten Amplitudensignale am Empfängerausgang aufsummiert, woraufhin die Codeelemente aus diesen Amplitudensum­ mensignalen abgeleitet werden. Die Rekonstruktion der Codeelemente erfolgt somit aus analogen Amplitudensignalwerten.
Auch aus der WO 94/07213 ist ein Verfahren zum Lesen und Dekodieren eines Strichcodes bekannt. Bei diesem Verfahren wird jeweils das mit dem aktuellen Abtaststrahl erfasste Codesegment unmittelbar mit den bereits in einem vorherigen Schritt erfassten Codesegment verglichen, so dass eine abtastzeilenweise Auswertung der überstrichenen Codeelemente erfolgt.
Der vorliegenden Erfindung liegt die Aufgabe zugrunde, ein Verfahren und eine Vorrichtung der eingangs genannten Art so auszubilden, daß ein abgetasteter Strichcode auch dann sicher erkannt wird, wenn der Tiltwinkel so groß ist, daß ein voll­ ständiges Überstreichen des Strichcodes entlang einer einzi­ gen Abtastlinie nicht möglich ist.
Diese Aufgabe wird ausgehend von einem Verfahren der eingangs genannten Art dadurch gelöst, dass für im wesentlichen jede Abtastlinie diejenigen aus einem Codeelementabschnitt oder aus mehreren aufeinanderfolgenden Codeelementabschnitten bestehenden Codesegmente erfasst werden, die aufgrund vorge­ gebener Entscheidungskriterien als zulässige Codesegmente erkannt werden, dass die Codeelementabschnitte der erfassten Codesegmente in einem Bildspeicher abgespeichert werden, dass nach Abspeichern der Codeelementabschnitte aller erfass­ ten Codesegmente aus für unterschiedliche Abtastlinien er­ fassten, einander zugeordneten, jeweils dasselbe Codeelement des Strichcodes repräsentierenden, abgespeicherten Codeele­ mentabschnitten jeweils ein Referenz-Codeelement ermittelt wird, dass die Referenz-Codeelemente in einem Bildspeicher abgespeichert werden, und dass aus den abgespeicherten Refe­ renz-Codeelementen das binäre Signal erzeugt wird.
Der die Vorrichtung betreffende Teil der gestellten Aufgabe wird durch eine Vorrichtung der eingangs genannten Art ge­ löst, die gekennzeichnet ist durch eine Codesegmentauswahl­ einrichtung zur Bestimmung von zulässigen, aus einem Codeele­ mentabschnitt oder aus mehreren aufeinanderfolgenden Codeele­ mentabschnitten bestehenden Codesegmenten aufgrund vorgegebe­ ner Entscheidungskriterien, eine Codesegmenterfassungsein­ richtung zur Erfassung der von der Codesegmentauswahleinrich­ tung als zulässig erkannten Codesegmente für im wesentlichen jede Abtastlinie, einen Bildspeicher zum Abspeichern der Codeelementabschnitte aller erfassten Codesegmente, eine Referenz-Codeelement-Bestimmungseinrichtung zur Ermittlung jeweils eines Referenz-Codeelements aus denjenigen in dem Bildspeicher abgespeicherten Codeelementabschnitten, die jeweils für unterschiedliche Abtastlinien erfasst wurden und einander so zugeordnet sind, dass sie jeweils dasselbe Code­ element des Strichcodes repräsentieren, einen Bildspeicher zum Abspeichern der Referenz-Codeelemente, und eine Signaler­ zeugungseinrichtung zur Erzeugung des binären Signals aus den abgespeicherten Referenz-Codeelementen.
Als Codeelemente werden dabei sowohl die Balken als auch die zwischen den Balken vorhandenen Lücken eines Strichcodes bezeichnet. Die Codeelemente werden bei der Abtastung durch den die Codeelemente überstreichenden Abtaststrahl in einzel­ ne Bereiche aufgeteilt, die im folgenden als Codeelementab­ schnitte bezeichnet werden. Aus in Abtastrichtung hinterein­ ander angeordneten Codeelementabschnitten bestehende Bereiche des Strichcodes werden im folgenden als Codesegmente bezeich­ net, die im Minimalfall aus einem einzelnen Codeelementab­ schnitt und im Maximalfall aus Codeelementabschnitten der Codeelemente des gesamten Strichcodes bestehen.
Durch das erfindungsgemäße Verfahren wird ein bezüglich der Abtastrichtung um den Tiltwinkel verkipptes, zweidimensiona­ les Bild des Strichcodes erzeugt, aus dem für unterschiedli­ che Abtastlinien einander zugeordnete, jeweils dasselbe Code­ element des abgetasteten Strichcodes repräsentierende Code­ elementabschnitte extrahiert werden, aus denen jeweils ein Referenz-Codeelement gebildet wird. Anhand der ermittelten Referenz-Codeelemente wird das gesuchte binäre Signal erzeugt und der Strichcode decodiert.
Vorteilhaft ist dabei, daß pro Strichcode nur eine einzige Decodierung und nicht eine Decodierung für jede Abtastlinie durchgeführt werden muß. Daher können sehr hochwertige, kom­ plexe und damit zeitintensive Algorithmen verwendet werden, die eine geringe Fehlerquote besitzen.
Die über den Strichcode im wesentlichen parallel verlaufenden Abtastlinien werden durch eine Relativbewegung zwischen dem Abtaststrahl und dem den Strichcode tragenden Gegenstand erzeugt. Dabei kann entweder der Gegenstand im wesentlichen senkrecht zur Abtastrichtung geführt werden oder der Abtast­ strahl beispielsweise durch die Schwingbewegung einer Ablenk­ einheit quer zur Abtastrichtung hin- und herbewegt werden. Grundsätzlich ist es auch denkbar, daß der Strichcodeleser den Strichcode mit mehreren, im wesentlichen parallel zuein­ ander verlaufenden Abtaststrahlen gleichzeitig abtastet, so daß jeder Abtastlinie oder jeweils einem Teil der Abtastlini­ en ein separater Abtaststrahl zugeordnet ist. Auch beliebige Kombinationen dieser beschriebenen Verfahren sind denkbar.
Nach einer vorteilhaften Ausführungsform der Erfindung wird ein in Abtastrichtung vorhandener Versatz zwischen für unter­ schiedliche Abtastlinien erfaßten Codesegmenten, der aufgrund einer schräg zu den Codeelementen verlaufenden Abtastrichtung entsteht, dahingehend ausgewertet, daß als einander zugeord­ nete Codeelementabschnitte jeweils für unterschiedliche Ab­ tastlinien erfaßte, entsprechend versetzt zueinander angeord­ nete Codeelementabschnitte verwendet werden. Dabei wird der Versatz vorteilhaft bezüglich einer im wesentlichen senkrecht auf den Abtastlinien stehenden Referenzgeraden bestimmt.
Durch die Auswertung des Versatzes zwischen den für unter­ schiedliche Abtastlinien erfaßten Codesegmenten wird das aus den erfaßten Codesegmenten bestehende Abbild des Strichcodes entzerrt, d. h. die Verkippung des Strichcodes gegenüber der Abtastrichtung wird durch eine Scherung kompensiert. Dabei kann zusätzlich überprüft werden, ob eine Verschiebung der erfaßten Codesegmente um eine geringe Anzahl von Codeelemen­ ten, beispielsweise bis zu drei Codeelementen, die durch un­ terschiedliche Fehlereinflüsse, wie beispielsweise durch Ab­ tastrasterung, Drehzahlschwankung o. dgl., auftreten, zwischen unterschiedlichen Abtastlinien kompensiert werden muß. Die Größe einer solchen Verschiebung wird durch einen Vergleich der Breiten für aufeinanderfolgende Abtastlinien erfaßter Codeelementabschnitte verifiziert.
Nach einer weiteren vorteilhaften Ausführungsform der Erfin­ dung werden die jeweils für unterschiedliche Abtastlinien er­ faßten, einander zugeordneten Codeelementabschnitte durch Be­ stimmung des Tiltwinkels zwischen der Abtastrichtung und der Senkrechten zur Strichorientierung des Strichcodes bestimmt. Aus dem bestimmten Tiltwinkel können auf unterschiedliche Weise die einander zugeordneten Codeelementabschnitte ermit­ telt werden. Beispielsweise kann aus dem Tiltwinkel der Ver­ satz zwischen den jeweiligen Codeelementabschnitten berechnet werden, so daß dieser Versatz kompensiert werden kann.
Vorteilhaft kann der Tiltwinkel dadurch bestimmt werden, daß eine zweidimensionale Fouriertransformation der erfaßten Codesegmente durchgeführt wird und daß die maximalen Amplitu­ den des ermittelten Betragsspektrums bestimmt werden, wobei der Tiltwinkel anschließend aus der Lage der maximalen Ampli­ tuden ermittelt wird. Aus dem Tiltwinkel können dann wiederum die einander zugeordneten erfaßten Codeelementabschnitte ab­ geleitet werden.
Nach einer weiteren bevorzugten Ausführungsform der Erfindung werden der Beginn und/oder das Ende des Strichcodes mittels im Strichcode vorgesehener Start- bzw. Stoppmuster ermittelt. Vorteilhaft ist der Strichcode normgerecht mit Weißzonen ab­ geschlossen, so daß durch diese Weißzonen die Start- bzw. Stoppmuster gebildet werden. Zusätzlich oder alternativ kön­ nen im Strichcode zur Bildung des Start- bzw. Stoppmusters auch Start- bzw. Stoppmarkierungen vorgesehen sein.
Das Vorsehen von Start- bzw. Stoppmustern gibt zum einen bei der Abtastung einen Hinweis auf einen möglichen Beginn bzw. auf das Ende eines abgetasteten Strichcodes und wird darüber hinaus erfindungsgemäß zur Steuerung der Erfassung von zuläs­ sigen Codesegmenten entlang der Abtastlinien verwendet. Nach einer bevorzugten Ausführungsform beginnt beispielsweise die Erfassung der zulässigen Codesegmente, wenn das Start- bzw. das Stoppmuster für zumindest zwei benachbarte Abtastlinien erkannt wird. Bevorzugt erfolgt die Erfassung für die erste erkannte Start- bzw. Stoppmuster enthaltende Abtastlinie so­ wie für die sich daran anschließenden Abtastlinien. Wird zu­ mindest für zwei hintereinander liegende Abtastlinien ein Start- bzw. Stoppmuster erkannt, so wird davon ausgegangen, daß der Beginn eines Strichcodes vorliegt. Bei schräg zur Ab­ tastrichtung angeordneten Codeelementen werden somit für die nacheinander folgenden Abtastlinien jeweils die mit dem Start- bzw. Stoppmuster beginnenden Codesegmente erfaßt, wo­ bei die Erfassung auch für Abtastlinien fortgesetzt wird, für die kein Start- bzw. Stoppmuster erkannt wird.
Bevorzugt wird die Erfassung der zulässigen Codesegmente be­ endet, wenn mehrfach ein zum erkannten Start- bzw. Stoppmu­ ster korrespondierendes Stopp- bzw. Startmuster erkannt wird, da in diesem Fall davon ausgegangen werden kann, daß im we­ sentlichen der gesamte Bereich des Strichcodes entlang der verschiedenen Abtastlinien vom Abtaststrahl überstrichen wur­ de.
Nach einer weiteren vorteilhaften Ausführungsform der Erfin­ dung beginnt die Erfassung der zulässigen Codesegmente, wenn für zumindest zwei aufeinanderfolgende Abtastlinien im we­ sentlichen identische Codesegmentabschnitte erkannt werden. Diese Variante ist insbesondere für den Fall vorteilhaft, wenn der Strichcode nicht auf einer ebenen Fläche, sondern beispielsweise auf einer gekrümmten Fläche eines Gegenstands oder über eine Kante verlaufend angebracht ist. In diesen Fällen kann es vorkommen, daß beim Abtastvorgang die erste, den Strichcode schneidende Abtastlinie weder durch ein Start- noch durch ein Stoppmuster führt, sondern zunächst ein Mit­ telteil des Strichcodes abgetastet wird. Durch den Vergleich von abgetasteten Codesegmenten zumindest zwei aufeinanderfol­ gender Abtastlinien kann auch in diesem Fall mit hoher Wahr­ scheinlichkeit das Auftreten eines Strichcodes erkannt wer­ den.
Nach einer weiteren bevorzugten Ausführungsform der Erfindung wird der Versatz zwischen den für unterschiedliche Abtastli­ nien erfaßten Codesegmenten durch den Versatz zwischen den für die entsprechenden Abtastlinien erkannten Startmustern bestimmt. Da die Position der Startmuster innerhalb der je­ weiligen Abtastlinien relativ einfach bestimmbar ist, ist auf diese Weise der Versatz zwischen den für unterschiedliche Ab­ tastlinien erfaßten Codesegmenten einfach ermittelbar. Grund­ sätzlich können anstelle der Startmuster auch die Positionen der Stoppmuster bestimmt und ausgewertet werden.
Vorteilhaft können zum Test auf zulässige Codesegmente eine Vielzahl von vorgegebenen Entscheidungskriterien überprüft werden. Insbesondere kann in folgenden Fällen das Auftreten eines Strichcodes und damit eines zulässigen Codesegments ausgeschlossen werden:
  • - Die Breite eines abgetasteten Elements in Abtastrichtung unterschreitet eine zulässige minimale Breite. Da die Codeelemente eines Strichcodes ausschließlich fest vor­ gegebene Breiten aufweisen, kann beim Unterschreiten ei­ ner vorgegebenen Mindestbreite das abgetastete Element nicht innerhalb eines Strichcodes angeordnet sein. Da die ermittelte Breite eines abgetasteten Elements bei V- Scannern vom Abtastabstand abhängig ist, kann dieses Entscheidungskriterium vor allem dann verwendet werden, wenn der Abtastabstand und eventuell die Druckauflösung des Strichcodes bekannt sind bzw. wenn Parallelscanner verwendet werden.
  • - Die Breite eines abgetasteten Elements in Abtastrichtung überschreitet eine zulässige maximale Breite. Hier gel­ ten analog die gleichen Ausführungen wie für die Unter­ schreitung einer zulässigen minimalen Breite der Codee­ lemente.
  • - Bei Verwendung eines Zweibreitencodes mit Modulbreiten zwischen einem und maximal drei Einheitsbreiten ist das Verhältnis aufeinanderfolgender, abgetasteter Elemente kleiner oder gleich 3 : 1 bzw. größer oder gleich 1 : 3. Bei Verwendung eines Mehrbreitencodes mit Modulbreiten von 1 bis 4 Einheitsbreiten ist das entsprechende Verhältnis kleiner oder gleich 4 : 1 bzw. größer oder gleich 1 : 4. Da für die jeweiligen Strichcodearten die maximalen bzw. minimalen Breitenverhältnisse zwischen aufeinanderfol­ genden Codeelementen bekannt sind, kann bei Über- bzw. Unterschreiten der genannten Bedingungen keine Strich­ codeinformation vorliegen.
  • - Die Länge bzw. die Elementanzahl des Codesegments unter­ schreitet eine vorgegebene Mindestlänge bzw. Mindestan­ zahl. Hierdurch wird ausgeschlossen, daß zu kurze, keine wesentlichen Informationen enthaltenden abgetasteten Be­ reiche fälschlicherweise als zulässige Codesegmente ak­ zeptiert werden.
  • - Die Länge bzw. Elementanzahl des Codesegments in Ab­ tastrichtung überschreitet eine vorgegebene Maximallän­ ge, insbesondere die Lauflänge des Strichcodes, bzw. die Maximalanzahl der möglichen Codeelemente. Insbesondere wenn während der Abtastung die Lauflänge des Strichcodes bzw. die Maximalanzahl der möglichen Codeelemente über­ schritten wird, ist offensichtlich, daß der abgetastete Bereich keinen Strichcode darstellen kann.
Nach einer weiteren vorteilhaften Ausführungsform der Erfin­ dung wird jeweils die Breite eines Referenz-Codeelements durch die Bildung des Mittelwerts der Breiten der entspre­ chenden, einander zugeordneten Codeelementabschnitte der für die unterschiedlichen Abtastlinien erfaßten Codesegmente be­ stimmt. Auf diese Weise werden unterschiedliche Breiten von einander zugeordneten, erfaßten Codeelementabschnitten ausge­ glichen, so daß der gebildete Mittelwert im wesentlichen der Breite des abgetasteten Codeelements entspricht.
Weitere vorteilhafte Ausführungsformen der Erfindung sind in den Unteransprüchen angegeben.
Im folgenden wird die Erfindung anhand eines Ausführungsbei­ spiels unter Bezugnahme auf die Zeichnungen näher erläutert; in diesem zeigen:
Fig. 1 eine schematische Darstellung eines Strichcodele­ sers sowie eines von einem Abtaststrahl des Strich­ codelesers abgetasteten Gegenstands,
Fig. 2 einen Strichcode, der gemäß dem erfindungsgemäßen Verfahren abgetastet wird,
Fig. 3a) bis d) vier Verfahrensschritte des erfindungsge­ mäßen Verfahrens zum Abtasten eines Strichcodes,
Fig. 4a) bis c) drei Verfahrensschritte einer weiteren Ausführungsform des erfindungsgemäßen Verfahrens,
Fig. 5 eine schematische Darstellung einer Abtastung eines Strichcodes, der auf einem zylindermantelförmigen Gegenstand angebracht ist und
Fig. 6 schematisch dargestellte Abtastergebnisse eines Zwischenschritts des erfindungsgemäßen Verfahrens bei einer Abtastung gemäß Fig. 5.
Fig. 1 zeigt einen Strichcodeleser 1, der einen Abtaststrahl 2 in Richtung auf einen Gegenstand 3 aussendet, auf dessen Oberfläche ein abzutastender Strichcode angeordnet ist. Wie durch einen Pfeil 4 angedeutet ist, führt der Abtaststrahl 2 eine Schwenkbewegung um einen Winkel α aus, so daß er zwi­ schen den in Fig. 1 mit dem Bezugszeichen 2' und 2" bezeich­ neten Positionen hin und her wandert. Das Verschwenken des Abtaststrahls 2 kann dabei beispielsweise durch einen inner­ halb des Strichcodelesers 1 angeordneten rotierenden Spiegel erfolgen.
Durch das Verschwenken des Abtaststrahls 2 um den Winkel α wird somit die Oberfläche des Gegenstands 3 entlang einer Ab­ tastlinie 5 abgetastet.
Um eine Fläche des Gegenstands 3 mit dem Abtaststrahl 2 über­ streichen zu können, wird beispielsweise der Gegenstand 3 ge­ mäß dem aus der Zeichnungsfläche herausragenden Pfeil 6 senk­ recht zu der Schwenkebene des Abtaststrahls 2 bewegt. Der Pfeil 6 gibt somit die Förderrichtung des Gegenstands 3 an. Es ist grundsätzlich jedoch auch möglich, den Abtaststrahl 2 zusätzlich zu der beschriebenen Schwenkbewegung eine Schwenk­ bewegung parallel zum Pfeil 6 ausführen zu lassen, so daß auch bei unbewegtem Gegenstand 3 eine flächige Abtastung ei­ nes Bereichs der Oberfläche des Gegenstands 3 erfolgt.
Weiterhin ist es grundsätzlich möglich, daß der Strichcodele­ ser 1 eine Vielzahl von Abtaststrahlen 2 aussendet, die bei­ spielsweise synchron innerhalb im wesentlichen parallel zu­ einander verlaufender Schwenkebenen verschwenkt werden. Die Erzeugung einer Vielzahl von parallelen Abtaststrahlen ist dabei beispielsweise mittels eines Rasterspiegelrades mög­ lich.
Fig. 2 zeigt einen Strichcode 7, der eine Vielzahl von aus Balken und Lücken bestehenden Codeelementen 8 umfaßt und auf der Oberfläche eines Gegenstands 3 gemäß Fig. 1 angeordnet ist.
Um den Strichcode 7 mit bekannten Abtastverfahren sicher de­ codieren zu können, muß der Strichcode 7 über seine gesamte Länge L von einem Abtaststrahl 9 überstrichen werden. Das be­ deutet, daß der Winkel zwischen der durch den Abtaststrahl 9 angegebenen Abtastrichtung und einer Senkrechten 10 zu der Strichorientierung des Strichcodes, der sogenannte Tiltwin­ kel, möglichst gering, insbesondere möglichst gleich Null sein muß, wie es bezüglich des Abtaststrahls 9 in Fig. 2 der Fall ist. Der Abtaststrahl 9 fällt somit mit der Senkrechten 10 zusammen.
Die in Fig. 2 dargestellten Abtastlinien 5 stellen Abtastli­ nien dar, entlang derer ein Abtaststrahl 2 die Oberfläche des Gegenstands 3 abtastet. Grundsätzlich werden im folgenden al­ le Abtastlinien allgemein mit dem Bezugszeichen 5 bezeichnet. Lediglich wenn auf eine bestimmte Abtastlinie Bezug genommen wird, wird diese durch einen tiefgestellten Index mit 51, 52, . . . 512 bezeichnet. Gleiches gilt für sonstige in den Zeich­ nungen dargestellte Elemente, deren Bezugszeichen jeweils für die Bezugnahme auf ein spezielles Element mit einem tiefge­ stellten Index versehen werden.
Gemäß der in Fig. 2 dargestellten Abtastlinien 5 wird der Ab­ taststrahl 2 jeweils nach vollständigem Überstreichen seines Schwenkbereichs beim Zurückführen in seine Ausgangsposition um einen Winkel verschwenkt, der jeweils eine Verschiebung der Abtastlinien 5 um den Abstand a in Richtung des Pfeils 6 bewirkt. Die sich ergebenden Abtastlinien 5 verlaufen da­ durch, wie in Fig. 2 dargestellt, im wesentlichen parallel zueinander in gleichmäßigen Abständen a.
Der Strichcode 7 ist gegenüber der durch die Abtastlinien 5 definierten Abtastrichtung so verkippt, daß bei keinem Durch­ lauf des Abtaststrahls 2 entlang einer der Abtastlinien 5 al­ le Codeelemente 8 des Strichcodes 7 überstrichen werden. Eine Erfassung und Decodierung des Strichcodes 7 anhand des ent­ lang einer einzigen Abtastlinie 5 geführten Abtaststrahls 2, wie sie aus dem Stand der Technik bekannt ist, ist somit bei der in Fig. 2 dargestellten schrägen Anordnung des Strich­ codes 7 nicht möglich.
Anhand Fig. 3 wird im folgenden das erfindungsgemäße Verfah­ ren zur vollständigen Erfassung und Decodierung eines ent­ sprechend Fig. 2 schräg zur Abtastrichtung angeordneten Strichcodes 7 näher beschrieben:
Die Oberfläche des Gegenstands 3 wird entlang der in Fig. 3a) dargestellten Abtastlinien 5 durch den Abtaststrahl 2 abgeta­ stet, wobei der reflektierte Abtaststrahl 2 von einer Auswer­ teeinheit empfangen und auf abgetastete Elemente auf der Oberfläche des Gegenstands 3 untersucht wird. Dabei werden erkannte Elemente anhand vorgegebener Entscheidungskriterien daraufhin geprüft, ob die abgetasteten Elemente möglicherwei­ se Strichcodeinformation enthalten können. Beispielsweise wird jeweils die Breite jedes der erkannten Elemente in Ab­ tastrichtung ermittelt und mit der maximal zulässigen Breite eines Codeelements 8 des Strichcodes 7 verglichen. Ist die Breite eines abgetasteten Elements größer als die maximal zu­ lässige Breite eines Codeelements 8, so kann das abgetastete Element kein Codeelement 8 darstellen.
Weiterhin wird jeweils geprüft, ob die Breite der abgetaste­ ten Elemente kleiner als die zulässige Mindestbreite eines Codeelements 8 des Strichcodes 7 ist. Ist dies der Fall, so kann das abgetastete Element kein Element des Strichcodes 7 sein.
Da die ermittelte Breite eines abgetasteten Elements bei Ver­ wendung eines V-Scanners vom Abstand zwischen dem den Abtast­ strahl aussendenden Strichcodeleser 1 und der das Element tragenden Oberfläche des Gegenstands 3 abhängig ist, sind die Prüfung auf minimale und maximale zulässige Elementbreite nur bei Kenntnis des Abtastabstandes oder beispielsweise bei Ver­ wendung eines Parallelscanners anwendbar.
Werden aufeinanderfolgende Dunkel- und Hellzonen entlang ei­ ner Abtastlinie 5 erkannt, so wird geprüft, ob das Verhältnis aufeinanderfolgender Hell- und Dunkelzonen größer bzw. klei­ ner einem vorgegebenen Verhältnis ist. Dieser vorgegebene Wert ist von der Art des abzutastenden Strichcodes abhängig. Bei einem Zweibreitencode, bei dem Codeelementbreiten von ei­ ner bis drei Einheitsbreiten existieren, kann das Verhältnis aufeinanderfolgender Codeelemente nicht größer als 3 : 1 bzw. nicht kleiner als 1 : 3 sein. Wird das Verhältnis von 3 : 1 über- bzw. das Verhältnis von 1 : 3 unterschritten, so können die ab­ getasteten Elemente keine Codeelemente 8 des Strichcodes 7 darstellen. Entsprechendes gilt für einen Mehrbreitencode, der die Codeelementbreiten 1, 2, 3 und 4 besitzt. In diesem Fall können abgetastete Elemente, bei denen aufeinanderfol­ gende Hell-Dunkelzonen ein Breitenverhältnis unter 1 : 4 bzw. über 4 : 1 besitzen, als nicht zum Strichcode 7 gehörige Ele­ mente verworfen werden.
Werden Elemente erkannt, die aufgrund der bisher beschriebe­ nen Entscheidungskriterien nicht verworfen werden, so werden diese Elemente in folgender Weise daraufhin überprüft, ob sie den Beginn oder das Endes des Strichcodes 7 darstellen kön­ nen:
Ist der abzutastende Strichcode 7 normgerecht mit Weißzonen 11 abgeschlossen, wie es in Fig. 3 dargestellt ist, so kann der Beginn bzw. das Ende des Strichcodes 7 durch das Verhält­ nis der Breite der Weißzone 11 zu der Breite des sich daran anschließenden Codeelements 8 erkannt werden. Falls das Ver­ hältnis der Breite der Weißzone zu der Breite der nächsten, das Codeelement 8 bildenden Dunkelzone größer einem vorgege­ benen Minimalwert ist, kann diese abgetastete Dunkelzone das erste Codeelement 8 und somit den Anfang des Strichcodes 7 darstellen. Entsprechend kann ein erkanntes Element als mög­ liches Ende des Strichcodes 7 identifiziert werden, wenn das Verhältnis der Breite des erkannten Elements zu der Breite der sich daran anschließenden Weißzone kleiner einem vorgege­ benen Wert ist. Bei anderen Codearten kann anstelle des Ver­ gleichs der Weißzone mit dem ersten bzw. letzten Codeelement mit einem vorgegebenen anderen Element, bei Code 128 bei­ spielsweise mit dem zweiten bzw. dem vorletzten Balkenelement vorteilhaft sein.
Werden diese beschriebenen, sogenannten Start- bzw. Stoppver­ hältnisse erkannt, so werden die sich entlang der aktuellen Abtastlinie 5 erkannten Elemente als mögliche Codeelementab­ schnitte eines Codesegments des Strichcodes 7 klassifiziert. Als Codeelementabschnitte werden dabei diejenigen Bereiche eines Codeelements bezeichnet, die von der jeweiligen Ab­ tastlinie 5 überstrichen werden, während als Codesegmente je­ weils entlang der Abtastlinien 5 verlaufende Bereiche des Strichcodes 7 bezeichnet werden, die aus einem oder aus meh­ reren aufeinanderfolgenden, auf der jeweiligen Abtastlinie 5 liegenden Codeelementabschnitten bestehen.
Nach Erkennen eines Start- bzw. eines Stoppverhältnisses auf einer Abtastlinie 5 wird das damit erkannte Codesegment dar­ aufhin überprüft, ob es eine Start- bzw. eine Stoppmarkierung der gesuchten Strichcodeart enthält.
Betrachtet man Fig. 3a) so wird entlang der Abtastlinien 5 1 bis 5 5 jeweils die Weißzone 11 und das sich daran anschlie­ ßende Codeelement 8 erkannt. Gemäß Fig. 3b) bilden die von den Abtastlinien 5 1 bis 5 5 abgetasteten Bereiche des Codeele­ ments 8 Codeelementabschnitte 8 1 bis 8 5. Weiterhin werden durch die jeweils auf einer Abtastlinie liegenden Codeele­ mentabschnitte jeweils Codesegmente 12 1 bis 12 12 gebildet, wo­ bei das Codesegment 12 1 beispielsweise aus nur einem Codeele­ mentabschnitt 8 1, das Codesegment 12 2 aus zwei Codeelementab­ schnitten 8 2 das Codeelement 12 3 aus drei Codeelementab­ schnitten 8 3, das Codesegment 12 4 aus vier Codeelementab­ schnitten 8 4 und das Codesegment 125 aus sechs Codeelementab­ schnitten 8 5 besteht. Da jedes dieser Codesegmente 12 1 bis 12 5 den Beginn des Strichcodes 7 bildet, wird bei der Überprüfung dieser Codesegmente jeweils die im Strichcode integrierte Startmarkierung erkannt.
Demgegenüber wird beispielsweise bei der Abtastung entlang der Abtastlinie 5 8 der in Abtastrichtung vor dem Codeelement 8' liegende weiße Bereich zwar dazu führen, daß bei Erkennen des Codeelements 8' zunächst ein mögliches Startverhältnis detektiert wird. Die anschließende Prüfung auf Vorhandensein einer Startmarkierung innerhalb des sich entlang der Ab­ tastlinie 5 8 erkannten Codesegments 12 8 führt jedoch zu der Entscheidung, daß entlang der Abtastlinie 5 8 kein Beginn bzw. Ende des Strichcodes 7 vorliegt.
Die entlang der Abtastlinie 5 8 erkannten Elemente werden an­ hand der beschriebenen Entscheidungskriterien daraufhin über­ prüft, ob sie zusammen mit dem erkannten Codeelement 8' ein zulässiges Codesegment 12 8 des Strichcodes 7 bilden.
Werden zulässige Codesegmente mit Start- bzw. Stoppmarkierun­ gen für zumindest zwei benachbarte Abtastlinien 5 erkannt, wie das im vorliegenden Beispiel für die Codesegmente 12 1 und 12 2 der Fall ist, so werden diese Codesegmente 12 1 und 12 2 so­ wie die bei der weiteren Abtastung erkannten Codesegmente 12 3 bis 12 12 in einen Bildspeicher geschrieben. Das in dem Bildspeicher abgespeicherte, segmentierte Abbild des Strich­ codes 7 ist schematisch in Fig. 3b) dargestellt. Die abge­ speicherten Codeelementabschnitte besitzen gegenüber den Codeelementen des Original-Strichcodes 7 aufgrund des schrä­ gen Verlaufs der Abtastlinien 5 eine um den Faktor 1/cos(Tiltwinkel) größere Breite. Da dieser Faktor für alle Codeelemente gleich ist, kann er durch geeignete Dekodierver­ fahren entsprechend kompensiert werden.
Die Abspeicherung erfaßter Codesegmente 12 wird beendet, wenn mehrfach die zu der erkannten Startmarkierung, durch die die Abspeicherung ausgelöst wurde, korrespondierende Stoppmarkie­ rung erkannt wird. In Fig. 3b) ist diese Stoppmarkierung durch das letzte Codeelement 8" schematisch dargestellt, das bei den Abtastungen entlang der Abtastlinien 5 9, 5 10, 5 11 und 5 12 jeweils erkannt wird. Nach viermaliger Erkennung dieser Stoppmarkierung wird die Abspeicherung der Codesegmente 12 abgeschlossen, so daß das in Fig. 3b) dargestellte segmen­ tierte Abbild des Strichcodes 7 im Bildspeicher vorliegt.
Vorteilhaft können erkannte, zulässige Codesegmente 12 noch daraufhin überprüft werden, ob sie eine vorgegebene Mindest­ länge über- und eine vorgegebene Maximallänge unterschreiten. Nur Codesegmente 12, die beide Bedingungen erfüllen, werden in den Bildspeicher aufgenommen.
Ist die Länge eines zulässigen Codesegments 12 im wesentli­ chen gleich der gesamten Länge des abgetasteten Strichcodes 7, so bedeutet dies, daß der Strichcode 7 über seine gesamte Länge abgetastet wurde und in diesem Fall konventionell deco­ diert werden kann.
In einem nächsten Verfahrensschritt wird gemäß Fig. 3c) das im Bildspeicher abgelegte, segmentierte Abbild des Strich­ codes 7 entzerrt, d. h. die Schräglage des Abbilds bezüglich der Abtastlinien 5 wird durch eine Scherung kompensiert. Da­ bei wird zur Entzerrung die Verschiebung der jeweiligen Posi­ tionen der Startmarkierungen für die einzelnen Abtastlinien 5 bezogen auf eine gemeinsame senkrecht zur Abtastrichtung ste­ hende Referenzgerade 13 ermittelt. Da die entsprechende Ver­ schiebung nicht nur für die jeweilige Startmarkierung, son­ dern für jedes zu der jeweiligen Abtastlinie 5 abgespeicherte segmentierte Codeelement 8 vorhanden ist, genügt es bei­ spielsweise, den Versatz des für die Abtastlinie 5 2 erkann­ ten, eine Startmarkierung bildenden Codeelementabschnittes 8 2 gegenüber der für die Abtastlinie 5 1 erkannten, eine Start­ markierung bildenden Codeelementabschnitt 8 1 zu bestimmen und die für die Abtastlinie 5 2 abgespeicherten Codeelementab­ schnitte des Codesegments 12 2 um den einfachen Versatz, die für die Abtastlinie 5 3 abgespeicherten Codeelementabschnitte des Codesegments 12 3 um den doppelten Versatz, die für die Abtastlinie 5 4 abgespeicherten Codeelementabschnitte des Codesegments 12 4 um den dreifachen Versatz usw. im Bildspei­ cher in einer der Abtastrichtung entsprechenden Richtung zu verschieben, so daß das in Fig. 3c) abgebildete, entzerrte, segmentierte Abbild des Strichcodes 7 im Bildspeicher ent­ steht.
Wie Fig. 3c) zu entnehmen ist, wird jedes Codeelement 8 des Strichcodes 7 im Bildspeicher durch mehrere, einander zuge­ ordnete erfaßte Codeelementabschnitte 8 1, 8 2, 8 3 usw. reprä­ sentiert. Dabei besitzen die meisten der Codeelementabschnit­ te 8 1, 8 2, 8 3 usw. jeweils eine Breite, die der Breite der entsprechenden Codelemente 8 des Strichcodes 7 im wesentli­ chen entspricht. Lediglich die im Bildspeicher erfaßten Code­ elementabschnitte 14, 15 und 16 weisen gegenüber den entspre­ chenden Originalcodeelementen 8''' bzw. 8"" eine verringer­ te Breite auf, da die den erfaßten Codeelementabschnitten 14, 15 und 16 zugeordneten Abtastlinien 5 6, 5 9 und 5 10 die Origi­ nalcodeelemente 8''' und 8"" nicht über deren gesamte Brei­ te schneiden, wie es aus Fig. 3a) ersichtlich ist.
In einem nächsten Verfahrensschritt wird aus den im Bildspei­ cher abgelegten, einander zugeordneten, dasselbe Original­ codeelement 8 repräsentierenden Codeelementabschnitten 8 1, 8 2, 8 3 usw. jeweils ein in Fig. 3d) dargestelltes Referenz- Codeelement 8 R gebildet. Dazu wird jeweils eine Mittelwert­ bildung über die Breite der jeweils einander zugeordneten Codeelementabschnitte 8 1, 8 2, 8 3 usw. durchgeführt, wobei ein­ zelne Binarisierungsfehler toleriert werden.
Da sich die Mittelwertbildung auf einzelne Codeelemente und nicht auf die Position bezieht, kann der Einfluß großflächi­ ger Verzerrungen, der beispielsweise bei gekrümmten Oberflä­ chen besteht, kompensiert werden.
Zur Mittelwertbildung kann optional der arithmetische Mittel­ wert oder der Medianwert verwendet werden.
Der arithmetische Mittelwert berechnet sich dabei entspre­ chend folgender Formeln:
meb(n + 1) = (meb(n).multi(n) + neb)/(multi(n) + 1)
multi(n + 1) = multi(n) + 1
dabei bedeuten
meb(n + 1): neue mittlere Elementbreite
meb(n): bisherige mittlere Elementbreite
neb: Breite des entsprechenden Elements im aktuel­ len Codesegment
multi(n + 1): neue Mehrfachlesung des aktuellen Elements
multi(n): bisherige Mehrfachlesung des aktuellen Ele­ ments.
Wird anstelle der arithmetischen Mittelwertbildung der Me­ dianwert zur Bestimmung des jeweiligen Referenz-Codeelements verwendet, so werden zunächst die einander zugeordneten Code­ elementabschnitte 8 1, 8 2, 8 3 usw. entsprechend ihrer Breiten sortiert und anschließend dem Medianwert als Breite des mitt­ leren Codeelements der sortierten Reihe bestimmt.
In einem letzten Verfahrensschritt wird der aus den Referenz- Codeelementen bestehende Referenz-Strichcode decodiert. Für diese Codierung können sehr hochwertige und komplexe Algo­ rithmen verwendet werden, da eine Decodierung nicht für jede Abtastlinie, sondern für den gesamten Strichcode nur eine einzige Decodierung durchgeführt werden muß.
Fig. 4 zeigt Verfahrensabschnitt einer weiteren Ausführungs­ form des erfindungsgemäß ausgebildeten Verfahrens, bei dem gegenüber den in Fig. 3 dargestellten Verfahrensabschnitten die Abspeicherung und Mittelwertbildung der erfaßten Codeele­ mentabschnitte 8 1, 8 2, 8 3 usw. in einem Schritt durchgeführt werden. Im Gegensatz zu der Variante gemäß Fig. 3 werden die im Bildspeicher noch in Schräglage abgespeicherten Codeele­ mentabschnitte 8 1, 8 2, 8 3 usw. gemäß den beschriebenen Verfah­ rensschritten entzerrt, woraufhin ohne separate Abspeicherung unmittelbar die Mittelwertbildung durchgeführt wird. Für je­ des Codeelement muß dann nur noch die entzerrte Position und die Mehrfachlesung im Bildspeicher abgespeichert werden, wie es in Fig. 4c) dargestellt ist. Auf diese Weise kann der Speicherplatzbedarf des erfindungsgemäßen Verfahrens verrin­ gert werden.
In Fig. 5 ist ein zylinderförmig ausgebildeter Gegenstand 3' an seiner gekrümmten Oberfläche mit einem Strichcode 7' ver­ sehen. Der Strichcode 7' wird durch einen einen Abtaststrahl 2 aussendenden Strichcodeleser 1 abgetastet, wobei der auf die Oberfläche des Gegenstands 3' treffende Abtaststrahl 2 Abtastlinien 5 bildet. Wie in Fig. 1 werden bei der in Fig. 5 dargestellten Abtastvorrichtung die voneinander beabstandeten Abtastlinien dadurch erzeugt, daß der Abtaststrahl 2 zum ei­ nen zwischen zwei Extrempositionen 2' und 2" und zum anderen entlang eines Pfeils 6 verschwenkbar ist.
Wie der Fig. 5 zu entnehmen ist, besitzen die Abtastlinien 5 aufgrund der gekrümmten Oberfläche des Gegenstands 3' eben­ falls einen gekrümmten Verlauf. Die erste im Verlauf der Ab­ tastung den Strichcode 7' überstreichende Abtastlinie 54 überstreicht dabei weder den Beginn noch das Ende, sondern lediglich einen Mittelbereich des Strichcodes 7'. Eine Vari­ ante eines erfindungsgemäßen Abtastverfahrens zur Abtastung von insbesondere auf gekrümmten oder geknickten Oberflächen angebrachter Strichcodes unterscheidet sich daher von der bisher beschriebenen Ausführungsform dadurch, daß die Erfas­ sung der Codesegmente nicht mit der Erkennung mehrerer auf­ einanderfolgender Start- bzw. Stoppmarkierungen beginnt, son­ dern dann, wenn für mehrere aufeinanderfolgende Abtastlinien im wesentlichen identische bzw. teilidentische Codesegmentab­ schnitte erkannt werden. Dabei gelten Codesegmentabschnitte als im wesentlichen identisch bzw. teilidentisch, wenn ein bestimmter Prozentsatz, beispielsweise 90%, der Codeelemente innerhalb der Codesegmentabschnitte übereinstimmen. Beim Ver­ gleich der einzelnen Codeelemente kann dabei ein vorgegebener Toleranzbereich berücksichtigt werden, so daß z. B. bei Abwei­ chungen in der Breite von zwei zu vergleichenden Codeelemente bis zu ±50% der Breite des schmalsten erfaßten Codeelements die beiden zu vergleichenden Codeelementen noch als gleich eingestuft werden. Die übrigen Verfahrensschritte entsprechen den zu den Fig. 1 bis 4 beschriebenen Schritten. Als Start­ kriterium für die Erfassung der Codesegmente kann auch eine Kombination von Prüfung auf Start- bzw. Stoppmarkierungen so­ wie Prüfung auf teilidentische Bereich verwendet werden. Dies gilt sowohl für Strichcodes, die auf einer gekrümmten Ober­ fläche angebracht sind als auch für auf einer ebenen Fläche angebrachten Strichcodes.
Fig. 6 zeigt das in einem Bildspeicher abgespeicherte segmen­ tierte Abbild des Strichcodes 7' aus Fig. 5. In diesem Fall wurde die Erfassung der Codesegmente mit Erkennung des zwei­ ten Codesegments 12 2 begonnen, da in diesem Codesegment das erste erkannte Codesegment 12 1 vollständig enthalten ist.
Das in Fig. 6 dargestellte Abbild wird analog zu dem zu den Fig. 3 bzw. 4 beschriebenen Verfahren bearbeitet, so daß letztlich ein für den Original-Strichcode 7 repräsentativer Referenz-Strichcode erzeugt wird.
Vorteilhaft wird in diesem Fall die Schräglage des im Bild­ speicher gespeicherten Abbilds 7' des Strichcodes nicht über die Erkennung von Start-/Stoppmustern, sondern über Pattern Matching bzw. Decodierversuche für einzelne Zeichen bestimmt. Über die Lage der auf diese Weise erkannten Zeichen auf den einzelnen Abtastlinien kann dann die Schräglage des gespei­ cherten Strichcodes ermittelt werden. Grundsätzlich ist die Erkennung der Schräglage auf diese Weise auch bei einem auf einer ebenen Fläche angebrachten Strichcode möglich, bei dem die erste im Verlauf der Abtastung den Strichcode überstrei­ chende Abtastlinie nicht zuerst den Mittelbereich, sondern den Beginn oder das Ende des Strichcodes überstreicht.
Als Kriterium für das Beenden der Abspeicherung im Bildspei­ cher kann anstelle der beschriebenen, Mehrfacherkennung von einander zugeordneten Start-/Stoppmarkierungen das Vorliegen einer gesuchten Codeelementanzahl bzw. einer bestimmten Code­ länge gewählt werden. Weiterhin ist es auch möglich ein vor­ gegebenes Zeitlimit zu wählen, innerhalb dessen im Bildspei­ cher keine zusätzlichen Daten mehr abgelegt werden. Werden innerhalb des vorgegebenen Zeitlimits keine gültigen Codeseg­ mente mehr erkannt, so wird dies als Endebedingung gewertet und der Bildspeicher geschlossen. Dieser steht somit für die Erfassung neuer Daten zur Verfügung.

Claims (32)

1. Verfahren zum Lesen eines aus einer vorgegebenen Anzahl von Codeelementen bestehenden Strichcodes zur Erzeugung eines binä­ ren Signals mit aufeinanderfolgenden High-Low-Phasen, deren Län­ gen den Breiten der aufeinanderfolgenden Codeelementen entspre­ chen, insbesondere bei schräg zu den Codeelementen verlaufender Leserichtung, bei dem die Codeelemente durch einen oder mehrere Abtaststrahlen eines Strichcodelesers entlang im wesentlichen par­ allel zueinander verlaufender Abtastlinien abgetastet werden, wobei jeder durch eine Abtastlinie abgetastete Bereich eines Codeelements einen Codeelementabschnitt bildet, dadurch gekennzeichnet,
daß für im wesentlichen jede Abtastlinie diejenigen aus einem Code­ elementabschnitt oder aus mehreren aufeinanderfolgenden Codeele­ mentabschnitten bestehenden Codesegmente erfaßt werden, die aufgrund vorgegebener Entscheidungskriterien als zulässige Code­ segmente erkannt werden,
daß die Codeelementabschnitte der erfaßten Codesegmente in einem Bildspeicher abgespeichert werden,
daß nach Abspeichern der Codeelementabschnitte aller erfaßten Codesegmente aus für unterschiedliche Abtastlinien erfaßten, ein­ ander zugeordneten, jeweils dasselbe Codeelement des Strichcodes repräsentierenden, abgespeicherten Codeelementabschnitten jeweils ein Referenz-Codeelement ermittelt wird,
daß die Referenz-Codeelemente in einem Bildspeicher abgespeichert werden,
und daß aus den abgespeicherten Referenz-Codeelementen das bi­ näre Signal erzeugt wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß ein in Abtastrichtung vorhandener Versatz zwischen für unterschiedliche Abtastlinien erfaßten Codesegmen­ ten, der aufgrund einer schräg zu den Codeelementen ver­ laufenden Abtastrichtung entsteht, dahingehend ausgewer­ tet wird, daß als einander zugeordnete Codeelementab­ schnitte jeweils für unterschiedliche Abtastlinien er­ faßte, entsprechend versetzt zueinander angeordnete Codeelementabschnitte verwendet werden.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß der Versatz bezüglich einer im wesentlichen senk­ recht auf den Abtastlinien stehenden Referenzgeraden be­ stimmt wird.
4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die jeweils für unterschiedliche Abtastlinien erfaß­ ten, einander zugeordneten Codeelementabschnitte durch Bestimmung des Tiltwinkels zwischen der Abtastrichtung und der Senkrechten zur Strichorientierung des Strich­ codes bestimmt werden.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet,
daß eine zweidimensionale Fouriertransformation der er­ faßten Codesegmente durchgeführt wird,
daß die maximalen Amplituden des ermittelten Betrags­ spektrums bestimmt werden
und daß aus der Lage der maximalen Amplituden der Tilt­ winkel bestimmt wird.
6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die jeweils für unterschiedliche Abtastlinien erfaß­ ten, einander zugeordneten Codeelementabschnitte durch Berechnung von Regressionsgeraden für Anfang und/oder Ende der jeweiligen Codeelementabschnitte insbesondere aufeinanderfolgender Abtastlinien bestimmt werden.
7. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Beginn und/oder das Ende des Strichcodes mittels im Strichcode vorgesehener Start- bzw. Stoppmuster er­ mittelt werden.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß die Erfassung der zulässigen Codesegmente beginnt, wenn das Start- bzw. das Stoppmuster für zumindest zwei benachbarte Abtastlinien erkannt wird.
9. Verfahren nach Anspruch 7 oder 8, dadurch gekennzeichnet, daß die Erfassung für die die erste erkannte Start- bzw. Stoppmuster enthaltende Abtastlinie sowie für die sich daran anschließenden Abtastlinien erfolgt.
10. Verfahren nach einem der Ansprüche 7 bis 9, dadurch gekennzeichnet, daß die Erfassung der zulässigen Codesegmente beendet wird, wenn mehrfach ein zum erkannten Start- bzw. Stopp­ muster korrespondierendes Stopp- bzw. Startmuster er­ kannt wird.
11. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Erfassung der zulässigen Codesegmente beginnt, wenn für zumindest zwei aufeinanderfolgende Abtastlinien im wesentlichen identische Codesegmentabschnitte erkannt werden.
12. Verfahren nach einem der Ansprüche 7 bis 11, dadurch gekennzeichnet, daß der Versatz zwischen den für unterschiedliche Ab­ tastlinien erfaßten Codesegmenten durch den Versatz zwi­ schen den für die entsprechenden Abtastlinien erkannten Startmustern bestimmt wird.
13. Verfahren nach einem der Ansprüche 7 bis 12, dadurch gekennzeichnet, daß der Versatz zwischen den für unterschiedliche Ab­ tastlinien erfaßten Codesegmenten durch den Versatz zwi­ schen den für die entsprechenden Abtastlinien erkannten Stoppmustern bestimmt wird.
14. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß kein zulässiges Codesegment vorliegt, wenn die mini­ male Breite eines abgetasteten Elements in Abtast­ richtung eine zulässige minimale Breite unterschreitet.
15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß die zulässige minimale Breite abhängig vom Leseab­ stand und/oder der Druckauflösung des Strichcodes be­ stimmt wird.
16. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß kein zulässiges Codesegment vorliegt, wenn die maxi­ male Breite eines abgetasteten Elements in Abtast­ richtung eine zulässige maximale Breite überschreitet.
17. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß die zulässige maximale Breite abhängig vom Leseab­ stand und/oder der Druckauflösung des Strichcodes be­ stimmt wird.
18. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß kein zulässiges Codesegment vorliegt, wenn bei Ver­ wendung eines Zweibreitencodes das Verhältnis, insbeson­ dere aufeinanderfolgender, abgetasteter Elemente größer als 3 : 1 bzw. kleiner als 1 : 3 ist.
19. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß kein zulässiges Codesegment vorliegt, wenn bei Ver­ wendung eines Mehrbreitencodes das Verhältnis insbeson­ dere aufeinanderfolgender, abgetasteter Elemente größer als 4 : 1 bzw. kleiner als 1 : 4 ist.
20. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß kein zulässiges Codesegment vorliegt, wenn die Lauf­ länge bzw. Elementanzahl des Codesegments eine vorgege­ bene Mindestlänge bzw. Mindestanzahl unterschreitet.
21. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß kein zulässiges Codesegment vorliegt, wenn die Lauf­ länge bzw. Elementanzahl des Codesegments eine vorgege­ bene Maximallänge, insbesondere die Lauflänge des Strichcodes, bzw. eine vorgegebene Maximalanzahl über­ schreitet.
22. Verfahren nach einem der Ansprüche 7 bis 21, dadurch gekennzeichnet, daß das Startmuster durch eine Weißzone gebildet wird, wobei das Verhältnis zwischen der Breite der Weißzone in Abtastrichtung und der Breite des nachfolgenden Codeele­ ments größer als ein vorgegebener Mindestwert ist.
23. Verfahren nach einem der Ansprüche 7 bis 22, dadurch gekennzeichnet, daß das Stoppmuster durch eine Weißzone gebildet wird, wobei das Verhältnis zwischen der Breite des letzten Co­ deelements und der Breite der nachfolgenden Weißzone in Abtastrichtung kleiner als ein vorgegebener Mindestwert ist.
24. Verfahren nach einem der Ansprüche 7 bis 23, dadurch gekennzeichnet, daß das Startmuster durch eine im Strichcode vorgesehene Startmarkierung gebildet wird.
25. Verfahren nach einem der Ansprüche 7 bis 24, dadurch gekennzeichnet, daß das Stoppmuster durch eine im Strichcode vorgesehene Stoppmarkierung gebildet wird.
26. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Strichcode aus dem binären Signal decodiert wird, das aus den Referenz-Codeelementen erzeugt wird.
27. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Strichcode aus dem binären Signal decodiert wird, das aus dem für eine Abtastlinie erfaßten Codeseg­ ment erzeugt wird, wenn die Länge des erfaßten Codeseg­ ments im wesentlichen gleich der Lauflänge des Strichco­ des ist.
28. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß jeweils die Breite eines Referenz-Codeelements durch die Bildung des Mittelwerts der Breiten der entsprechen­ den, für die unterschiedlichen Abtastlinien erfaßten, einander zugeordneten Codeelementabschnitte bestimmt wird.
29. Verfahren nach Anspruch 28, dadurch gekennzeichnet, daß der arithmetische Mittelwert gebildet wird.
30. Verfahren nach Anspruch 28 oder 29, dadurch gekennzeichnet, daß als Mittelwert der Medianwert verwendet wird.
31. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Abtastlinien im wesentlichen äquidistanten Ab­ stand zueinander besitzen.
32. Vorrichtung zum Lesen eines aus einer vorgegebenen An­ zahl von Codeelementen (8) bestehenden Strichcodes (7) zur Erzeugung eines binären Signals mit aufeinanderfol­ genden High-Low-Phasen, deren Längen den Breiten der aufeinanderfolgenden Codeelementen (8) entsprechen, ins­ besondere bei schräg zu den Codeelementen (8) verlaufen­ der Leserichtung, mit einem einen oder mehrere Abtast­ strahlen (2) aussendenden Strichcodeleser (1) zur Abtas­ tung der Codeelemente (8) entlang im wesentlichen paral­ lel zueinander verlaufender Abtastlinien (5), wobei je­ der durch eine Abtastlinie (5) abgetastete Bereich eines Codeelements (8) einen Codeelementabschnitt (8 1, 8 2, 8 3) bildet, insbesondere zur Durchführung des Verfahrens nach einem der vorhergehenden Ansprüche, gekennzeichnet, durch
eine Codesegmentauswahleinrichtung zur Bestimmung von zulässigen, aus einem Codeelementabschnitt (8 1, 8 2, 8 3) oder aus mehreren aufeinanderfolgenden Codeelementab­ schnitten (8 1, 8 2, 8 3) bestehenden Codesegmenten (12 1, 12 2, 12 3) aufgrund vorgegebener Entscheidungskriterien, eine Codesegmenterfassungseinrichtung zur Erfassung der von der Codesegmentauswahleinrichtung als zulässig er­ kannten Codesegmente (12 1, 12 2, 12 3) für im wesentlichen jede Abtastlinie (5),
einen Bildspeicher zum Abspeichern der Codeelementab­ schnitte (8 1, 8 2, 8 3) aller erfaßten Codesegmente (12 1, 12 2, 12 3),
eine Referenz-Codeelement-Bestimmungseinrichtung zur Er­ mittlung jeweils eines Referenz-Codeelements (8 R) aus denjenigen in dem Bildspeicher abgespeicherten Codeele­ mentabschnitten (8 1, 8 2, 8 3), die jeweils für unter­ schiedliche Abtastlinien erfaßt wurden und einander so zugeordnet sind, daß sie jeweils dasselbe Codeelement (8) des Strichcodes (7) repräsentieren,
einen Bildspeicher zum Abspeichern der Referenz- Codeelemente,
und eine Signalerzeugungseinrichtung zur Erzeugung des binären Signals aus den abgespeicherten Referenz- Codeelementen (8 R).
DE19711873A 1997-03-21 1997-03-21 Verfahren und Vorrichtung zum Lesen eines Strichcodes Expired - Lifetime DE19711873C2 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE19711873A DE19711873C2 (de) 1997-03-21 1997-03-21 Verfahren und Vorrichtung zum Lesen eines Strichcodes
US09/044,494 US6073847A (en) 1997-03-21 1998-03-19 Method and apparatus for the reading of a bar code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19711873A DE19711873C2 (de) 1997-03-21 1997-03-21 Verfahren und Vorrichtung zum Lesen eines Strichcodes

Publications (2)

Publication Number Publication Date
DE19711873A1 DE19711873A1 (de) 1998-09-24
DE19711873C2 true DE19711873C2 (de) 2003-03-06

Family

ID=7824166

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19711873A Expired - Lifetime DE19711873C2 (de) 1997-03-21 1997-03-21 Verfahren und Vorrichtung zum Lesen eines Strichcodes

Country Status (2)

Country Link
US (1) US6073847A (de)
DE (1) DE19711873C2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213759B2 (en) 2004-04-08 2007-05-08 Sick Ag Method and an apparatus to read a barcode

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19734031A1 (de) 1997-08-06 1999-02-11 Sick Ag Verfahren und Vorrichtung zum Lesen eines aus einer vorgegebenen Anzahl von Codeelementen bestehenden Strichcodes
US6585157B2 (en) 1998-09-14 2003-07-01 Psc Scanning, Inc. Symbology determination to aid decoding in a bar code scanning system
US6454168B1 (en) * 1998-09-14 2002-09-24 Psc Scanning, Inc. Correlation and stitching techniques in a bar code scanning system
US6513714B1 (en) 1998-09-14 2003-02-04 Psc Scanning, Inc. Character reconstruction and element level processing in bar code scanning system
US6267293B1 (en) * 1999-02-22 2001-07-31 Cimatrix Bar code scanning system and method
ATE453899T1 (de) 1999-10-26 2010-01-15 Datalogic Spa Verfahren zum wiederaufbau eines streifenkodes durch aufeinanderfolgende abtastungen
JP4254724B2 (ja) * 2005-02-16 2009-04-15 株式会社デンソーウェーブ バーコード読取り方法及びコンピュータプログラム
US8196836B2 (en) * 2007-06-28 2012-06-12 Fuji Xerox Co., Ltd. Image processing apparatus, image processing method and computer-readable medium
CN101833641B (zh) * 2010-06-01 2012-05-23 福建新大陆电脑股份有限公司 条码解码芯片
CN101833643B (zh) * 2010-06-01 2012-05-23 福建新大陆电脑股份有限公司 复合码条码解码芯片
CN101840496B (zh) * 2010-06-01 2012-12-12 福建新大陆电脑股份有限公司 一维条码解码芯片
US8376234B2 (en) 2011-06-30 2013-02-19 Symbol Technologies, Inc. Method of and reader for electro-optically reading symbols on curved surfaces
JP5657503B2 (ja) * 2011-11-08 2015-01-21 株式会社東芝 読取装置、方法及びプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4933538A (en) * 1988-10-21 1990-06-12 Symbol Technologies, Inc. Scanning system with adjustable light output and/or scanning angle
US4973829A (en) * 1988-11-22 1990-11-27 Eastman Kodak Company Bar code reading method
US5155344A (en) * 1988-05-10 1992-10-13 Bertin & Cie Method and device for reading a bar code of variable orientation on a substantially motionless medium
US5241164A (en) * 1990-01-05 1993-08-31 Symbol Technologies, Inc. Method of decoding bar code symbols from partial scans
WO1994007213A1 (en) * 1992-09-14 1994-03-31 Lazerdata Corporation Scanning device for reconstructing a complete code from scanned segments
US5444231A (en) * 1992-07-13 1995-08-22 Symbol Technologies, Inc. Bar code scan stitching

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5124538B1 (en) * 1988-08-26 1995-01-31 Accu Sort Systems Inc Scanner
US5028772A (en) * 1988-08-26 1991-07-02 Accu-Sort Systems, Inc. Scanner to combine partial fragments of a complete code

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155344A (en) * 1988-05-10 1992-10-13 Bertin & Cie Method and device for reading a bar code of variable orientation on a substantially motionless medium
US4933538A (en) * 1988-10-21 1990-06-12 Symbol Technologies, Inc. Scanning system with adjustable light output and/or scanning angle
US4973829A (en) * 1988-11-22 1990-11-27 Eastman Kodak Company Bar code reading method
US5241164A (en) * 1990-01-05 1993-08-31 Symbol Technologies, Inc. Method of decoding bar code symbols from partial scans
US5444231A (en) * 1992-07-13 1995-08-22 Symbol Technologies, Inc. Bar code scan stitching
WO1994007213A1 (en) * 1992-09-14 1994-03-31 Lazerdata Corporation Scanning device for reconstructing a complete code from scanned segments

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213759B2 (en) 2004-04-08 2007-05-08 Sick Ag Method and an apparatus to read a barcode

Also Published As

Publication number Publication date
DE19711873A1 (de) 1998-09-24
US6073847A (en) 2000-06-13

Similar Documents

Publication Publication Date Title
DE69332771T2 (de) Verfahren und Vorrichtung zum Dekodieren von strichkodierten Symbolen
DE19711873C2 (de) Verfahren und Vorrichtung zum Lesen eines Strichcodes
EP0896290B1 (de) Verfahren und Vorrichtung zum Lesen eines aus einer vorgegebenen Anzahl von Codeelementen bestehenden Strichcodes
DE3854885T2 (de) Kombinieren von gelesenen Strichcode-Daten
DE3687707T2 (de) Vorrichtung und verfahren zum pruefen der echtheit von dokumenten und dafuer geeignete dokumente.
DE3853885T2 (de) Vektorisationsverfahren.
DE2831582C2 (de) Verfahren zur Identifizierung einer Person und Vorrichtung zur Durchführung des Verfahrens
DE68928553T2 (de) X-Abtaster
DE3687710T2 (de) Abtasten einer charakteristik mit ausgeglichenen bildelementen.
DE2332595C2 (de) Vorrichtung zum Lesen optischer Codemuster
DE69310049T2 (de) Verfahren und Vorrichtung zum Auffinden einer Ecke einer Struktur in zweidimensionalen Bildern
DE69028899T2 (de) Verfahren und Vorrichtung zum Dekodieren von Strichkodes mit Mehrfachabtastung
DE68925059T2 (de) Verfahren und Gerät zur polygonalen Datendekodierung
DE10025332A1 (de) Verfahren zum Lesen eines zweidimensionalen Barcodes
DE69126811T2 (de) Streifenkodeleser für alle Richtungen
DE2417282A1 (de) Vorrichtung zum erkennen eines musters
DE69122950T2 (de) Strichkodesystem mit Segmenten von verschiedenen Reflexionsrichtcharakteristiken
DE19960555A1 (de) Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes
DE19624900A1 (de) Verfahren und Gerät zum Decodieren nicht aufgelöster Balkencode-Profile unter Verwendung eines Kantenfindungs-Schaltkreises
DE2530121A1 (de) Aufzeichnungstraeger
DE19716886C2 (de) Verfahren und Vorrichtung zum Lesen eines Strichcodes
WO1984002213A1 (en) Method and installation for identifying objects
DE2346509B2 (de) Vorrichtung zum Lesen von Informationsträgern
DE1946861A1 (de) Geraet zur automatischen Ermittlung der Mittelpunkte von jeweils eine Vielzahl von Hautleisten aufweisenden Fingerabdruecken
DE60303003T2 (de) Verfahren und System zur Verifikation von Übergängen zwischen kontrastierenden Elementen

Legal Events

Date Code Title Description
OM8 Search report available as to paragraph 43 lit. 1 sentence 1 patent law
8110 Request for examination paragraph 44
8304 Grant after examination procedure
8364 No opposition during term of opposition
R071 Expiry of right