DE69310049T2 - Verfahren und Vorrichtung zum Auffinden einer Ecke einer Struktur in zweidimensionalen Bildern - Google Patents

Verfahren und Vorrichtung zum Auffinden einer Ecke einer Struktur in zweidimensionalen Bildern

Info

Publication number
DE69310049T2
DE69310049T2 DE69310049T DE69310049T DE69310049T2 DE 69310049 T2 DE69310049 T2 DE 69310049T2 DE 69310049 T DE69310049 T DE 69310049T DE 69310049 T DE69310049 T DE 69310049T DE 69310049 T2 DE69310049 T2 DE 69310049T2
Authority
DE
Germany
Prior art keywords
pixel
character
pixels
bar code
subsystem
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
DE69310049T
Other languages
English (en)
Other versions
DE69310049D1 (de
Inventor
Mihael Klancnik
Joe Zheng
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.)
United Parcel Service Inc
Original Assignee
United Parcel Service Inc
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 United Parcel Service Inc filed Critical United Parcel Service Inc
Publication of DE69310049D1 publication Critical patent/DE69310049D1/de
Application granted granted Critical
Publication of DE69310049T2 publication Critical patent/DE69310049T2/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/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • G06K7/1092Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices sensing by means of TV-scanning
    • 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
    • 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/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
    • 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/1469Methods for optical code recognition the method including quality enhancement steps using sub-pixel interpolation
    • 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/1486Setting the threshold-width for bar codes to be decoded
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Electromagnetism (AREA)
  • Artificial Intelligence (AREA)
  • Toxicology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum Auffinden einer Ecke eines Artefakts in einem zweidimensionalen Pixelbild. Die Erfindung ist insbesondere verwendbar zur Erfassung von Ecken von Strichcodesymbolen, die in zweidimensionalen Graustufen-Fixelbildern willkürlich angeordnet sind. Strichcodes sind der am weitesten verbreitete Code zur automatischen Identifizierung. Herkömmliche Strichcodesymbol-Leser sind Laserscanner, die zum Lesen zweidimensionaler Codes ungeeignet sind. Außerdem erfordern sie häufige Wartung und Abstimmung. Zweidimensionale Codes können leichter von Systemen mit Kameras gelesen werden, die lineare CCD-Matrizen besitzen. Solche Kameras, die wenig Wartung oder Abstimmung erfordern, erzeugen zweidimensionale Graustufen-Pixelbilder der Codesymbole.
  • Es ist die Aufgabe der Erfindung, ein Verfahren und eine Vorrichtung zum Auffinden einer Ecke eines Artefakts, z. B. eines Strichcodes, in einem zweidimensionalen Bild zu schaffen, so daß derselbe Codesymbol-Leser sowohl für Strichcodes als auch für zweidimensionale Codes verwendet werden kann.
  • Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche 1 und 7 gelöst. Die abhängigen Ansprüche sind auf bevorzugte Ausführungsformen der Erfindung gerichtet.
  • Es wird ein System zum Auffinden einer Ecke eines Artefakts in einem zweidimensionalen Pixelbild beschrieben.
  • Das System wählt ein Anfangspixel und erzeugt einen Referenzvektor unter Verwendung des Anfangspixels. Das System wählt ein nächstes Anfangspixel unter Verwendung des ursprünglichen Anfangspixels und erzeugt einen aktuellen Vektor unter Verwendung des nächsten Anfangspixels. Das System vergleicht den aktuellen Vektor mit dem Referenzvektor und wählt auf der Grundlage dieses Vergleichs eine Ecke aus. Das System wählt eine Folge von Anfangspixeln mit einem ersten Anfangspixel und mehreren aufeinanderfolgenden Anfangspixeln aus, wobei jedes folgende Anfangspixel in Abhängigkeit vom vorangehenden Anfangspixel in der Folge ausgewählt wird. Das System erzeugt einen Referenzvektor in Abhängigkeit vom ersten Anfangspixel sowie mehrere aufeinanderfolgende Vektoren, jeweils in Abhängigkeit von einem nachfolgenden Anfangspixel. Das System vergleicht den Referenzvektor mit jedem nachfolgenden Vektor und wählt in Abhängigkeit von diesem Vergleich eine Ecke aus.
  • Fig. 1 ist ein Prozeßablaufdiagramm des Erfassungssystems zum Erfassen von Strichcodesymbolen gemäß einer bevorzugten Ausführungsform der Erfindung;
  • Fig. 2 ist eine graphische Darstellung eines Pixelbildes, das ein Strichcodesymbol enthält, das bezüglich der Zeilen und Spalten der Pixel im Pixelbild in einem 45º- Winkel orientiert ist;
  • Fig. 3 ist ein Prozeßablaufdiagramm eines Start/Stopp- Zeichenerkennungsuntersystems des Erfassungssystems der Fig. 1 zum Identifizieren von Strichcodesymbol Start/Stopp-Zeichen;
  • Fig. 4 ist ein Prozeßablaufdiagramm eines Vier-Ecken- Lokalisierungsuntersystems des Erfassungssystems der Fig. 1 zum Lokalisieren der vier Ecken eines Strichcodesymbols;
  • Fig. 5 ist eine graphische Darstellung eines Pixelteil bildes des Pixelbildes der Fig. 2;
  • Fig. 6 ist ein Prozeßablaufdiagramm eines Zwei-Ecken- Lokalisierungsuntersystems zum Lokalisieren zweier Ecken eines Strichcodesymbols gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • Fig. 7 ist ein Prozeßablaufdiagramm für ein Anfangspixelauswahluntersystem des Zwei-Ecken-Lokalisierungsuntersystems der Fig. 6 zum Auswählen des nächsten Anfangspixels ausgehend vom aktuellen Anfangspixel;
  • Fig. 8 ist eine Tabelle, die die ersten zwölf Verarbeitungszyklen des Zwei-Ecken-Lokalisierungsuntersystems der Fig. 6 für das Teilbild der Fig. 5 darstellt;
  • Fig. 9 ist ein Prozeßablaufdiagramm des Strichcodesymbol- Decodierungsuntersystems des Erfassungssystems der Fig. 1 zum Decodieren eines Strichcodesymbols;
  • Fig. 10 ist eine graphische Darstellung eines Pixelbildes, das ein gestörtes Strichcodesymbol enthält;
  • Fig. 11 ist ein Prozeßablaufdiagramm eines Stepp-Untersystems des Strichcodesymbol-Decodierungsuntersystems der Fig. 9 zum Steppen längs der Referenzlinie und zum Decodieren eines Strichcodesymbols;
  • Fig. 12 ist eine graphische Darstellung eines Pixelbildes, das einen Teil eines Strichcodesymbols enthält, das weder auf die Pixelzeilen noch auf die Spalten des Pixelbildes ausgerichtet ist;
  • Fig. 13 ist eine graphische Darstellung der Pixelintensitätspegel der elf Pixel in einem Suchschritt des Pixelbildes der Fig. 12;
  • Fig. 14 ist ein Prozeßablaufdiagramm eines Subpixel- Interpolationsuntersystems zum Berechnen von Signalenergiewerten für Strichcodesymbolstriche gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • Fig. 15 ist ein Prozeßablaufdiagramm eines Subpixel- Interpolationsuntersystems zum Berechnen der Signalenergiewerte für Strichcodesymbolzwischenräume gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • Fig. 16 ist eine graphische Darstellung eines Strichcodesymbolzeichens, das aus drei Strichen und drei Zwischenräumen besteht;
  • Fig. 17 ist ein Prozeßablaufdiagramm eines Stepp-Untersystems für die Decodierung von Strichcodesymbolen durch Steppen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; und
  • Fig. 16 ist eine graphische Darstellung eines Pixelbildes, das ein Strichcodesymbol enthält, das weder auf die Pixelzeilen noch auf die Spalten des Pixelbildes ausgerichtet ist.
  • Die vorliegende Erfindung enthält ein System zum Erfassen und Decodieren von Strichcodesymbolen. In einer bevorzugten Ausführungsform sind Strichcodesymbole in zweidimensionalen Graustufen-Pixelbildsignalen enthalten, die von einer CCD-Kamera erzeugt werden. Jedes Pixelbild kann ein oder mehrere willkürlich plazierte und orientierte Strichcodesymbole enthalten. Genauer müssen die Striche in den Strichcodesymbolen weder auf die Zeilen noch auf die Spalten der Pixel in den Pixelbildern ausgerichtet sein. Das Erfassungs- und Decodierungssystem der vorliegenden Erfindung benötigt kein Vorauswissen über die Orientierungen und Positionen der Strichcodesymbole in den Pixelbildern. Das heißt, das System ist fähig, Strichcodesymbole in Pixelbildern zu erkennen, indem es die Pixelbilder selbst verarbeitet, ohne irgendein vorhandenes Wissen über die Orientierungen und Positionen jener Symbole innerhalb jener Pixelbilder zu besitzen. In einer bevorzugten Ausführungsform der vorliegenden Erfindung wird ein Pixelbild entlang aufeinanderfolgender ausgewählter Abtastlinien mit geringer Auflösung nach einer Strichcodesymbolruhezone abgetastet. Jede aufeinanderfolgende Abtastlinie wird vorzugsweise in Abhängigkeit von einer binären Suchsequenz gewählt, so daß mit aufeinanderfolgenden Abtastlinien das Pixelbild in immer kleinere Abschnitte unterteilt wird. Wenn eine Ruhezone erfaßt wird, wird das Pixelbild längs der gewählten Abtastlinie mit hoher Auflösung nach irgend einem Zeichen aus einem Satz von Referenzstrichcodesymbol-Start/Stopp-Zeichen durchsucht, die in einer Referenztabelle enthalten sind. Wenn ein solches Start/Stopp-Zeichen gefunden wird, wird ein Strichcodesymbol detektiert und es werden die vier Ecken des Strichcodesymbols im Pixelbild lokalisiert. Unter Verwendung dieser vier Ecken zum Identifizieren des Bereichs des Pixelbildes, der das detektierte Strichcodesymbol enthält, wird anschließend das Strichcodesymbol decodiert. Nach dem Decodieren eines detektierten Strichcodesymbols wird das Abtasten des Bildes nach einer weiteren Ruhezone eines weiteren Strichcodesymbols mit geringer Auflösung fortgesetzt. Dieses Detektieren und Decodieren von Strichcodesymbolen kann fortgesetzt werden, bis das Abtasten mit geringer Auflösung nach Ruhezonen das Pixelbild in spezifizierte Abschnittsgrößen unterteilt hat.
  • Detektieren und Decodieren von Strichcodesymbolen
  • In Fig. 1 ist ein Prozeßablaufdiagramm des Erfassungssystems 100 zum Erfassen und Decodieren von Strichcodesymbolen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gezeigt. Das Erfassungssystem 100 empfängt ein zweidimensionales Graustufen-Pixelbild als Eingang, tastet das Pixelbild in einer Richtung nach Ruhezonen ab, sucht in einer Richtung nach Start/Stopp- Zeichen, nachdem es jeweils eine Ruhezone gefunden hat, findet die vier Ecken jedes detektierten Strichcodesymbols und decodiert jedes detektierte Strichcodesymbol. Das Erfassungssystem 100 kann sich in einem 16-MHz-386SX- Computer mit einem mathematischen Coprozessor oder in einem "SUPERCARD2"-Brand-i860-CPU-RISC-Prozessor, hergestellt von CSPI, befinden und betrieben werden.
  • In einer bevorzugten Ausführungsform der vorliegenden Erfindung akzeptiert das Erfassungssystem 100 ein Pixelbild als Eingabe, während eine Einrichtung 102 ein Histogramm des Pixelbildes erzeugt. Das Histogramm zeigt die minimalen und maximalen Intensitätspegel für die Pixel in diesem Pixelbild an. Wie in dieser Beschreibung später in Verbindung mit den Fig. 14 und 15 erläutert wird, werden diese minimalen und maximalen Intensitätspegel verwendet, um die Breiten der Striche und der Zwischenräume der im Pixelbild enthaltenen Strichcodesymbole zu ermitteln.
  • Das Erfassungsuntersystem 100 tastet das Pixelbild nach Ruhezonen längs ausgewählter Abtastlinien ab. Jede Abtastlinie ist entweder eine Zeile oder eine Spalte von Pixeln im Pixelbild. In einer bevorzugten Ausführungsform der vorliegenden Erfindung werden die Abtastlinien in einer bidirektionalen binären Suchsequenz ausgewählt.
  • In Fig. 2 ist eine graphische Darstellung des Pixelbildes 200 gezeigt, das ein Strichcodesymbol 202 enthält, das bezüglich der Zeilen und Spalten der Pixel im Pixelbild in einem 45º-Winkel orientiert ist. Gemäß einer bevorzugten bidirektionalen binären Suchsequenz der vorliegenden Erfindung teilt eine erste Abtastlinie 264 das Pixelbild 200 horizontal in zwei Hälften. Eine zweite Abtastlinie 210 teilt das Pixelbild 200 vertikal in zwei Hälften. Die dritten und vierten Abtastlinien 270 und 258 teilen die oberen und unteren Hälften des Pixelbildes 200 erneut jeweils in zwei Hälften. In ähnlicher Weise teilen die fünften und sechsten Abtastlinien 204 und 216 die linken und rechten Hälften des Pixelbildes 200 erneut in zwei Hälften. Somit sind die Abtastlinien vorzugsweise zueinander parallel oder stehen aufeinander senkrecht.
  • Die Auswahl der nachfolgenden Abtastlinien wird vorzugsweise so gestaltet, daß die verbleibenden Abschnitte des Pixelbildes 200 fortlaufend in zwei Hälften geteilt werden. In Abhängigkeit von den Betriebsanforderungen, die dem Erfassungssystem 100 auferlegt sind, kann das Abtasten des Pixelbildes 200 fortgesetzt werden, bis eine spezifizierte minimale Abschnittsgröße erreicht ist, bis jede Pixelzeile und Pixelspalte abgetastet ist, oder bis die zulässige Verarbeitungszeit abgelaufen ist. In einer bevorzugten Ausführungsform stellt das Abtasten des Pixelbildes 200 sicher, daß jede Strichcodesymbol-Ruhezone wenigstens zweimal abgetastet wird.
  • Zum Beispiel kann das Pixelbild 200 einen Bildbereich darstellen, der 5,12 Zoll breit und 5,12 Zoll hoch ist (1 Zoll = 2,54 cm), wobei jedes Pixel eine Fläche darstellt, die 0,01 Zoll mal 0,01 Zoll groß ist. Wenn die Strichcodesymbole nach Strichen durchsucht werden, die wenigstens 2 Zoll hoch sind, dann wählt eine Suchsequenz vorzugsweise Abtastlinien aus, bis das Pixelbild 200 in Abschnitte unterteilt ist, die höchstens 0,71 Zoll mal 0,71 Zoll groß sind. Wenn das Pixelbild 200 einen Bereich darstellt, der 5,12 Zoll mal 5,12 Zoll im Quadrat groß ist und gemäß der bevorzugten binären Suchsequenz, wie in Fig. 2 gezeigt, abgetastet wird, wird jeder Abschnitt 238 eine Quadratfläche von 0,64 Zoll mal 0,64 Zoll darstellen. Solche Abschnittsgrößen stellen sicher, daß die Ruhezonen eines 2 Zoll hohen Strichcodesymbols, das im ungünstigsten Fall im 45º-Winkel relativ zu den Pixelzeilen und Pixelspalten ausgerichtet ist, wenigstens zweimal abgetastet wird.
  • Wie in Fig. 1 gezeigt, ist eine Einrichtung 104 vorgesehen zum Auswählen einer Abtastlinie aus den Pixelzeilen und Spalten in einem Pixelbild. Die Einrichtung 106 tastet die ausgewählte Abtastlinie in einer Ruhezonen- Abtastrichtung nach einer möglichen Strichcodesymbolruhezone ab. Das Abtasten nach Ruhezonen wird vorzugsweise mit niedriger Auflösung durchgeführt, in der der Intensitätspegel von nur jedem zweiten cder dritten Pixel in der ausgewählten Abtastlinie analysiert wird.
  • In einer bevorzugten Ausführungsform entspricht die Energie jedes Pixels im Pixelbild einem Graustufen-Intensitätspegel. Pixel, die weißen oder hellen Flächen des Pixelbildes entsprechen, besitzen hohe Energien und hohe Graustufen-Intensitätspegel, während Pixel, die schwarzen oder dunklen Bereichen entsprechen, niedrige Energien und niedrige Graustufen-Intensitätspegel besitzen. In einem 8-Bit-Graustufen-Pixelbild entspricht z. B. absolutes weiß einem Intensitätspegel 255, während absolutes schwarz einem Intensitätspegel 0 entspricht.
  • Eine Strichcodesymbolruhezone ist eine relativ große helle Fläche neben einem Strichcodesymbol. Die Einrichtung 106 detektiert eine Ruhezone, in dem sie die ausgewählte Abtastlinie nach einem Zustandsübergang von einer Folge von n hellen Pixeln zu wenigstens einem dunklen Pixel oder von einem dunklen Pixel zu einer Folge von n hellen Pixeln durchsucht, wobei n ein spezifizierter Wert ist. Ein Pixel wird als hell betrachtet, wenn sein Intensitätspegel größer als eine erste Schwelle ist, während ansonsten das Pixel als dunkel betrachtet wird. In einer bevorzugten Ausführungsform ermittelt die Einrichtung 102 die erste Schwelle, indem sie ein Histogramm des Pixelbildes erzeugt. Die erste Schwelle kann entweder der Hauptintensitätspegel oder der Median-Intensitätspegel des Histrogramms sein. Alternativ kann die erste Schwelle eine vorgegebene Konstante sein oder kann auf andere Art ermittelt werden, einschließlich anderer Typen von statistischen Analysen. In jedem Fall wird die erste Schwelle verwendet, um im Pixelbild dunkle Pixel von hellen Pixeln zu unterscheiden.
  • Um potentielle Ruhezonen zu detektieren, sucht die Einrichtung 106 nach kontinuierlichen Folgen von n hellen Pixeln, wobei n eine ganze Zahl ist, die größer ist als eine zweite Schwelle. Diese zweite Schwelle hängt von der Auflösung des Pixelbildes, der Größe der gesuchten Ruhezonen und der Auflösung der Ruhezonenabtastung ab. Wenn z. B. bei der Suche nach Ruhezonen, die wenigstens 0,25 Zoll breit sind, in einem Pixelbild, in dem jedes Pixel eine Quadratfläche von 0,01 Zoll mal 0,01 Zoll darstellt, jedes dritte Pixel analysiert wird, kann die zweite Schwelle auf sieben Pixel eingestellt sein.
  • In einer bevorzugten Ausführungsform folgen alle vertikalen Ruhezoneabtastungen derselben Ruhezonenabtastrichtung, entweder von oben nach unten oder von unten nach oben, während in ähnlicher Weise alle horizontalen Ruhezonenabtastungen derselben Ruhezonenabtastrichtung folgen, entweder von links nach rechts oder von rechts nach links. In alternativen Ausführungsformen kann die Abtastung nach Ruhezonen mit hoher Auflösung durchgeführt werden, indem jedes Pixel in jeder ausgewählten Abtastlinie analysiert wird, wobei das Abtasten der ausgewählten Abtastlinien längs unterschiedlicher Ruhezonenabtastrichtungen vorrücken kann.
  • Wenn die Einrichtung 106 feststellt, daß längs der gewählten Abtastlinie keine potentielle Ruhezone detektiert wird, ermittelt die Einrichtung 118, ob die Ruhezonenabtastung das Ende der ausgewählten Abtastlinie erreicht hat. Wenn die Einrichtung 118 feststellt, daß das Ende der ausgewählten Abtastlinie noch nicht erreicht worden ist, fährt die Verarbeitung mit Einrichtung 106 fort, um die Ruhezonenabtastung längs der gewählten Abtastlinie nach einer potentiellen Ruhezone mit niedriger Auflösung fortzusetzen; ansonsten ermittelt die Einrichtung 120, ob die Ruhezonenabtastung des gesamten Pixelbildes abgeschlossen ist. Wenn die Ruhezonenabtastung nicht abgeschlossen ist, kehrt die Verarbeitung zur Einrichtung 104 zurück, um die nächste Abtastlinie für die Verarbeitung auszuwählen; ansonsten ist die Verarbeitung des Pixelbildes durch das Erfassungsuntersystem 100 abgeschlossen.
  • Wenn die Einrichtung 106 feststellt, daß eine potentielle Ruhezone längs der ausgewählten Abtastlinie detektiert wird, ermittelt die Einrichtung 108, ob die potentielle Ruhezone innerhalb eines Bereichs des Pixelbildes liegt, für den im voraus festgestellt worden ist, das er ein Strichcodesymbol enthält. In einer bevorzugten Ausführungsform ignoriert das Erfassungssystem 100 jene Bereiche des Pixelbildes, die Strichcodesymbole enthalten, welche bereits detektiert und decodiert worden sind. Wenn die potentielle Ruhezone innerhalb eines solchen Bereichs liegt, ermittelt die Einrichtung 118, ob die Ruhezonenabtastung das Ende der ausgewählten Abtastlinie erreicht hat.
  • Wenn die Einrichtung 108 feststellt, daß die potentielle Ruhezone nicht innerhalb eines Pixelbereichs liegt, der ein vorangehend detektiertes und decodiertes Symbol enthält, ermittelt das Start/Stopp-Zeichen-Identifikationsuntersystem 110, ob die potentielle Ruhezone eine echte Ruhezone ist. Eine echte Ruhezone folgt einem Start/Stopp-Zeichen oder geht diesem voraus. Das Identifikationsuntersystem 110 sucht längs der ausgewählten Abtastlinie mit hoher Auflösung, um ein Start/Stopp- Zeichen zu identifizieren. Somit sind die Suchrichtung und die ausgewählte Abtastlinie kolinear. Das Identifikationsuntersystem 100 wird im folgenden kurz beschrieben und in dieser Beschreibung später in Verbindung mit Fig. 3 erneut genauer beschrieben.
  • Das Untersystem 110 dient zum Suchen mit hoher Auflösung längs der ausgewählten Abtastlinie nach einem Strichcodesymbol-Start/Stopp-Zeichen. In einer bevorzugten Ausführungsform verwendet die Suche mit hoher Auflösung das Analysieren der Intensität jedes Pixels längs eines Abschnitts der ausgewählten Abtastlinie. Wenn die Einrichtung 106 eine potentielle Ruhezone detektiert, in der der Zustandsübergang von hell nach dunkel vorkommt, kann ein Strichcodesymbol der potentiellen Ruhezone in der Ruhezonenabtastrichtung folgen. In diesem Fall sucht das Untersystem 110 nach einem Start/Stopp-Zeichen in derselben Richtung wie die Ruhezonenabtastung. Wenn die von der Einrichtung 106 detektierte potentielle Ruhezone einen Zustandsübergang von dunkel nach hell aufweist, dann kann alternativ hierzu ein Strichcodesymbol der potentiellen Ruhezone vorangehen. In diesem Fall sucht das Untersystem 110 längs der ausgewählten Abtastlinie in der Richtung, die der Ruhezonenabtastrichtung entgegengesetzt ist, nach einem Start/Stopp-Zeichen.
  • Das Start/Stopp-Zeichenidentifikationsuntersystem 110 ermittelt, ob ein Start/Stopp-Zeichen an der von der Einrichtung 106 detektierten potentiellen Ruhezone anliegt. In einer bevorzugten Ausführungsform kann das Detektionssystem 100 verwendet werden, um Symbole eines beliebigen bekannten Strichcodesymbolsatzes zu detektieren. Dieser kann z. B. Symbole des Universalproduktcodes (UPC), des Europäischen Artikelnummerierungssystems (EAN), des Interleaved-2-aus-5, des Codabar, des Code 39, des Code 128, des Code 93, des Code 49 oder des Code 16K enthalten. Das Detektionssystem 100 kann eine Referenztabelle enthalten, die Informationen bezüglich der Start/Stopp-Zeichen irgend eines Strichcodesymbolsatzes enthält. Für die Zwecke dieser Erfindung können die Start/Stopp-Zeichen so betrachtet werden, daß sie Abschlußstriche oder Muster enthalten, die herkömmlicherweise an solchen Zeichen anliegen. Wenn das Untersystem 110 ein Zeichen neben der potentiellen Ruhezone nicht als eines dieser Referenz-Start/Stopp-Zeichen identifiziert, wird die potentielle Ruhezone als falsche Ruhezone verworfen, wobei die Einrichtung 118 oben beschrieben ermittelt, ob das Ende der ausgewählten Abtastlinie erreicht worden ist. Wenn das Untersystem ein Zeichen neben der potentiellen Ruhezone als ein Start/Stopp-Zeichen identifiziert, wird anschließend festgestellt, daß im Pixelbild ein Strichcodesymbol vorhanden ist, woraufhin die Verarbeitung mit dem Vier-Ecken-Lokalisierungsuntersystem 112 fortfährt.
  • Das Vier-Ecken-Lokalisierungsuntersystem 112 versucht, die vier Ecken des vom Identifizierungsuntersystem 110 identifizierten Strichcodesymbols zu lokalisieren. Wenn das Lokalisierungsuntersystem 112 nicht alle vier Ecken des detektierten Strichcodesymbols lokalisiert, wird anschließend das detektierte Strichcodesymbol verworfen, woraufhin die Verarbeitung mit der Einrichtung 118 fortfährt. Ansonsten decodiert das Untersystem 114 das detektierte Strichcodesymbol, nachdem das Lokalisierungsuntersystem 112 die vier Ecken des Strichcodesymbols erfolgreich lokalisiert hat. Das Lokalisierungsuntersystem 112 und das Decodierungsuntersystem 114 werden in dieser Beschreibung später in Verbindung mit den Fig. 4 bzw. 9 genauer beschrieben.
  • Nachdem das Decodierungsuntersystem 114 das detektierte Strichcodesymbol decodiert hat, erhält die Einrichtung 116 Informationen über den Bereich des Pixelbildes, der dieses Strichcodesymbol enthält. Die Einrichtung 108 verwendet die von der Einrichtung 116 gespeicherten Informationen, um während der nachfolgenden Verarbeitung diesen Bereich zu ignorieren. Nach dem Detektieren und Decodieren eines Strichcodesymbols fährt das Erfassungssystem 100 fort, die nicht abgetasteten Bereiche des Pixelbildes nach weiteren Strichcodesymbolen abzutasten. Nachdem die Einrichtung 116 die Informationen über den Bereich des Pixelbildes, der das decodierte Strichcodesymbol enthält, gespeichert hat, fährt somit die Verarbeitung anschließend mit der Einrichtung 118 fort, die ermittelt, ob das Ende der ausgewählten Abtastlinie erreicht worden ist.
  • Wie im Beispiel der Fig. 2 gezeigt, erzeugt die Einrichtung 102 des Erfassungssystems 100 der Fig. 1 ein Histogramm des Pixelbildes 200. Die Einrichtung 104 kann anschließend die Abtastlinie 264 als die erste Abtastlinie für das Pixelbild 200 auswählen. Die Einrichtung 106 kann eine Ruhezonenabtastung mit niedriger Auflösung von links nach rechts (die Ruhezonenabtastrichtung) längs der Abtastlinie 264 ausgehend vom Punkt 262 durchführen. Am Punkt 266 kann die Einrichtung 106 einen Zustandsübergang von einer Folge von hellen Pixeln zu wenigstens einem dunklen Pixel detektieren, der eine potentielle Ruhezone anzeigt. Die Einrichtung 108 ermittelt anschließend, daß die potentielle Ruhezone nicht innerhalb eines Pixelbildbereichs liegt, der ein vorher detektiertes und decodiertes Strichcodesymbol enthält. Das Start/Stopp-Zeichen- Identifikationsuntersystem 110 sucht längs der Abtastlinie 264 in der Ruhezonenabtastrichtung mit hoher Auflösung nach einem Referenz-Start/Stopp-Zeichen, das in der Referenztabelle enthalten ist. Da der Punkt 266 nicht der Beginn eines Start/Stopp-Zeichens ist, kann das Untersystem 110 kein Referenz-Start/Stopp-Zeichen identifizieren, was anzeigt, das die von der Einrichtung 106 detektierte potentielle Ruhezone eine falsche Ruhezone ist. Anschließend ermittelt die Einrichtung 118, daß das Ende der Abtastlinie 264 noch nicht erreicht ist, woraufhin die Einrichtung 106 die Abtastung mit niedriger Auflösung in der Ruhezonenabtastrichtung (von links nach rechts) längs der Abtastlinie 264 ausgehend vom Punkt 266 fortsetzt.
  • Die Einrichtung 106 kann am Punkt 232 einen weiteren Zustandsübergang von einem dunklen Pixel zu einer Folge von hellen Pixeln detektieren, was eine weitere potentielle Ruhezone anzeigt. Die Einrichtung 108 stellt erneut fest, daß diese potentielle Ruhezone nicht innerhalb eines Bereichs des Pixelbildes 200 liegt, der ein vorher decodiertes Strichcodesymbol enthält. Da der detektierte Zustandsübergang von dunkel nach hell stattfindet, sucht das Untersystem 110 mit hoher Auflösung längs der Abtastlinie 264 von rechts nach links, daß heißt in der Richtung, die zu derjenigen der Ruhezonenabtastrichtung entgegengesetzt ist, nach einem Start/Stopp-Zeichen. Das Untersystem 110 kann erneut kein Referenz-Start/Stopp- Zeichen identifizieren, woraufhin die Einrichtung 118 feststellt, daß die Abtastlinie 264 noch nicht abgeschlossen ist, und die Einrichtung 106 die Ruhezonenabtastung mit niedriger Auflösung längs der Abtastlinie 264 ausgehend vom Punkt 232 in der Ruhezonenabtastrichtung von links nach rechts fortsetzt.
  • Die Ruhezonenabtastung mit niedriger Auflösung längs der Abtastlinie 264 wird in der Ruhezonenabtastrichtung fortgesetzt, ohne irgendwelche weiteren potentiellen Ruhezonen zu detektieren, bis der Punkt 234 erreicht ist, an dem die Zeiteinrichtung 118 feststellt, daß die Abtastlinie 264 abgeschlossen ist. Anschließend stellt die Einrichtung 120 fest, daß die Abtastlinie 264 nicht die letzte Abtastlinie für das Pixelbild 200 ist und daß die Ruhezonenabtastung des Pixelbildes 200 somit nicht abgeschlossen ist. Anschließend wählt die Einrichtung 104 die Abtastlinie 210 als nächste Abtastlinie für die Ruhezonenabtastung mit niedriger Auflösung vom Punkt 208 zum Punkt 244. Somit verläuft während der Abtastung mit niedriger Auflösung vom Punkt 208 zum Punkt 244 die Ruhezonenabtastrichtung von oben nach unten. Während der Abtastung des Pixelbildes 200 mit niedriger Auflösung nach Ruhezonen längs der Abtastlinie 210 kann die Einrichtung 106 entsprechend den Zustandsübergängen an den Punkten 206 und 242 potentielle Ruhezonen detektieren, die vom Identifikationsuntersystem 110 als falsche Ruhezonen verworfen werden.
  • Nach Vervollständigung der Ruhezonenabtastung des Pixelbildes 200 längs der Abtastlinie 210 mit niedriger Auflösung wählt die Einrichtung 104 die Abtastlinie 270 und beginnt die Abtastung vom Punkt 268 zum Punkt 226 in einer Ruhezonenabtastrichtung von links nach rechts. Nach dem Detektieren einer weiteren falschen Ruhezone am Punkt 212 detektiert die Einrichtung 106 am Punkt 224 einen Zustandsübergang von einem dunklen Pixel zu einer Folge von hellen Pixeln, wobei die Einrichtung 108 erneut feststellt, daß der Bereich nicht ignoriert werden soll. Anschließend führt das Untersystem 110 eine Suche mit hoher Auflösung nach einem Start/Stopp-Zeichen von links nach rechts (das heißt in einer Richtung entgegengesetzt zur Ruhezonenabtastrichtung) längs der Linie 270 durch. In diesem Fall kann das Identifikationsuntersystem 110 am Punkt 224 ein Referenz-Start/Stopp-Zeichen identifizieren. Anschließend lokalisiert das Lokalisierungsuntersystem 112 die Ecken 214, 230, 246 und 260, woraufhin das Decodierungsuntersystem 114 ein Strichcodesymbol 202 decodiert.
  • Nach dem Decodieren des Strichcodesymbols 202 fährt das Erfassungssystem 100 fort, das Pixelbild 200 nach weiteren Strichcodesymbolen längs der anderen ausgewählten Abtastlinien abzutasten. In einer bevorzugten Ausführungsform weist die Einrichtung 108 das Erfassungssystem 100 an, den Bereich des Pixelbildes 200, der das detektierte und decodierte Strichcodesymbol 202 enthält, zu ignorieren, während es die anschließende Ruhezonenabtastung mit niedriger Auflösung durchführt. Somit ignoriert das Erfassungssystem 100 anschließend die potentiellen Ruhezonen, die dem Strichcodesymbol 202 zugeordnet sind. Nach Abschluß der Abtastlinie 270 kann das Erfassungssystem 100 z. B. mit niedriger Auflösung die Abtastlinie 258 abtasten. Mit dieser Vorgehensweise ignoriert das Erfassungssystem 100 sowohl die potentielle Ruhezone am Punkt 256 als auch die potentielle Ruhezone am Punkt 236.
  • Das Erfassungssystem 100 fährt mit der Abtastung des Pixelbildes 200 nach anderen Strichcodesymbolen fort, bis die Einrichtung 120 feststellt, daß die letzte ausgewählte Abtastlinie vollständig abgetastet worden ist. Im gezeigten Beispiel fährt das Erfassungssystem 100 fort, Abtastlinien auszuwählen, bis jede der 14 Gitterlinien 240 der Fig. 2 ausgewählt worden ist.
  • Identifizierung der Strichcodesymbol-Start/Stopp-Zeichen
  • In Fig. 3 ist ein Prozeßablaufdiagramm des Start/Stopp- Zeichen-Identifikationsuntersystems 110 des Erfassungssystems 100 zur Identifizierung von Strichcodesymbol- Start/Stopp-Zeichen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gezeigt. Das Identifikationsuntersystem 110 sucht mit hoher Auflösung nach einem Start/Stopp-Zeichen längs der ausgewählten Abtastlinie in der Richtung, die durch den Typ des von der Einrichtung 106 des Erfassungssystems 100 detektierten Zustandsübergangs vorgegeben wird. Wenn ein Referenz-Start/Stopp- Zeichen identifiziert wird, überprüft das Identifikationsuntersystem 110 anschließend diese Identifikation, indem sie längs der Suchlinien parallel zur ausgewählten Abtastlinie nach demselben Start/Stopp-Zeichen sucht.
  • Die Einrichtung 302 dient zum Erzeugen einer ersten Folge von Symbolelementbreiten zum Detektieren eines Strichcodesymbol-Start/Stopp-Zeichens längs der ausgewählten Abtastlinie. Jedes Element in der Folge besitzt eine Elementbreite und ist entweder ein Strich oder ein Zwischenraum. Die Einrichtung 302 leitet die Elementbreiten der Folge aus den Signalenergiewerten ab, die während der Subpixel-Interpolation längs eines Abschnitts der ausgewählten Abtastlinie erzeugt werden. Die Subpixel-Interpolation wird in dieser Beschreibung später in Verbindung mit den Fig. 14 und 15 genauer beschrieben.
  • Die Suche nach einem Start/Stopp-Zeichen beginnt vorzugsweise am Zustandsübergangspunkt, der verwendet wird, um die potentielle Ruhezone zu detektieren. Jedes Referenz- Start/Stopp-Zeichen in einer Referenztabelle besitzt eine einzigartige Folge von Elementbreiten, wobei unterschied liche Strichcodesymbolsätze Start/Stopp-Zeichen mit unterschiedlichen Anzahlen von Symbolelementen besitzen können. Die Einrichtung 302 erzeugt vorzugsweise eine erste Folge von n Elementbreiten, wobei n der Anzahl von Symbolelementen im Referenz-Start/Stopp-Zeichen in der Referenztabelle mit der größten Anzahl von Symbolelementen entspricht.
  • Wenn z. B. das Erfassungssystem 100 verwendet wird, um ausschließlich Strichcodesymbole des Code 128 zu detektieren und zu decodieren, erzeugt die Einrichtung 302 vorzugsweise eine erste Folge von fünf Elementbreiten. Im Code 128 besitzt ein Startzeichen sechs Elemente (drei Striche und drei Zwischenräume), während ein Stoppzeichen, das den Abschlußstrich enthält, sieben Elemente besitzt (vier Striche und drei Zwischenräume). Die Startund Stoppzeichen im Code 128 können jedoch eindeutig identifiziert werden, indem die Breiten nur der ersten fünf Elemente charakterisiert werden. Für das Startzeichen des Code 128 sind die fünf charakterisierten Elemente die drei Striche und die zwei Zwischenräume, die von diesen drei Strichen begrenzt werden. Für das Stoppzeichen des Code 128 sind die fünf charakterisierten Elemente der Abschlußstrich, die zwei dem Abschlußstrich nächstliegenden Striche sowie die zwei Zwischenräume, die von diesen zwei Strichen und dem Abschlußstrich begrenzt werden. Da ein potentielles Start/Stopp-Zeichen entweder ein Startzeichen oder ein Stoppzeichen des Code 128 sein kann, erzeugt die Einrichtung 302 eine erste Folge von fünf Elementbreiten.
  • Der Abschnitt der ausgewählten Abtastlinie, längs dem die Einrichtung 302 die Subpixel-Interpolation durchführt, um die erste Folge von Elementbreiten zu erzeugen, beginnt am Zustandsübergangspunkt und setzt sich fort, bis eine Folge von n Elementbreiten erzeugt worden ist. Wenn das Ende der ausgewählten Abtastlinie erreicht ist, bevor alle n Elementbreiten ermittelt worden sind, entspricht der aktuelle Zustandsübergangspunkt keinem Referenz- Start/Stopp-Zeichen. Wenn außerdem ein vistrichil oder ein "Zwischenraum" zu breit ist, um einem Element der erwarteten Strichcodesymbole zu entsprechen, kann die Erzeugung der Folge der Elementbreiten abgebrochen werden, wobei kein Start/Stopp-Zeichen identifiziert wird.
  • Die Vorrichtung 304 vergleicht die erste Folge von Elementbreiten mit den Referenz-Start/Stopp-Zeichen. Wenn die Einrichtung 304 feststellt, daß die erste Folge keinem der Referenz-Start/Stopp-Zeichen entspricht, wird anschließend kein Strichcodesymbol-Start/Stopp-Zeichen identifiziert, woraufhin die Verarbeitung zur Einrichtung 118 des Erfassungssystems 100 der Fig. 1 übergeht. Das Vergleichen der Folgen von Elementbreiten mit den Referenz-Start/Stopp-Zeichen beruht vorzugsweise auf Zuverlässigkeitsfaktoren, wie in dieser Beschreibung später in Verbindung mit Fig&sub9; 16 genauer beschrieben wird.
  • Wenn jedoch die Einrichtung 304 feststellt, daß die erste Folge einem Referenz-Start/Stopp-Zeichen entspricht, erzeugt die Einrichtung 306 anschließend eine zweite Folge von Elementbreiten, indem sie längs einer ersten Überprüfungssuchlinie, die parallel neben der ausgewählten Abtastlinie liegt, eine Subpixel-Interpolation durchführt. In einer bevorzugten Ausführungsform ist die erste Überprüfungssuchlinie gegenüber der ausgewählten Abtastlinie um einige wenige Pixel verschoben. Die Einrichtung 308 ermittelt, ob die zweite Folge von Elementbreiten mit demselben Referenz-Start/Stopp-Bezugszeichen übereinstimmt, das von der Einrichtung 304 identifiziert worden ist. Wenn die zweite Folge mit demselben Referenz- Start/Stopp-Zeichen übereinstimmt, wird anschließend von der Einrichtung 304 das identifizierte Start/Stopp-Zeichen bestätigt, woraufhin die Verarbeitung mit einer bestätigten Strichcodesymbolidentifikation mit dem Lokalisierungsuntersystem 112 des Erfassungssystems 100 der Fig. 1 fortfährt.
  • Wenn die Einrichtung 308 die von der Einrichtung 304 durchgeführte Referenz-Start/Stopp-Zeichenidentifikation nicht bestätigt, wird anschließend von der Einrichtung und der Einrichtung 312 eine zweite Bestätigung versucht. Die Einrichtung 310 und die Einrichtung 312 fänktionieren im wesentlichen wie die Einrichtungen 306 bzw. 308, mit der Ausnahme, daß eine zweite Überprüfungssuchlinie analysiert wird. Die zweite Uberprüfungssuchlinie ist auf der Seite der ausgewählten Abtastlinie angeordnet, die der ersten Überprüfungssuchlinie gegenüberliegt. Wenn die Einrichtung 312 das von der Einrichtung 304 identifizierte Start/Stopp-Zeichen bestätigt, fährt die Verarbeitung mit einer bestätigten Strichcodesymbolidentifikation mit dem Lokalisierungsuntersystem 112 des Erfassungssystems 100 der Fig. 1 fort. Ansonsten identifiziert das Identifikationsuntersystem 110 kein Strichcodesymbol-Stopp/Start-Zeichen, woraufhin die Verarbeitung mit der Einrichtung 118 des Erfassungssystems 100 der Fig. 1 fortfährt.
  • Wie im Beispiel der Fig. 2 gezeigt, führt die Einrichtung 302 des Identifikationsuntersystems 110 eine Subpixel- Interpolation längs der Abtastlinie 270 durch, um eine erste Folge von Elementbreiten zu erzeugen, nachdem das Erfassungssystem 100 eine potentielle Ruhezone am Punkt 224 längs der Abtastlinie 270 ermittelt hat. Wenn die Einrichtung 304 feststellt, daß die erste Folge einem Referenz-Start/Stopp-Zeichen entspricht, führt die Einrichtung 306 anschließend eine Subpixel-Interpolation längs der ersten Überprüfungssuchlinie 222 durch, um eine zweite Folge von Elementbreiten zu erzeugen. Wenn die Einrichtung 308 feststellt, daß die zweite Folge das von der Einrichtung 304 identifizierte Start/Stopp-Zeichen bestätigt, übergibt die Einrichtung 308 anschließend mit einem bestätigten Start/Stopp-Zeichen die Verarbeitung an das Lokalisierungsuntersystem 112 des Erfassungssystems 100 der Fig. 1.
  • Wenn die zweite Folge nicht demselben von der Einrichtung 304 identifizierten Referenz-Start/Stopp-Zeichen entspricht, führt die Einrichtung 310 anschließend längs einer zweiten Überprüfungssuchlinie 228 eine Subpixel- Interpolation durch, um eine dritte Folge von Elementbreiten zu extrahieren. Anschließend ermittelt die Einrichtung 312, ob die dritte Folge das von der Einrichtung 304 identifizierte Start/Stopp-Zeichen bestätigt. Ein Start/Stopp-Zeichen kann aus verschiedenen Gründen von der Einrichtung 304 identifiziert und entweder von der Einrichtung 308 oder der Einrichtung 312 nicht bestätigt werden. Die Identifikation durch die Einrichtung 304 kann fälschlicherweise positiv sein, wodurch ein Strichcodesymbol identifiziert wird, wenn keines vorhanden ist. Alternativ kann das Strichcodesymbol vorhanden sein, jedoch kann es im Pixelbild gestört sein. Eine solche Störung kann durch physische Beschädigungen des das Strichcodesymbol tragenden Etiketts verursacht werden, oder durch Fehler, die während der Erzeugung des Pixelbildes dieses Etiketts entstehen.
  • Lokalisierung der vier Ecken eines Strichcodesymbols
  • In Fig. 4 ist ein Prozeßablaufdiagramm des Vier-Ecken- Lokalisierungsuntersystems 112 des Erfassungssystems 100 zur Lokalisierung der vier Ecken eines Strichcodesymbols gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gezeigt. Das Lokalisierungsuntersystem 112 beginnt mit der Lokalisierung zweier Ecken des vom Untersystem 110 identifizierten Start/Stopp-Zeichens. Diese zwei Ecken entsprechen den zwei Ecken des ersten oder äußeren Strichs dieses ersten Startlstopp-Zeichens. Das Lokalisierungsuntersystem 112 versucht anschließend, das andere Ende des Strichcodesymbols zu finden, indem es nach der zweiten Ruhezone und dem zweiten Start/Stopp- Zeichen sucht, das dem Strichcodesymbol zugeordnet ist. Wenn die zweite Ruhezone und das zweite Start/Stopp- Zeichen gefunden worden sind, lokalisiert das Untersystem 112 die zwei letzten Ecken des Strichcodesymbols. Diese zwei Ecken entsprechen den zwei Ecken des äußeren Strichs des zweiten Start/Stopp-Zeichens. Jede Ecke ist durch die Position des Pixels im Pixelbild definiert, das die Ecke des Strichcodesymbols enthält.
  • Die Einrichtung 402 lokalisiert die ersten zwei Ecken des identifizierten Strichcodesymbols, das heißt die Ecken am oberen und unteren Ende des äußeren Strichs des vom Identifikationsuntersystems 110 identifizierten Start/Stopp-Zeichens. Die Einrichtung 402 wird in dieser Beschreibung später in Verbindung mit Fig. 6 genauer beschrieben.
  • Nachdem die ersten zwei Ecken gefunden sind, ermittelt die Einrichtung 404 den Ort einer Linie, die Mittelsenkrechte der Linie ist, die die ersten zwei Ecken verbindet. Die Einrichtung 404 führt eine Ruhezonenabtastung nach der zweiten Ruhezone am anderen Ende des Symbols mit niedriger Auflösung quer zum erfaßten Strichcodesymbol längs der Mittelsenkrechten durch.
  • Die Einrichtung 406 ermittelt, ob diese zweite Ruhezone gefunden wird, indem sie nach einer kontinuierlichen Folge von n hellen Pixeln längs der Mittelsenkrechten sucht, wobei n größer als die zweite Schwelle ist. Die zweite Schwelle wurde in dieser Beschreibung in Verbin dung mit Fig. 1 vorangehend beschrieben. Wenn die zweite Ruhezone nicht gefunden wird, werden die vier Ecken nicht lokalisiert, woraufhin die Einrichtung 406 die Verarbeitung an die Einrichtung 118 des Erfassungssystems 100 der Fig. 1 übergibt. Wenn die Einrichtung 406 die zweite Ruhezone findet, führt die Einrichtung 408 anschließend längs einer ersten Suchlinie eine Subpixel-Interpolation durch, um eine erste Folge von Elementbreiten zu erzeugen. Diese erste Suchlinie kann eine Pixelzeile oder eine Spalte sein, die die Mittelsenkrechte an der Kante der zweiten Ruhezone schneidet.
  • Die Einrichtung 410 ermittelt, ob die von der Einrichtung 408 erzeugte erste Folge von Elementbreiten dem Start/Stopp-Zeichen entspricht, das zu dem vom Identifikationsuntersystem 110 identifizierten Start/Stopp-Zeichen komplementär ist. Die Strichcodesymbole enthalten eindeutige Start/Stopp-Zeichen, die den Typ des Strichcodesymbolsatzes anzeigen. Jedes Strichcodesymbol besitzt zwei komplementäre Start- und Stoppzeichen, die jeweils den Symbolsatz des Strichcodesymbols identifizieren. Wenn an einem Ende eines Strichcodesymbols ein erstes Start/Stopp-Zeichen identifiziert worden ist, muß somit das zweite Start/Stopp-Zeichen am anderen Ende des Strichcodesymbols komplementär zum ersten Start/Stopp- Zeichen sein, bevor eine Strichcodesymbolidentifikation bestätigt werden kann. Im Code 128 z. B. gibt es drei unterschiedliche Startzeichen und ein Stoppzeichen. Wenn eines der drei Startzeichen des Codes 128 identifiziert wird, so ist das komplementäre Stoppzeichen bekannt. Wenn das Stoppzeichen des Codes 128 identifiziert wird, muß in ähnlicher Weise das komplementäre Startzeichen eines der drei möglichen Startzeichen des Codes 128 sein.
  • Wenn die Einrichtung 410 feststellt, daß die erste Folge von Elementbreiten, die von der Einrichtung 408 erzeugt wird, dem komplementären Start/Stopp-Zeichen entspricht, wird anschließend das zweite Start/Stopp-Zeichen bestätigt, wobei die Einrichtung 420 die letzten zwei Ecken des erfaßten Strichcodesymbols findet, d. h. diejenigen Ecken, die das obere und untere Ende des äußeren Strichs des zweiten Start/Stopp-Zeichens definieren. Die Einrichtung 420 funktioniert im wesentlichen wie die Einrichtung 402 und wird in dieser Beschreibung später in Verbindung mit Fig. 6 genauer beschrieben. Nach der Einrichtung 420 fährt die Verarbeitung mit dem Decodierungsuntersystem 114 des Erfassungssystems 100 fort.
  • Wenn die von der Einrichtung 408 erzeugte erste Folge von Elementbreiten nicht mit dem komplementären Start/Stopp- Zeichen übereinstimmt, führt die Einrichtung 412 längs einer zweiten Suchlinie eine Subpixel-Interpolation durch, um eine zweite Folge von Elementbreiten zu erzeugen. Die zweite Suchlinie kann parallel neben der ersten Suchlinie liegen. In einer bevorzugten Ausführungsform liegt die zweite Suchlinie parallel zur ersten Suchlinie und ist um einige wenige Pixel verschoben. Die Einrichtung 414 ermittelt anschließend, ob die zweite Folge dem komplementären Start/Stopp-Zeichen entspricht. Trifft dies zu, fährt die Verarbeitung anschließend mit der Einrichtung 420 fort, um die beiden anderen Ecken des Strichcodesymbols zu lokalisieren. Andernfalls erzeugt die Einrichtung 416 eine dritte Folge von Elementbreiten, indem sie längs einer dritten Suchlinie, die auf der Seite der ersten Suchlinie liegt, die der zweiten Suchlinie gegenüberliegt, eine Subpixel-Interpolation durchführt. Die Einrichtung 418 ermittelt anschließend, ob die dritte Folge dem komplementären Start/Stopp-Zeichen entspricht. Trifft dies zu, fährt die Verarbeitung mit der Einrichtung 420 fort, um die beiden anderen Ecken des Strichcodesymbols zu lokalisieren. Andernfalls wird das komplementäre Start/Stopp-Zeichen nicht identifiziert, wobei die vier Ecken des Strichcodesymbols nicht lokalisiert werden und die Verarbeitung zur Einrichtung 118 des Erfassungssystems 100 zurückkehrt.
  • Wie im Beispiel der Fig. 2 gezeigt, lokalisiert die Einrichtung 402 des Vier-Ecken-Lokalisierungsuntersystems 112 die Ecken 214 und 230, nachdem das Erfassungssystem 100 ein erstes Start/Stopp-Zeichen des Strichcodesymbols 202 am Punkt 224 längs der Abtastlinie 270 identifiziert und bestätigt hat. Die Einrichtung 404 ermittelt den Ort der Linie 220, die die Linie zwischen den Ecken 214 und im Punkt 218 schneidet und senkrecht auf dieser steht. Die Einrichtung 404 tastet anschließend mit niedriger Auflösung längs der Linie 220 das Strichcodesymbol 202 nach einer zweiten Ruhezone am anderen Ende des Strichcodesymbols 202 ab. Die Einrichtung 406 lokalisiert die dem Punkt 248 folgende zweite Ruhezone, indem sie eine kontinuierliche Folge heller Pixel an dieser Position erfaßt, die länger ist als die zweite Schwelle. Anschließend führt die Einrichtung 408 längs der Suchlinie 252 von links nach rechts eine Subpixel-Interpolation durch, um eine erste Folge von Elementbreiten zu erzeugen. Die Einrichtung 410 kann anschließend feststellen, daß die erste Folge dem Komplement des ersten Start/Stopp-Zeichens entspricht. In diesem Fall findet die Einrichtung 420 die Ecken 246 und 260. Wenn die Einrichtung 410 feststellt, daß die erste Folge nicht dem komplementären Start/Stopp-Zeichen entspricht, versucht anschließend das Lokalisierungsuntersystem 112, das komplementäre Start/Stopp-Zeichen unter Verwendung der Einrichtungen 412 und 414 längs der Suchlinie 245, und falls erforderlich, unter Verwendung der Einrichtungen 416 und 418 längs der Suchlinie 250 zu identifizieren.
  • Lokalisierung von zwei Ecken eines Strichcodesymbols
  • In Fig. 5 ist eine graphische Darstellung eines Teilbildes 500 des Pixelbildes 200 der Fig&sub9; 2 gezeigt. Jedes Quadrat in Fig. 5 stellt ein Pixel (i,j) im Pixelbild 500 dar, das durch den Spaltenindex i und den Zeilenindex j identifiziert ist, wobei i und j von 0 bis 15 laufen. Die Pixelzeile 6 in Fig. 5 entspricht der Abtastlinie 270 der Fig. 2, wobei das Pixel (13,6) dem Punkt 224 der Fig. 2 entspricht. Die Pixel, die nicht an den Außenkanten des Pixelbildes 200 liegen, besitzen 8 Nachbarn. Die Nachbarn des Pixels (13,6) sind z. B. die Pixel (13,5), (14,5), (14,6), (14,7), (13,7), (12,7), (12,6) und (12,5).
  • Die Pixel in Fig. 5 besitzen einen schwarzen Punkt, wenn deren Graustufen-Intensitätspegel kleiner oder gleich der ersten Schwelle ist. In ähnlicher Weise besitzen die Pixel in Fig. 5 keine schwarzen Punkte, wenn deren Intensitätspegel größer als die erste Schwelle sind. Wie in dieser Beschreibung vorher in Verbindung mit Fig. 1 beschrieben worden ist, kann die erste Schwelle aus dem Histogramm des Pixelbildes ermittelt werden, das von der Einrichtung 102 des Erfassungssystems 100 erzeugt wird. Die mit einem schwarzen Punkt dargestellten Pixel können einen Teil eines Striches im Strichcodesymbol 202 bilden. Die ohne schwarzen Punkt dargestellten Pixel können einen Teil eines Zwischenraums im Strichcodesymbol 202 bilden.
  • In Fig. 6 ist ein Prozeßablaufdiagramm des Zwei-Ecken- Lokalisierungsuntersystems 600 zum Lokalisieren zweier Ecken des Strichcodesymbols gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gezeigt. Die Einrichtung 402 und die Einrichtung 420 des Vier-Ecken- Lokalisierungsuntersystems 112 der Fig. 4 funktionieren im wesentlichen wie das Zwei-Ecken-Lokalisierungsuntersystem 600. Das Lokalisierungsuntersystem 600 findet zwei Ecken eines detektierten Strichcodesymbols, indem es die "Außenkante" eines Striches entlanggleitet, der ein Außensymbolelement eines Start/Stopp-Zeichens bildet, um die äußeren Ecken dieses Striches zu finden. Die "Außenkante" des Striches, der ein Außensymbolelement eines gegebenen Start/Stopp-Zeichens bildet, ist dort angeordnet, wo sich das Start/Stopp-Zeichen und dessen zugehörige Ruhezone treffen.
  • Zur Erleichterung der Erläuterung ist das Lokalisierungsuntersystem 600 im Kontext des Beispiels der Fig. 2 und 5 beschrieben. Nachdem das Erfassungssystem 100 ein Start/Stopp-Zeichen des Strichcodesymbols 202 im Pixelbild 200 identifiziert hat, aktiviert das Lokalisierungsuntersystem 112 die Einrichtung 402, um die Ecken 214 und 220 zu lokalisieren. Nach dem Auffinden des komplementären Start/Stopp-Zeichens aktiviert das Lokalisierungsuntersystem 112 die Einrichtung 420, die dann die Ecken 246 und 260 lokalisiert.
  • Das Lokalisierungsuntersystem 600 empfängt als Eingang das "ursprüngliche Anfangspixel" Ein ursprüngliches Anfangspixel ist ein Pixel in einer Ruhezone, die an ein Start/Stopp-Zeichen angrenzt. Ein ursprüngliches Anfangspixel kann vom Identifizierungsuntersystem 110 oder vom Lokalisierungsuntersystem 112 ermittelt werden. Ein ursprüngliches Anfangspixel ist vorzugsweise ein helles Pixel, das einen Teil einer Ruhezone bildet, und ist unmittelbarer Nachbar zu einem dunklen Pixel, das Teil des ersten oder äußeren Strichs eines Start/Stopp-Zeichens eines detektierten Strichcodesymbols bildet. Im Beispiel der Fig. 2 ist das ursprüngliche Anfangspixel am Funkt 224 angeordnet und wird vom Pixel (13,6) in Fig. 5 dargestellt.
  • Das Lokalisierungsuntersystem 600 empfängt ferner als Eingabe die Suchrichtung, in der das Erfassungssystem 100 nach dem Start/Stopp-Zeichen sucht, das dem ursprünglichen Anfangspixel zugeordnet ist. In einer bevorzugten Ausführungsform gibt es vier mögliche Suchrichtungen: Ost, West, Nord und Süd, was dem Suchen entlang der Pixelzeilen und -spalten entspricht. Diese vier Richtungen sind gemeinsam mit den vier Zwischenrichtungen Nordost, Südost, Südwest und Nordwest in Fig. 5 definiert. Jeder der acht Nachbarn des aktuellen Anfangspixels besitzt eine eindeutige Richtung relativ zum aktuellen Anfangspixel. Im Beispiel der Fig. 5 ist die vom Lokalisierungsuntersystem 600 empfangene Suchrichtung die Richtung West, da die Suche mit hoher Auflösung nach dem Start/Stopp-Zeichen neben dem Punkt 224 längs der Linie 270 von Ost nach West vorrückt.
  • Das Lokalisierungsuntersystem 600 findet eine Ecke, indem es bei der Suche der Ecke die Außenkante des ersten Strichs eines Start/Stopp-Zeichens entlanggleitet. Das Lokalisierungsuntersystem 600 gleitet die Außenkante des Strichs entlang, indem es das aktuelle Anfangspixel durch ein nächstes Anfangspixel ersetzt, nachdem es die Nachbarn des aktuellen Anfangspixels in einer Reihenfolge entweder im Uhrzeigersinn oder im Gegenuhrzeigersinn analysiert hat. Eine ausgewählte Reihenfolge im Uhrzeigersinn führt zu einer Lokalisierung von einer der zwei Ecken des ersten Strichs des Start/Stopp-Zeichens, während eine ausgewählte Reihenfolge im Gegenuhrzeigersinn zur Lokalisierung der anderen Ecke führt. Da das Lokalisierungsuntersystem 600 eventuell beide Ecken lokalisiert, verwendet das Lokalisierungsuntersystem 600 sowohl die Reihenfolge im Uhrzeigersinn, um die eine Ecke zu lokalisieren, als auch die Reihenfolge im Gegenuhrzeigersinn, um die andere Ecke zu lokalisieren. Es spielt keine Rolle, welche Reihenfolge zuerst ausgewählt wird. Die Auswahl eines nächsten Anfangspixels auf der Grundlage eines aktuellen Anfangspixels unter Verwendung einer Reihenfolge im Uhrzeigersinn oder im Gegenuhrzeigersinn wird in dieser Beschreibung später in Verbindung mit Fig. 7 genauer beschrieben.
  • Nachdem das ursprüngliche Anfangspixel und die Suchrichtung vom Lokalisierungsuntersystem 600 als Eingaben empfangen worden sind, legt die Einrichtung 602 fest, daß eine Reihenfolge im Uhrzeigersinn bei der Auswahl eines nächsten Anfangspixels ausgehend von einem aktuellen Anfangspixel verwendet wird. Die Einrichtung 604 setzt anschließend das aktuelle Anfangspixel gleich dem ursprünglichen Anfangspixel, während die Einrichtung 606 die Liste der ausgewählten Anfangspixel beginnt. Das Lokalisierungsuntersystem 600 hält eine Liste der letzten n Pixel, die als Anfangspixel ausgewählt worden sind, wobei n vorzugsweise 5 beträgt. Die Einrichtung 606 beginnt mit der Vergrößerung der Liste der ausgewählten Anfangspixel mit dem ursprünglichen Anfangspixel.
  • Das Anfangspixelauswahluntersystem 608 wählt das nächste Anfangspixel ausgehend vom aktuellen Anfangspixel auf der Grundlage der gewählten Reihenfolge (das heißt im Uhrzeigersinn oder im Gegenuhrzeigersinn) und wählt die Suchrichtung. Das Anfangspixelauswahluntersystem 608 wird in dieser Beschreibung später in Verbindung mit Fig. 7 genauer beschrieben. Die Einrichtung 610 aktualisiert anschließend die Liste der ausgewählten Anfangspixel, indem es das ausgewählte Anfangspixel an das Ende der Liste anfügt, wobei die Einrichtung 602 das aktuelle Anfangspixel auf das nächste Anfangspixel setzt. Nachdem die Liste der ausgewählten Anfangspixel eine bevorzugte Länge von 5 Pixeln erreicht hat, aktualisiert die Einrichtung 610 die Liste, indem es das aktuelle Anfangspixel dem Ende der Liste hinzufügt und das erste Anfangspixel in der Liste löscht.
  • Wenn die Einrichtung 614 feststellt, daß die Länge der Liste der ausgewählten Anfangspixel kleiner ist als die bevorzugte Schwelle von 5 Pixeln, kehrt die Verarbeitung anschließend zum Anfangspixelauswahluntersystem 608 zurück, um das nächste Anfangspixel auszuwählen. Ansonsten erzeugt die Einrichtung 616 einen aktuellen Vektor. Der aktuelle Vektor wird ermittelt, indem der Vektor ausgehend vom ersten Anfangspixel in der Liste der ausgewählten Anfangspixel bis zum letzten Anfangspixel in der Liste zum Ursprung verschoben wird, wobei der Ursprung irgendein Pixel im Pixelbild sein kann. Wenn die Einrichtung 618 feststellt, daß der aktuelle Vektor der erste Vektor ist, der vom Lokalisierungsuntersystem 600 für die ausgewählte Reihenfolge erzeugt wird, sichert die Einrichtung 620 anschließend den aktuellen Vektor als Referenzvektor, bevor zur Einrichtung 622 übergegangen wird; ansonsten fährt die Verarbeitung direkt mit der Einrichtung 622 fort.
  • Die Einrichtung 622 berechnet die Größe der Vektordifferenz zwischen dem aktuellen Vektor und dem Referenzvektor. Wenn die Einrichtung 624 feststellt, daß diese Größe kleiner ist als eine spezifizierte dritte Schwelle, ist noch keine Ecke detektiert worden, woraufhin die Verarbeitung zum Anfangspixelauswahluntersystem 608 zurückkehrt. Ansonsten ist eine Ecke detektiert worden, woraufhin die Einrichtung 626 ein Pixel auswählt, das dieser detektierten Ecke entspricht. Wenn die Einrichtung 628 anschließend feststellt, daß die detektierte Ecke nur die erste von zwei zu lokalisierenden Ecken ist, wählt anschließend die Einrichtung 630 eine Reihenfolge im Gegenuhrzeigersinn, woraufhin die Verarbeitung zur Einrichtung 604 zurückkehrt, um die Suche nach der zweiten Ecke einzuleiten. Um nach der zweiten Ecke in einer Reihenfolge im Gegenuhrzeigersinn zu suchen, kehrt die Einrichtung 604 zum ursprünglichen Anfangspixel als dem aktuellen Anfangspixel zurück, während die Einrichtung 606 die Liste der ausgewählten Anfangspixel erneut mit nur dem ursprünglichen Anfangspixel beginnt. Ansonsten, wenn die Einrichtung 628 feststellt, daß die soeben detektierte Ecke die zweite Ecke ist, sind beide Ecken lokalisiert worden, womit das Lokalisierungsuntersystem 600 abgeschlossen hat.
  • Fachleute werden erkennen, daß das Lokalisierungsuntersystem die Ecken des Strichcodesymbols unter Verwendung anderer Maße als der Größe der Vektordifferenz ermitteln kann. In einer alternativen bevorzugten Ausführungsform berechnet zum Beispiel die Einrichtung 622 die Größe des Winkels zwischen dem aktuellen Vektor und dem Referenzvektor. Dies kann als die Phase der Vektordifferenz bezeichnet werden. Anschließend vergleicht die Einrichtung 624 diese Phase mit einer ausgewählten Phasenschwelle. Wenn die Phase kleiner als die Phasenschwelle ist, so ist noch keine Ecke detektiert worden; ansonsten ist eine Ecke detektiert worden.
  • Auswählen eines nächsten Anfangspixels ausgehend vom aktuellen Anfangspixel
  • In Fig. 7 ist ein Prozeßablaufdiagramm für das Anfangspixelauswahluntersystem 608 zum Auswählen eines nächsten Anfangspixels ausgehend von einem aktuellen Anfangspixel gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gezeigt. Das Auswahluntersystem 608 bildet einen Teil des Zwei-Ecken-Lokalisierungsuntersystems 600. Das Auswahluntersystem 608 wählt das nächste Anfangspixel unter den acht benachbarten Pixeln des aktuellen Anfangspixels aus. Wie das aktuelle Anfangspixel bildet auch das nächste Anfangspixel einen Teil der Ruhezone. Das nächste Anfangspixel ist nicht nur ein Nachbar des aktuellen Anfangspixels, sondern es liegt auch unmittelbar neben einem weiteren Nachbarn des aktuellen Anfangspixels, der einen Teil des äußeren Strichs des Start/Stopp-Zeichens bildet.
  • Wenn beide Intensitätspegel der zwei Pixel kleiner oder gleich der ersten Schwelle sind, werden sie als "ähnlich" betrachtet, da sie beide einen Teil eines oder mehrerer Striche bilden können. Zwei Pixel werden ferner dann als ähnlich betrachtet, wenn ihre beiden Intensitätspegel größer als die erste Schwelle sind, da sie dann beide einen Teil eines oder mehrerer Zwischenräume bilden können. In Fig. 5 sind z. B. die Pixel (12,6) und (11,6) einander ähnlich, wie auch die Pixel (12,7) und (13,6), jedoch nicht die Pixel (12,6) und (13,6).
  • Das Auswahluntersystem 608 empfängt als Eingang das aktuelle Anfangspixel, die Suchrichtung sowie die ausgewählte Reihenfolge. Die ausgewählte Reihenfolge kann entweder der Uhrzeigersinn oder der Gegenuhrzeigersinn sein. Das Auswahluntersystem 608 analysiert die Nachbarn des aktuellen Anfangspixels entweder in der Reihenfolge im Uhrzeigersinn oder im Gegenuhrzeigersinn, um das nächste Anfangspixel zu ermitteln. Nachdem der Eingang empfangen worden ist, setzt die Einrichtung 702 des Auswahluntersystems 608 den aktuellen Nachbarn auf den Nachbarn in der Suchrichtung ausgehend vom aktuellen Anfangspixel. Wenn z. B. die Suchrichtung West ist, wählt die Einrichtung 702 den westlichen Nachbarn des aktuellen Anfangspixels als den aktuellen Nachbarn.
  • Die Einrichtung 704 ermittelt, ob der aktuelle Nachbar dem aktuellen Anfangspixel ähnlich ist, das heißt, ob beides helle Pixel sind, die einen Teil einer Ruhezone bilden. Trifft dies zu, so kehrt anschließend, bevor zur Einrichtung 708 vorgerückt wird, die Einrichtung 706 vorübergehend die ausgewählte Reihenfolge für die Nachbaranalyse um, d. h. vom Uhrzeigersinn zum Gegenuhrzeigersinn oder vom Gegenuhrzeigersinn zum Uhrzeigersinn, je nachdem welche Reihenfolge geeignet ist. Diese Umkehr der ausgewählten Reihenfolge ist vorübergehend, da die umgekehrte Reihenfolge nur aufrechterhalten wird, bis die Verarbeitung des Auswahluntersystems 608 abgeschlossen ist. Wenn die Verarbeitung zum Lokalisierungsuntersystem zurückkehrt, wird die Reihenfolge auf diejenige zurückgesetzt, die bei Implementierung des Auswahluntersystems 608 vorgelegen hat. Ansonsten wird dann, wenn der aktuelle Nachbar dem aktuellen Anfangspixel nicht ähnlich ist, die Verarbeitung direkt mit der Einrichtung 708 fortgesetzt.
  • Die Einrichtung 708 wählt den nächsten Nachbarn aus, indem sie sich in der ausgewählten Reihenfolge ausgehend vom aktuellen Nachbarn in 45º-Inkrementen um das aktuelle Anfangspixel herumbewegt. Wenn z. B. der aktuelle Nachbar der westliche Nachbar ist und die ausgewählte Suchrichtung der Uhrzeigersinn ist, dann wählt die Einrichtung 708 den nordwestlichen Nachbarn als nächsten Nachbarn aus. Wenn der aktuelle Nachbar der westliche Nachbar ist und die ausgewählte Reihenfolge der Gegenuhrzeigersinn ist, dann wird in ähnlicher Weise der südwestliche Nachbar als nächster Nachbar ausgewählt.
  • Wenn die Einrichtung 710 feststellt, daß der nächste Nachbar dem aktuellen Nachbarn ähnlich ist, so ist das nächste Anfangspixel noch nicht gefunden worden. In diesem Fall setzt die Einrichtung 712 den aktuellen Nachbarn auf den nächsten Nachbarn, woraufhin die Verarbeitung zur Einrichtung 708 zurückkehrt, um den nächsten Nachbarn auszuwählen. Ansonsten ermittelt die Einrichtung 714, ob der nächste Nachbar dem aktuellen Anfangspixel ähnlich ist. Trifft dies zu, so wählt anschließend die Einrichtung 716 das nächste Anfangspixel als den nächsten Nachbarn aus. Ansonsten wählt die Einrichtung 718 das nächste Anfangspixel als den aktuellen Nachbarn aus. In jedem Fall wird das nächste Anfangspixel ausgewählt, wobei die Verarbeitung des Auswahluntersystems 608 abgeschlossen ist.
  • Beispiel für die Lokalisierung einer Ecke eines Strichcodesymbols
  • Die Verarbeitung sowohl des Anfangspixelauswahluntersystems 608 als auch des Zwei-Ecken-Lokalisierungsuntersystems 600 können im Kontext des Beispiels der Fig. 5 erläutert werden.
  • Wie im Beispiel der Fig. 5 gezeigt, empfängt das Zwei- Ecken-Lokalisierungsuntersystems 600 ein ursprüngliches Anfangspixel (13,6) sowie eine Suchrichtung West. Die Einrichtung 602 der Fig. 6 wählt eine Reihenfolge im Uhrzeigersinn, während die Einrichtung 604 das aktuelle Anfangspixel auf das ursprüngliche Anfangspixel (13,6) setzt und die Einrichtung 606 die Liste der ausgewählten Anfangspixel beginnt.
  • In Fig. 9 ist eine Tabelle gezeigt, die die ersten zwölf Verarbeitungszyklen des Lokalisierungsuntersystems 600 für das Beispiel der Fig. 5 zeigt. Nach dem Zyklus 1 enthält die Liste der ausgewählten Anfangspixel, die vom Lokalisierungsuntersystem 600 gehalten wird, nur das ursprüngliche Anfangspixel (13,6).
  • Zu Beginn des Zyklus 2 empfängt das Auswahluntersystem 608 als Eingaben das aktuelle Anfangspixel (13,6), die Suchrichtung West sowie die ausgewählte Reihenfolge im Uhrzeigersinn. Die Einrichtung 702 der Fig. 7 setzt den aktuellen Nachbarn auf das Pixel (12,6), da dies der Nachbar in der westlichen Suchrichtung ausgehend vom aktuellen Anfangspixel (13,6) ist. Dieser aktuelle Nachbar (12,6) ist ein dunkles Pixel, während das aktuelle Anfangspixel (13,6) ein helles Pixel ist, so daß diese Pixel nicht ähnlich sind und die Einrichtung 704 die Verarbeitung an die Einrichtung 708 weitergibt.
  • Die Einrichtung 708 wählt das Pixel (12,7) als den nächsten Nachbarn aus, indem sie sich ausgehend vom aktuellen Nachbarn (12,6) im Uhrzeigersinn um das aktuelle Anfangspixel (13,6) herumbewegt. Da der nächste Nachbar (12,7) hell ist, ist der nächste Nachbar (12,7) dem aktuellen Nachbarn (12,6) nicht ähnlich, woraufhin die Einrichtung 710 die Verarbeitung an die Einrichtung 714 übergibt. Da der nächste Nachbar (12,7) dem aktuellen Anfangspixel (13,6) ähnlich ist, gibt die Einrichtung 714 die Verarbeitung an die Einrichtung 716 weiter, die den nächsten Nachbarn (12,7) als nächstes Anfangspixel auswählt. Anschließend kehrt die Verarbeitung zur Einrichtung 610 des Lokalisierungsuntersystems 600 zurück, um die Liste der ausgewählten Anfangspixel zu aktualisieren, indem sie das nächste Anfangspixel (12,7) hinzufügt, wie im Zyklus 2 der Fig. 8 gezeigt ist. Anschließend wählt die Einrichtung 612 das nächste Anfangspixel (12,7) als aktuelles Anfangspixel aus. Da die Liste der ausgewählten Anfangspixel nur zwei Pixel lang ist, was kürzer ist als die vorzugsweise ausgewählte Schwelle von fünf Pixeln, gibt die Einrichtung 614 die Verarbeitung an das Auswahluntersystem 608 zurück.
  • Im Zyklus 3 verwendet die Einrichtung 702 des Auswahluntersystems 608 das aktuelle Anfangspixel (12,7) und die Suchrichtung West, um den aktuellen Nachbarn (11,7) auszuwählen. Nachdem die Einrichtung 704 festgestellt hat, daß der aktuelle Nachbar (11,7) dem aktuellen An fangspixel (12,7) nicht ähnlich ist, wählt die Einrichtung 708 den nächsten Nachbarn (11,8), indem sie sich ausgehend vom aktuellen Nachbarn (11,7) im Uhrzeigersinn um das aktuelle Anfangspixel (12,7) herumbewegt. Da der nächste Nachbar (11,8) dem aktuellen Nachbarn (11,7) ähnlich ist, gibt die Einrichtung 710 die Verarbeitung an die Einrichtung 712 weiter, die den aktuellen Nachbarn auf den nächsten Nachbarn (11,8) setzt. Anschließend kehrt die Verarbeitung zur Einrichtung 708 zurück, die den nächsten Nachbarn (12,8) auswählt, indem sie sich ausgehend vom aktuellen Nachbarn (11,8) im Uhrzeigersinn um das aktuelle Anfangspixel (12,7) herumbewegt. Da der nächste Nachbar (12,8) dem aktuellen Nachbarn (11,8) nicht ähnlich ist, gibt die Einrichtung 710 nun die Verarbeitung an die Einrichtung 714 weiter, die ihrerseits feststellt, daß der nächste Nachbar (12,8) dem aktuellen Anfangspixel (12,7) ähnlich ist. Anschließend setzt die Einrichtung 716 das nächste Anfangspixel auf den nächsten Nachbarn (12,8).
  • Anschließend aktualisiert die Einrichtung 610 die Liste der ausgewählten Pixel, indem sie das nächste Anfangspixel (12,8) hinzufügt, wie mit Zyklus 3 der Fig. 8 gezeigt ist, während die Einrichtung 612 das aktuelle Anfangspixel auf das nächste Anfangspixel (12,8) setzt. Da die Liste der ausgewählten Anfangspixel immer noch kürzer ist als die ausgewählte Schwelle von 5 Pixeln, gibt die Einrichtung 614 die Verarbeitung erneut an die Einrichtung 608 zurück.
  • In ähnlicher Weise wählt das Auswahluntersystem 608 in den Zyklen 4 und 5 die Pixel (11,9) und (10,10) als die nächsten beiden Anfangspixel aus, wobei die Einrichtung 610 die Liste der ausgewählten Anfangspixel aktualisiert, wie in Fig. 8 gezeigt ist. Im Zyklus 5 stellt die Einrichtung 614 fest, daß die Liste der ausgewählten Anfangspixel nicht mehr kürzer ist als die ausgewählte Schwelle von fünf Pixeln und gibt die Verarbeitung an die Einrichtung 616 weiter, die den aktuellen Vektor (-3,4) erzeugt, indem sie den Vektor ausgehend vom ersten Anfangspixel (13,6) in der Liste bis zum letzten Anfangspixel (10,10) in der Liste zum Ursprung verschiebt, wie im Zyklus 5 der Fig. 8 gezeigt ist. Der aktuelle Vektor (-3,4) zeigt an, daß ein Übergang vom Pixel (13,6) zum Pixel (10,10) eine Bewegung westwärts von 3 Pixeln und nordwärts von 4 Pixeln erfordert.
  • Da der aktuelle Vektor (-3,4) der erste Vektor ist, der vom Lokalisierungsuntersystem 600 für die ausgewählte Reihenfolge im Uhrzeigersinn erzeugt worden ist, gibt die Einrichtung 618 die Verarbeitung an die Einrichtung 620 zurück, die den aktuellen Vektor (-3,4) als Referenzvektor speichert. Da der aktuelle Vektor (-3,4) mit dem Referenzvektor (-3,4) identisch ist, berechnet die Einrichtung 622 eine Vektordifferenzgröße gleich 0, wie im Zyklus 5 der Fig. 8 gezeigt ist.
  • Da die Größe 0 kleiner ist als die ausgewählte dritte Schwelle, die im Beispiel der Fig. 5 mit 2,5 angenommen wird, gibt die Einrichtung 624 die Verarbeitung an das Auswahluntersystem 608 für den Zyklus 6 zurück. Fachleute werden erkennen, daß der gewählte Wert für die dritte Schwelle off-line empirisch ermittelt werden kann, indem das Lokalisierungsuntersystem 600 unter Verwendung verschiedener Werte für die dritte Schwelle zum Verarbeiten von Bildern, die bekannte Strichcodesymbole enthalten, getestet wird.
  • Unter Verwendung des aktuellen Anfangspixels (10,10) wählt das Auswahluntersystem 608 im Zyklus 6 das nächste Pixel (9,11) aus, wobei die Einrichtung 610 die Liste der ausgewählten Anfangspixel aktualisiert, indem sie das erste Anfangspixel (13,6) verwirft und das nächste Anfangspixel (9,11) hinzufügt, wie in Fig. 8 gezeigt ist. Die Einrichtung 616 erzeugt den aktuellen Vektor (-3,4), während die Einrichtung 622 die Größe 0 berechnet und die Einrichtung 624 die Verarbeitung an das Auswahluntersystem 608 für den Zyklus 7 zurückgibt. In ähnlicher Weise wählt das Auswahluntersystem 608 in den Zyklen 7, 8 und 9 die Pixel (9,12), (8,13) bzw. (7,14) als die nächsten drei Anfangspixel aus, während die Einrichtung 610 die Liste der ausgewählten Anfangspixel aktualisiert, die Einrichtung 616 die aktuellen Vektoren (-3,4) erzeugt und die Einrichtung 624 die Verarbeitung an das Auswahluntersystem 608 für den nächsten Zyklus zurückgibt.
  • Im Zyklus 10 setzt die Einrichtung 702 des Auswahluntersystems 608 den aktuellen Nachbarn auf der Grundlage des aktuellen Anfangspixels (7,14) auf den westlichen Nachbarn (6,14). Da der aktuelle Nachbar (6,14) hell ist, ist er dem aktuellen Anfangspixel (7,14) ähnlich, woraufhin die Einrichtung 704 die Verarbeitung an die Einrichtung 706 weitergibt, die die ausgewählte Reihenfolge vorübergehend umkehrt. Da die ausgewählte Reihenfolge der Uhrzeigersinn war, wählt die Einrichtung 706 vorübergehend den Gegenuhrzeigersinn als Reihenfolge aus. Anschließend wählt die Einrichtung 708 den nächsten Nachbarn (6,13) aus, indem sie sich ausgehend vom aktuellen Nachbarn (6,14) im Gegenuhrzeigersinn um das aktuelle Anfangspixel (7,14) herumbewegt. Da der nächste Nachbar (6,13) dunkel ist, ist er dem aktuellen Nachbarn (6,14) nicht ähnlich, woraufhin die Einrichtung 710 die Verarbeitung an die Einrichtung 714 weitergibt. Da der nächste Nachbar (6,13) auch dem aktuellen Anfangspixel (7,14) nicht ähnlich ist, gibt die Einrichtung 714 die Verarbeitung an die Einrichtung 718 weiter, die das nächste Anfangspixel auf den aktuellen Nachbarn (6,14) setzt. Anschließend aktuali siert die Einrichtung 610 die Liste der ausgewählten Anfangspixel, während die Einrichtung 616 den aktuellen Vektor (-3,3) erzeugt, wie im Zyklus 10 der Fig. 8 gezeigt ist. In diesem Fall berechnet die Einrichtung 622 eine Größe von 1,0, die die Größe der Vektordifferenz zwischen dem aktuellen Vektor (-3,3) und dem Referenzvektor (-3,4) darstellt. Anschließend gibt die Einrichtung 624 die Verarbeitung an das Auswahluntersystem 608 für den Zyklus 11 zurück, da die Größe 1,0 kleiner ist als die ausgewählte dritte Schwelle 2,5.
  • In ähnlicher Weise wählt das Auswahluntersystem 608 im Zyklus 11 das nächste Anfangspixel (5,13) aus, während die Einrichtung 610 die Liste der ausgewählten Anfangspixel aktualisiert, die Einrichtung 616 die aktuellen Vektoren (-4,1) erzeugt und die Einrichtung 622 eine Größe von 3,2 berechnet, wie im Zyklus 11 der Fig. 8 gezeigt ist. Die Einrichtung 624 stellt fest, daß die Größe 3,2 nicht mehr kleiner ist als die ausgewählte dritte Schwelle 2,5 und gibt die Verarbeitung an die Einrichtung 626 weiter. Die Einrichtung 626 wählt das Pixel aus, das der detektierten Ecke entspricht. Um sicherzustellen, daß der Bereich, der von den vom Lokalisierungsuntersystem 112 identifizierten vier Ecken definiert wird, das gesamte lokalisierte Strichcodesymbol enthält, wählt die Einrichtung 626 des Lokalisierungsuntersystems 600 vorzugsweise ein Pixel außerhalb der wirklichen Ecke des äußeren Strichs des Start/Stopp- Zeichens als detektierte Ecke aus. Im Beispiel der Fig. 5 kann die Einrichtung 626 das Pixel (7,15) als erste Ecke auswählen, die dem Punkt 214 der Fig. 2 entspricht, indem sie sich ausgehend vom letzten ausgewählten Anfangspixel (5,13) zwei Pixel nordwärts und zwei Pixel ostwärts bewegt.
  • Wenn die Suchrichtung West ist und die ausgewählte Rei henfolge der Uhrzeigersinn ist, lokalisiert das Lokalisierungsuntersystem 600 die nordöstliche Ecke eines Strichcodesymbols, wobei sich die Einrichtung 626 ausgehend vom zuletzt ausgewählten Anfangspixel zwei Pixel nordwärts und zwei Pixel ostwärts bewegt, um die Auswahl ebnes Eckpixels sicherzustellen, so daß sich eine Umrandung des gesamten Strichcodesymbols ergibt. Wenn in ähnlicher Weise die Suchrichtung West ist und die ausgewählte Reihenfolge der Gegenuhrzeigersinn ist, lokalisiert das Lokalisierungsuntersystem 600 die südwestliche Ecke, wobei die Einrichtung 626 sich nach Süden und Osten bewegt. Wenn die Suchrichtung Ost ist und die ausgewählte Reihenfolge der Uhrzeigersinn ist, lokalisiert das Untersystem 600 die südwestliche Ecke, wobei die Einrichtung 626 sich nach Süden und Westen bewegt. In alternativen Ausführungsformen kann sich die Einrichtung 626 eine andere Anzahl von Pixeln in diese Richtungen bewegen, einschließlich 0.
  • Nach der Auswahl des ersten Eckpixels stellt die Einrichtung 628 fest, daß bisher nur ein Eckpixel ausgewählt worden ist, woraufhin die Einrichtung 630 die Reihenfolge im Gegenuhrzeigersinn auswählt. Das Lokalisierungsuntersystem 600 beginnt den Prozeß der Lokalisierung der zweiten Ecke unter Verwendung der Reihenfolge im Gegenuhrzeigersinn im Zyklus 12, indem es zur Einrichtung 604 zurückkehrt, die das aktuelle Anfangspixel auf das ursprüngliche Anfangspixel (13,6) zurücksetzt, und zur Einrichtung 606 zurückkehrt, die die Liste der ausgewählten Anfangspixel erneut mit nur dem ursprünglichen Anfangspixel (13,6) beginnt, wie in Fig. 8 gezeigt ist. Das Lokalisierungsuntersystem 600 setzt den Verarbeitungsalgorithmus wie bei der Lokalisierung der ersten Ecke fort, bis die zweite Ecke lokalisiert ist, wobei zu diesem Zeitpunkt die Einrichtung 628 feststellt, daß beide Ecken lokalisiert worden sind, und die Verarbeitung des Lokalisierungsuntersystems 600 abgeschlossen ist.
  • Fachleute werden erkennen, daß die Eckenlokalisierungsuntersysteme der vorliegenden Erfindung verwendet werden können, um Ecken von Artefakten in Pixelbildern zu lokalisieren, die keine Strichcodesymbole sind. Solche Artefakte können eine andere Form aufweisen als ein Rechteck mit rechtwinkligen Ecken.
  • Decodierung der Strichcodesymbole
  • In Fig. 9 ist ein Prozeßablaufdiagramm eines Strichcodesymbol-Decodierungsuntersystems 114 des Erfassungssystems 100 zum Decodieren eines Strichcodesymbols gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gezeigt 4 Wenn das Vier-Ecken-Lokalisierungsuntersystem 112 des Erfassungssystems 100 der Fig. 2 alle vier Ecken eines detektierten Strichcodesymbols lokalisiert hat, decodiert das Decodierungsuntersystem 114 das Symbol, indem es die Folge der alphanumerischen Zeichen ermittelt, die als Striche und Zwischenräume im Strichcodesymbol decodiert sind. Die alphanumerischen Zeichen können irgendwelche möglichen Zeichen sein und sind nicht nur auf Ziffern und Buchstaben des englischen Alphabets beschränkt. Das Decodierungsuntersystem 114 wählt eine Referenzlinie quer zum willkürlich orientierten Strichcodesymbol und detektiert das Symbol, indem es diese Referenzlinie entlang schreitet.
  • Für jene Symbolsätze mit Prüfsummeneigenschaft, wie z. B. dem Code 128, wählt das Decodierungsuntersystem 114 ein oder mehrere Möglichkeiten eines alphanumerischen Zeichens für jedes Symbolzeichen aus. Das Decodierungsuntersystem 114 führt anschließend mit dem Satz von alphanumerischen Zeichen, die unter diesen Zeichenauswahlen ausgewählt worden sind, eine Prüfsummenanalyse durch. Wenn ein Zeichensatz die Prüfsummenanalyse besteht, wird anschließend dieser Zeichensatz als das Ergebnis der Decodierung des Strichcodesymbols ausgewählt. Falls keiner der Zeichensätze die Prüfsummenanalyse besteht, wählt das Decodierungsuntersystem 114 anschließend eine weitere Referenzlinie aus, für die der Prozeß der Decodierung und Prüfung wiederholt wird. Das Decodierungsuntersystem 114 fährt mit dem Auswählen von Referenzlinien fort, bis die Prüfsummenanalyse bestanden wird, oder bis eine spezifizierte Stoppbedingung auftritt. Die Stoppbedingung kann eine spezifizierte Auflösung zwischen den Referenzlinien, eine spezifizierte Anzahl von Referenzlinien oder eine spezifizierte Verarbeitungszeit sein, je nach den Anforderungen der speziellen Anwendung.
  • Für jene Symbolsätze, die keine Prüfsummeneigenschaft aufweisen, wählt das Decodierungsuntersystem 114 die beste Auswahl eines alphanumerischen Zeichens für jedes Symbolzeichen aus. Jede dieser Auswahlen besitzt einen zugehörigen Zuverlässigkeitsfaktor. Wenn jede der Auswahlen im Satz der besten Auswahlen auf der Grundlage der Zuverlässigkeitsfaktoren "gut genug" ist, dann wählt das Decodierungsuntersystem 114 den Satz als das Decodierungsergebnis für das Strichcodesymbol aus. Wenn ein oder mehrere Möglichkeiten nicht gut genug sind, dann wählt das Decodierungsuntersystem 114 eine weitere Referenzlinie aus, für die der Prozeß der Decodierung wiederholt wird, wobei die besten Auswahlen jeder Referenzlinie gespeichert werden. Das Auswählen der Referenzlinien wird fortgesetzt, bis jede der Auswahlen gut genug ist, oder bis die spezifizierte Stoppbedingung eintritt.
  • In Fig. 10 ist eine graphische Darstellung eines Pixelbildes 1000 gezeigt, das ein gestörtes Strichcodesymbol 1002 enthält. Das Strichcodesymbol 1002 ist ein Symbol des Code 128, das die Daten "CODE 128" codiert. Zusätzlich zu den 8 Datenzeichen enthält das Strichcodesymbol 1002 ein Startzeichen, ein Stoppzeichen, das den Abschlußstrich enthält, sowie ein Prüfsummenzeichen. Das Prüfsummenzeichen stellt den Wert 84 dar, was dem Ergebnis der Durchführung der entsprechenden Code-128-Prüfsummenberechnung mit den 8 Datenzeichen des Strichcodesymbols 1002 entspricht. Das Prüfsummenzeichen kann verwendet werden, um die Richtigkeit der Decodierung des Strichcodesymbols 1002 zu überprüfen.
  • Das Strichcodesymbol 1002 ist in den Bereichen 1004, 1006 und 1008 gestört. Die Störungen können Striche und Zwischenräume erzeugen, die dünner oder dicker erscheinen, als sie sein sollten. Solche Abweichungen von den beabsichtigten Dicken können zu Fehlern bei der Decodierung des Strichcodesymbols 102 längs der Referenzlinien führen, die durch die gestörten Bereiche verlaufen.
  • Wie in Fig. 9 gezeigt, empfängt in einer bevorzugten Ausführungsform das Decodierungsuntersystem 114 als Eingaben die vier Ecken des Strichcodesymbols, die vom Vier-Ecken-Lokalisierungsuntersystem 112 lokalisiert worden sind. Anschließend wählt die Einrichtung 902 eine erste Referenzlinie quer zum Strichcodesymbol aus. Eine Referenzlinie verläuft im allgemeinen vorzugsweise senkrecht zu den Strichen und Zwischenräumen des Strichcodesymbols durch das Strichcodesymbol. Daher beginnt eine Referenzlinie in einer Ruhezone und endet in der anderen Ruhezone des Strichcodesymbols. In einer bevorzugten Ausführungsform ist die erste Referenzlinie die Mittelsenkrechte, wie vorher in Verbindung mit den Fig. 2 und 4 gezeigt, die durch die Mitte des Strichcodesymbols verläuft.
  • Im Beispiel der Fig. 10 empfängt das Decodierungsuntersystem 114 als Eingaben die Ecken 1010, 1012, 1014 und 1016, die einen Bereich des Pixelbildes 1000 definieren, der das Strichcodesymbol 1002 enthält. Die Einrichtung 902 wählt die Referenzlinie 1018 als erste Referenzlinie für die Decodierung des Strichcodesymbols 1002. Die Referenzlinie 1018 kann die Linie durch die Punkte 1020 und 1022 sein, wobei der Punkt 1020 der Mittelpunkt zwischen den Ecken 1010 und 1012 an einem Ende des Strichcodesymbols 1002 ist und der Punkt 1022 der Mittelpunkt zwischen den Ecken 1014 und 1016 am anderen Ende des Strichcodesymbols 1002 ist.
  • Anschließend führt das Schrittuntersystem 904 eine Subpixel-Interpolation des Strichcodesymbols 1002 längs den der Referenzlinie 1018 zugeordneten Suchschritten durch. Das Schrittuntersystem 904 und die Subpixel-Interpolation werden in dieser Beschreibung später in Verbindung mit den Fig. 11, 14 und 15 genauer beschrieben. Jedes Symbolzeichen des Strichcodesymbols 1002 ist ein Satz von Strichen und Zwischenräumen, der ein alphanumerisches Zeichen darstellt. Das Schrittuntersystem 904 wählt ein oder mehrere alphanumerische Zeichen, um sie jedem Symbolzeichen des Strichcodesymbols 1002 zuzuordnen. Außerdem weist das Schrittuntersystem 904 für jedes Symbolzeichen jedem ausgewählten alphanumerischen Zeichen einen Zuverlässigkeitsfaktor zu, der anzeigt, wie "sicher" das Untersystem 904 ist, daß das Symbolzeichen wirklich das ausgewählte alphanumerische Zeichen darstellt.
  • Zum Beispiel kann das Schrittuntersystem 904 unter Verwendung der Referenzlinie 1018 feststellen, daß das erste Datenzeichen des Strichcodesymbols 1002 dem alphanumerischen Zeichen "C" zuzuordnen ist, wie in Tabelle 1 gezeigt ist. Diese Zeichenauswahl wird anschließend ein bestimmter Zuverlässigkeitsfaktor zugewiesen. Das Schrittuntersystem 904 kann ferner feststellen, daß das zweite Zeichen dem alphanumerischen Zeichen "O" zuzuordnen ist, welches mit seinem eigenen Zuverlässigkeitsfaktor versehen wird. TABELLE I DATENZEICHEN
  • Da das Strichcodesymbol 1002 in den Bereichen 1004 und 1006 gestört ist, kann das Schrittuntersystem 904 unter Verwendung der Referenzlinie 1018 ein oder mehrere alphanumerische Zeichenauswahlen für jedes der anderen Datenzeichen erzeugen. Zum Beispiel kann das Schrittuntersystem 904 eine erste oder beste Auswahl "O" und eine zweitbeste Auswahl "W" für das zweite Datenzeichen des Strichcodesymbols 1002 erzeugen, da die Referenzlinie 1018 durch den gestörten Bereich 1004 am zweiten Datenzeichen verläuft. Die relativen Werte der zugewiesenen Zuverlässigkeitsfaktoren können anzeigen, daß das Schrittuntersystem 904 "sicherer" ist, daß das zweite Datenzeichen das alphanumerische Zeichen "O" darstellt, als daß es das alphanumerische Zeichen "W" darstellt. In ähnlicher Weise kann das Schrittuntersystem 904 aufgrund der ungünstigen Ergebnisse des gestörten Bereichs 1006 beste, zweitbeste und drittbeste Auswahlen "7", "L", bzw. "E" für das vierte Datenzeichen des Strichcodesymbols 1002 erzeugen.
  • Wenn die erste Referenzlinie ausgewählt ist, erzeugt die Einrichtung 906 eine Zeichentabelle der alphanumerischen Zeichen und der zugehörigen Zuverlässigkeitsfaktoren, die vom Schrittsystem 904 zugewiesen werden. Jede Spalte der Zeichentabelle entspricht einem anderen Symbolzeichen, wobei jede Spalte die diesem Symbolzeichen zugeordneten alphanumerischen Zeichen in einer Anordnung von der höchsten Zuverlässigkeit zur niedrigsten Zuverlässigkeit, d.h. von der besten Auswahl zur schlechtesten Auswahl, enthält.
  • Nachdem die Einrichtung 906 die Zeichentabelle erzeugt hat, wählt die Einrichtung 908 einen Zeichensatz aus der Zeichentabelle aus. Zu Beginn wählt die Einrichtung 908 den Satz der Zeichen der ersten Auswahl aus der Zeichentabelle aus. Jedes Zeichen dieses Satzes der Zeichen der ersten Auswahl ist die beste oder erste Auswahl, das heißt das alphanumerische Zeichen mit der höchsten Zuverlässigkeit für jedes in der Zeichentabelle dargestellte Symbol zeichen.
  • Die Einrichtung 910 führt anschließend eine Prüfsummenberechnung für den ausgewählten Satz von alphanumerischen Zeichen durch und vergleicht das Ergebnis mit dem Prüfsummenzeichen. Wenn die Einrichtung 910 feststellt, daß das Prüfsummenergebnis mit dem Prüfsummenzeichen übereinstimmt, wird anschließend das Strichcodesymbol decodiert und die Verarbeitung des Decodierungsuntersystems 114 abgeschlossen. Andernfalls fällt die Prüfsummenanalyse negativ aus und die Einrichtung 912 ermittelt, ob irgendwelche weiteren Sätze von Zeichenauswahlen in der Zeichentabelle zu prüfen sind. Trifft dies zu, dann wählt die Einrichtung 908 den nächsten Zeichensatz aus der Zeichentabelle für die Prüfsummenanalyse durch die Einrichtung 910 aus.
  • Wie oben beschrieben worden ist, kann jedes Symbolzeichen ein oder mehrere zugewiesene alphanumerische Zeichen in der Zeichentabelle besitzen. Das Decodierungsuntersystem 114 kann andere Sätze von alphanumerischen Zeichen, die nicht dem Zeichensatz der ersten Auswahl entsprechen, anhand des Prüfsummenzeichens überprüfen. In einer bevorzugten Ausführungsform besteht jeder dieser anderen Zeichensätze aus dem alphanumerischen Zeichen der ersten Auswahl für jedes Symbolzeichen, mit Ausnahme eines Symbolzeichens, das durch eine seiner anderen Auswahlen dargestellt wird. Das Decodierungsuntersystem 114 prüft diese anderen Zeichensätze, bis ein Zeichensatz gefunden ist, der die Prüfsummenanalyse besteht.
  • Wenn keine weiteren Zeichensätze zu prüfen sind, dann ermittelt die Einrichtung 914, ob irgend welche weiteren Referenzlinien auszuwählen sind. In Abhängigkeit von den Anforderungen der speziellen Anwendung kann die Auswahl von Referenzlinien fortgesetzt werden, bis eine spezifizierte Auflösung zwischen den Referenzlinien erreicht worden ist, bis eine spezifizierte Anzahl von Referenzlinien ausgewählt worden ist oder bis eine spezifizierte Verarbeitungszeit verstrichen ist, je nachdem, welches Kriterium gewünscht ist. In einer bevorzugten Ausführungsform werden bis zu drei Referenzlinien ausgewählt, um ein detektiertes Strichcodesymbol zu decodieren. Wenn mehrere Referenzlinien vorhanden sind, dann wählt die Einrichtung 902 eine nächste Referenzlinie für eine weitere Subpixel-Interpolation durch das Schrittuntersystem 904 aus. Ansonsten sind alle Referenzlinien ausgewählt worden und das Decodierungsuntersystem 902 konnte das Strichcodesymbol nicht decodieren.
  • Im Beispiel der Fig. 10 kann die Tabelle 1 die Zeichenauswahlen darstellen, die von der Einrichtung 906 unter Verwendung der Referenzlinie 1018 erzeugt worden sind. Die Einrichtung 908 wählt zuerst den Satz der Zeichen der ersten Auswahl aus, der dem Zeichensatz ("C", "O", "D", "7", Leerzeichen, "1", "2", "8", "84") entspricht. Die Einrichtung 910 führt anschließend mit dem ausgewählten Zeichensatz eine Prüfsummenanalyse durch. Da das Prüfsummenergebnis der Einrichtung 910 nicht mit dem Prüfsummenzeichen "84" übereinstimmt, fällt die Prüfsummenanalyse negativ aus. Anschließend ermittelt die Einrichtung 912, ob die Zeichentabelle irgendwelche weiteren Zeichensätze enthält. In einer bevorzugten Ausführungsform des Decodierungsuntersystems 114 werden dann, wenn der Satz der Zeichen der ersten Auswahl die Prüfsummenanalyse nicht besteht, ausgewählte andere Zeichensätze geprüft.
  • Nachdem der Zeichensatz der ersten Auswahl die Prüfsummenanalyse nicht bestanden hat, stellt die Einrichtung 912 fest, daß in der Zeichentabelle weitere Zeichensätze vorhanden sind, wobei die Einrichtung 908 einen weiteren Zeichensatz aus der Zeichentabelle auswählt. Im Beispiel der Tabelle I kann die Einrichtung 908 ("C", "W", "D", "7", Leerzeichen, "1", "2", "8", "84") als nächsten zu prüfenden Zeichensatz auswählen. Dieser Satz stellt die erste Auswahl für jedes Symbolzeichen dar, mit Ausnahme des Datenzeichens #2, für das die zweite Auswahl ausgewählt wird. Die Einrichtung 910 führt für diesen Zeichensatz die Prüfsummenberechnung durch und stellt fest, daß er ebenfalls die Prüfsummenanalyse nicht besteht. Erneut stellt die Einrichtung 912 fest, daß der ausgewählte Zeichensatz nicht der letzte Zeichensatz ist, wobei die Einrichtung 908 als nächsten Zeichensatz ("C", "O", "D", "L", Leerzeichen, "1", "2", "8", "84") auswählt. Dieser Zeichensatz besteht ebenfalls die Prüfsummenanalyse der Einrichtung 910 nicht, woraufhin ("C", "O", "D", "E", Leerzeichen, "1", "2", "8", "84") als nächster Zeichensatz von der Einrichtung 908 ausgewählt wird.
  • Da ("C" , "O", "D", "L", Leerzeichen, "1", "2", "8", "84") der korrekte Zeichensatz ist, besteht er die Prüfsummenanalyse der Einrichtung 910, d. h. das Ergebnis der für die Datenzeichen dieses Satzes von Zeichen durchgeführten Prüfsummenberechnung ist "84", der Wert des Prüfsummenzeichens. Zu diesem Zeitpunkt ist das Strichcodesymbol 1002 decodiert und die Verarbeitung des Decodierungsuntersystems 114 abgeschlossen. Wenn sich jedoch aus irgendeinem Grund herausstellt, daß der Bereich 1006 so gestört ist, daß für die Referenzlinie 1018 keiner der von der Einrichtung 908 ausgewählten Zeichensätze die Prüfsummenanalyse besteht, dann ermittelt die Einrichtung 914, ob irgendwelche weiteren Referenzlinien verwendet werden können, um das Strichcodesymbol 1002 zu decodieren. Die Anzahl der zu verwendenden Referenzlinien kann von den Verarbeitungsanforderungen der speziellen Anwendung vorgegeben sein. In einer Ausführungsform werden bis zu 20 Referenzimien ausgewählt.
  • Nachdem die Einrichtung 914 festgestellt hat, daß die Referenzlinie 1018 nicht die letzte auszuwählende Referenzlinie ist, kann die Einrichtung 902 die Referenzlinie 1024 als nächste Referenzlinie auswählen, wobei die Referenzlinie 1024 vorzugsweise die Linie in der Mitte zwischen der Referenzlinie 1018 und der von den Ecken 1010 und 1016 definierten Linie ist. Das Schrittuntersystem 904 decodiert anschließend durch Entlangschreiten der Referenzlinie 1024. Wie oben beschrieben worden ist, kann diese Decodierung für jedes Symbolzeichen im Strichcodesymbol 1002 zu einem oder mehreren alphanumerischen Zeichen und zugehörigen Zuverlässigkeitsfaktoren führen. Die Einrichtung 906 aktualisiert anschließend die Zeichentabelle unter Verwendung der Ergebnisse für die Referenzlinie 1024 und der vorangehend erzeugten Ergebnisse für die Referenzlinie 1018.
  • Wie in dieser Beschreibung später in Verbindung mit Fig. 11 genauer beschrieben wird, sind in einer bevorzugten Ausführungsform die Zuverlässigkeitsfaktoren Abstandswerte, die die Abweichungen von den idealen Zeichen wiedergeben. Hierbei gibt ein kleinerer Zuverlässigkeits faktor eine kleinere Abweichung von einem idealen alphanumerischen Zeichen und ein höheres Niveau von Zuverlässigkeit an, das das ideale alphanumerische Zeichen das korrekte Zeichen ist. In einer bevorzugten Ausführungsform aktualisiert die Einrichtung 906 die Zeichentabelle, indem sie einen effektiven Zuverlässigkeitsfaktor R für jede alphanumerische Auswahl gemäß der Gleichung:
  • 1/R = Σ 1/Ri (1)
  • erzeugt, wobei Ri die Zuverlässigkeitsfaktoren für diese alphanumerische Auswahl unter Verwendung unterschiedlicher Referenzlinien sind. Die Zeichentabelle wird anschließend aktualisiert, indem die Auswahlen entsprechend ihrer effektiven Zuverlässigkeitsfaktoren angeordnet werden.
  • Es sei z. B. angenommen, daß für eines der Symbolzeichen in einem Strichcodesymbol zwei alphanumerische Auswahlen unter Verwendung der ersten Referenzlinie erzeugt werden: Der Buchstabe "A" mit einem Zuverlässigkeitsfaktor 0,5 und der Buchstabe "B" mit einem Zuverlässigkeitsfaktor 0,8. Nach dieser ersten Referenzlinie ist "A" die erste Auswahl und "B" die zweite Auswahl, da "A" den kleineren Zuverlässigkeitsfaktor besitzt. Es sei ferner angenommen, daß unter Verwendung der zweiten Referenzlinie zwei weitere Auswahlen für dasselbe Symbolzeichen erzeugt werden: "B" mit einem Zuverlässigkeitsfaktor 0,8 und "C" mit einem Zuverlässigkeitsfaktor 0,6. In diesem Fall aktualisiert die Einrichtung 906 die Zeichentabelle für dieses Symbolzeichen, indem sie "A" mit einem Zuverlässigkeitsfaktor 0,5 beibehält, "C" mit einem Zuverlässigkeitsfaktor 0,6 hinzufügt und den Zuverlässigkeitsfaktor R von "B" auf 0,4 aktualisiert, entsprechend der Gleichung (1), wobei:
  • 1/R = 1/0,8 + 1/0,8 (2)
  • (2)
  • Da "B" nun den kleinsten effektiven Zuverlässigkeitsfaktor aufweist, wird es zur ersten Auswahl in der Zeichentabelle, gefolgt von "A" und "C". Fachleute werden erkennen, daß die Zeichentabelle unter Verwendung alternativer Verfahren aktualisiert werden kann, die in den Umfang der vorliegenden Erfindung fallen.
  • Die aktualisierte Zeichentabelle wird anschließend von den Einrichtungen 908, 910 und 912 wie oben beschrieben verarbeitet. Wenn keiner der von der Einrichtung 908 aus der aktualisierten Zeichentabelle ausgewählten Zeichensätze die Prüfsummenanalyse besteht, kann eine weitere Referenzlinie 1026 ausgewählt werden und die Prozedur des Abschreitens, Aktualisierens und der Prüfsummenanalyse wiederholt werden.
  • In einer bevorzugten Ausführungsform ist das Prüfsummenzeichen in der Zeichentabelle durch nur ein alphanumerisches Zeichen der ersten Auswahl dargestellt. In einer alternativen bevorzugten Ausführungsform kann das Prüfsummenzeichen ein oder mehrere Auswahlen zusätzlich zur ersten Auswahl aufweisen. in solchen Fällen kann das Prüfsummenzeichen als ein beliebiges anderes Zeichen bei der Erzeugung der Zeichensätze für die Prüfsummenanalyse behandelt werden.
  • Entlangschreiten einer Referenzlinie zum Decodieren eines Strichcodesymbols
  • In Fig. 11 ist ein Prozeßablaufdiagramm des Schrittuntersystems 904 des Strichcodesymbol-Decodierungsuntersystems 114 zum Entlangschreiten einer ausgewählten Referenzlinie und zum Decodieren eines Strichcodesymbols gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gezeigt. Da die vom Erfassungssystem 100 zu detektierenden und zu decodierenden Strichcodesymbole bezüglich der Zeilen und Spalten der Pixel im Pixelbild beliebig orientiert sein können, sind die vom Decodierungsuntersystem 114 ausgewählten Referenzlinien typischerweise nicht auf die Pixelzeilen oder -spalten ausgerichtet.
  • Um den Informationsgehalt dieser Pixelbilder aufzubereiten, decodiert das Decodierungsuntersystem 114 die Strichcodesymbole, indem es längs einer Reihe von Suchschritten eine Subpixel-Interpolation durchführt. Jeder Suchschritt ist ein Abschnitt einer Pixelzeile oder -spalte, die am Schnittpunkt der Pixelzeile oder -spalte mit der ausgewählten Referenzlinie beginnt. Wenn die Referenzlinie bezüglich der Pixelzeilen des Pixelbildes in einem Winkelmaß von weniger als 450 angeordnet ist, sind die Suchschritte Abschnitte von Pixelzeilen. Andernfalls sind die Suchschritte Abschnitte von Pixelspalten.
  • In Fig. 12 ist eine graphische Darstellung des Pixelbildes 1200 gezeigt, das die Ruhezone 1204 und einen Abschnitt eines Strichcodesymbols 1202 enthält, das weder auf die Pixelzeilen noch -spalten des Pixelbildes 1200 ausgerichtet ist. Das Strichcodesymbol 1202 enthält Striche 1206 bis 1214 sowie Zwischenräume 1216 bis 1224. Fig. 12 zeigt ferner eine Referenzlinie 1226 und die Suchschritte 1228 bis 1242. Die Referenzlinie 1226 ist analog zu den Referenzimien 1018, 1024 und 1026 der Fig. 10.
  • In Fig. 13 ist eine graphische Darstellung der Pixelidentitätspegel der elf Pixel im Suchschritt 1228 des Pixelbildes 1200 gezeigt. Jedes Pixel längs des Suchschritts 1228 besitzt einen zugehörigen Intensitätspegel, der seine Helligkeit darstellt. Um die Erläuterung zu erleichtern, wird im Kontext des Beispiels der Fig. 12 und 13 das Schrittuntersystem 904 beschrieben.
  • Das Schrittuntersystem 904 der Fig. 11 beginnt mit der Einrichtung 1102, die den ersten Suchschritt und den Startpunkt für den ersten Suchschritt auswählt. Der erste Suchschritt ist vorzugsweise eine Zeile oder Spalte von Pixeln, die die Referenzlinie am Zustandsübergang zwischen einer Ruhezone und einem Start/Stopp-Zeichen des detektierten Strichcodesymbols schneidet. Der Startpunkt ist vorzugsweise das Pixel, das dem Schnittpunkt entspricht. In Fig. 10 kann der Punkt 1020 der Startpunkt des ersten Suchschrittes sein, wenn die Referenzlinie 1018 verwendet wird, um das Strichcodesymbol 1002 zu decodieren. In ähnlicher Weise kann in Fig. 12 der Punkt 1244 der Startpunkt des ersten Suchschritts 1228 sein, wenn die Referenzlinie 1226 verwendet wird, um das Strichcodesymbol 1202 zu decodieren. Der Suchschritt 1228 bildet einen Teil der Zeile von Pixeln, die die Referenzlinie 1226 im Punkt 1244 schneidet.
  • Nachdem die Einrichtung 1102 den Startpunkt des ersten Suchschritts ausgewählt hat, führt die Einrichtung 1104 längs des ersten Suchschritts eine Subpixel-Interpolation durch, um einen Signalenergiewert zu ermitteln, der die Breite des ersten Strichs des Strichcodesymbols darstellt. Im Beispiel der Fig. 12 führt die Einrichtung 1104 längs des Suchschritts 1228 eine Subpixel-Interpolation durch, um einen Signalenergiewert für den Strich 1206 des Strichcodesymbols 1202 zu ermitteln. Je höher der Signalenergiewert ist, desto breiter ist das Symbolelement. Die Subpixel-Interpolation wird in dieser Beschreibung später in Verbindung mit den Fig. 14 und 15 beschrieben.
  • Die Einrichtung 1106 setzt den aktuellen Suchschritt auf den ersten Suchschritt. Anschließend führt die Einrichtung 1108 eine Subpixel-Interpolation für ein weiteres Element längs des aktuellen Suchschrittes durch, wobei die Elemente von der Einrichtung 1108 in der Reihenfolge analysiert werden, in der sie im Strichcodesymbol erscheinen. Die Einrichtung 1110 ermittelt anschließend, ob eine Subpixel-Interpolation für das nächste Element längs des aktuellen Suchschrittes durchzuführen ist, oder ob ein neuer aktueller Suchschritt auszuwählen ist. Ein neuer aktueller Suchschritt wird ausgewählt, wenn das vorletzte analysierte Element breit genug ist, um dieses zu projizieren. Wenn z. B. das letzte analysierte Element eine Leerstelle ist, wird ein neuer aktueller Suchschritt ausgewählt, um den Strich zu analysieren, der dem Leerzeichen unmittelbar folgt, wenn der Strich, der dem Leerzeichen unmittelbar vorangeht, breit genug ist, um ihn zu projizieren.
  • Um dies zu ermitteln, vergleicht die Einrichtung 1110 den Signalenergiewert für das vorangegangene Symbolelement mit einer vierten Schwelle. Die vierte Schwelle ist vorzugsweise wenigstens gleich der zweifachen Breite des schmalsten Strichcodesymbolelements. Wenn die Einrichtung 1110 feststellt, daß der Signalenergiewert für das vorletzte analysierte Element größer ist als die vierte Schwelle, wählt anschließend die Einrichtung 1112 den Startpunkt für einen neuen aktuellen Suchschritt, indem sie von der Mitte des vorletzten analysierten Elements auf die Referenzlinie projiziert. Andernfalls wählt die Einrichtung 1114 den Startpunkt längs des aktuellen Suchschrittes als Mitte des vorletzten analysierten Elements.
  • Nachdem entweder von der Einrichtung 1112 oder 1114 der Startpunkt ausgewählt worden ist, ermittelt die Einrichtung 1116, ob das Entlangschreiten der Referenzlinie abgeschlossen ist, indem sie überprüft, ob die Ruhezone erreicht worden ist. Trifft dies zu, erzeugt das Zeichenbestimmungsuntersystem 1118 die alphanumerischen Zeichenauswahlen und die jedem Symbolzeichen des Strichcodesymbols zugeordneten Zuverlässigkeitsfaktoren. Zu diesem Zeitpunkt ist die Verarbeitung durch das Schrittuntersystem 904 abgeschlossen. Das Zeichenbestimmungsuntersystem 1118 wird in dieser Beschreibung später in Verbindung mit Fig. 16 beschrieben.
  • Tm Beispiel der Fig. 12 kann die Einrichtung 1110 feststellen, daß der Signalenergiewert für den Strich 1206 größer ist als die vierte Schwelle. Die Einrichtung 1112 kann anschließend den Startpunkt 1246 des Suchschritts 1230 als Startpunkt für den neuen aktuellen Suchschritt auswählen, indem sie vom Punkt 1248 des Suchschritts 1228 auf die Referenzlinie 1226 projiziert. Wenn z. B. die Strichcodesymbolelemente eine minimale Breite von 0,015 Zoll besitzen, kann die vierte Schwelle gleich 0,030 Zoll sein. Das Projizieren vom Suchschritt 1228 auf die Referenzlinie 1226 wird vorzugsweise senkrecht zur Referenzlinie 1226 bewerkstelligt. Wenn die Referenzlinie 1226 durch die Steigung k und den Achsenabschnitt n charakterisiert ist und der Mittelpunkt 1248 durch den Punkt (x&sub1;,y&sub1;) dargestellt wird, ist die Projektionslinie vom Mittelpunkt 1248 charakterisiert durch die Steigung k&sub1; und den Achsenabschnitt n&sub1;, wobei:
  • k&sub1; = -1/k (3)
  • und
  • n&sub1; = Yi - k&sub1;x&sub1; . (4)
  • Der Startpunkt 1246 kann durch den Punkt (x&sub2;,y&sub2;) dargestellt werden, wobei:
  • x&sub2; = n - n&sub1;/k&sub1; - k (5)
  • und
  • y&sub2; = k&sub1;x&sub2; + n&sub1; . (6)
  • Nachdem die Einrichtung 1116 festgestellt hat, daß die Ruhezone noch nicht erreicht worden ist, führt die Einrichtung 1108 eine Subpixel-Interpolation für den Schritt 1208 längs des Suchschrittes 1230 durch.
  • Andernfalls, wenn der Signalenergiewert für den Strich 1206 nicht größer ist als die vierte Schwelle, setzt die Einrichtung 1114 den Startpunkt für die Subpixel-Interpolation auf die Mitte des Striches 1206 längs des aktuellen Suchschrittes 1228. Nachdem die Einrichtung 1116 festgestellt hat, daß die Ruhezone noch nicht erreicht worden ist, berechnet die Einrichtung 1108 den Signalenergiewert für den Strich 1208 längs des aktuellen Suchschrittes 1228. Die Subpixel-Interpolation der nachfolgenden Symbolelemente wird längs des Suchschrittes 1228 fortgesetzt, bis das vorletzte analysierte Element ein Strich oder ein Zwischenraum mit ausreichender Breite ist, wobei in diesem Fall die Einrichtung 1112 von der Mitte dieses Elements auf die Referenzlinie 1226 projiziert, um den Startpunkt des neuen aktuellen Suchschrittes auszuwählen. Auf diese Weise ermittelt das Schrittuntersystem 904 die Signalenergiewerte für alle Symbolelemente des Strichcodesymbols 1202.
  • Subpixel-Interpolation der Strichcodesymbolelemente
  • In den Fig. 14 und 15 sind Prozeßablaufdiagramme der Subpixel-Interpolationsuntersysteme 1400 und 1500 der vorliegenden Erfindung zum Berechnen der Signalenergiewerte für Striche bzw. Zwischenräume gezeigt. Wenn das zu analysierende Strichcodesymbolelement ein Strich ist, implementiert die Einrichtung 1108 des Schrittuntersystems 904 ein Subpixel-Interpolationsuntersystem 1400, um einen Signalenergiewert für den Bereich von der Mitte des dem Strich unmittelbar vorausgehenden Zwischenraums bis zur Mitte des dem Strich unmittelbar folgenden Zwischenraums zu ermitteln. Wenn das zu analysierende Symbolelement ein Zwischenraum ist, implementiert in ähnlicher Weise die Einrichtung 1108 ein Untersystem 1500, um einen Signalenergiewert für den Bereich von der Mitte des dem Zwischenraum unmittelbar vorausgehenden Striches bis zur Mitte des dem Zwischenraum unmittelbar folgenden Striches zu ermitteln.
  • Wenn ein Strich analysiert werden soll, lokalisiert die Einrichtung 1402 des Subpixel-Interpolationsuntersystems 1400 eine erste Spitze, die der Mitte des dem zu analysierenden Strich unmittelbar vorausgehenden Zwischenraums entspricht. Wenn irgendein anderer Strich als der erste Strich eines Strichcodesymbols analysiert wird, stellt eine Spitze im allgemeinen ein Pixelintensitätspegelmaximum bezüglich der benachbarten Pixel dar. Wenn der erste Strich analysiert wird, ist die erste Spitze vorzugsweise ein helles Pixel neben dem Ende der Ruhezone, die am ersten Strich anliegt. Die Einrichtung 1404 lokalisiert anschließend eine zweite Spitze, die der Mitte des dem zu analysierenden Strich unmittelbar folgenden Zwischenraums entspricht. Die zwei Spitzen sind benachbarte kritische Punkte längs einer eindimensionalen Signalkurve, die einen Abschnitt des aktuellen Suchschrittes darstellt, der auf den zu analysierenden Strich zentriert ist.
  • Die Einrichtung 1406 berechnet anschließend die Fläche oberhalb der Graustufensignalkurve zwischen den zwei Spitzen durch numerisches Integrieren unter Verwendung der Pixelintensitätspegel. Diese Fläche ist der Signalenergiewert des analysierten Striches. Bei der Ausführung dieser Integrationsberechnung verwendet die Einrichtung 1406 vorzugsweise die maximalen Pixelintensitätspegel aus dem von der Einrichtung 102 des Erfassungssystems 100 der Fig. 1 erzeugten Histogramm als die obere Grenze für die Berechnung der Fläche oberhalb der Kurve. Im allgemeinen ist der Signalenergiewert b&sub1; für einen Strich gegeben durch:
  • bi = ( I max - Ipeak#1)/2 + Σ (Imax - Ip) + (Imax - Ipeak#2)/2, (7)
  • wobei Imax der maximale Pixelintensitätspegel des Histogramms ist, Ipeak#1 der Pixelintensitätspegel des der ersten Spitze entsprechenden Pixels ist, Ipeak#2 der Pixelintensitätspegel des der zweiten Spitze entsprechenden Pixels ist und die Pixelintensitätspegel derjenigen Pixel sind, die zwischen den ersten und zweiten Spitzen entlang des aktuellen Suchschrittes liegen.
  • Im Beispiel der Fig. 12 und 13 implementiert das Schrittuntersystem 904 ein Subpixel-Interpolationsuntersystem 1400 längs des Suchschrittes 1228, um den Signalenergiewert für den Strich 1206 zu ermitteln. Da der Strich 1206 der erste Strich im Strichcodesymbol 1202 ist, wählt die Einrichtung 1402 vorzugsweise als erste Spitze ein Pixel neben dem Ende der Ruhezone 1204 aus, wie z. B. das Pixel 2 in Fig. 13. Die Einrichtung 1404 lokalisiert anschließend die zweite Spitze, die sich in der Mitte des Zwischenraums 1216 befindet, der unmittelbar dem Strich 1206 folgt. Die Einrichtung 1404 kann das Pixel 7 in Fig. 13 als zweite Spitze auswählen. Die Einrichtung 1406 berechnet anschließend den Signalenergiewert für den Strich 1206 unter Verwendung der Gleichung (7). Es sei z. B. angenommen, daß das Histogramm für das Pixelbild, das das Strichcodesymbol 1202 enthält, anzeigt, daß der maximale Pixelintensitätspegel Imax gleich 240 ist. Der Signalenergiewert bi für den Strich 1206 von der Einrichtung 1406 ist dann gegeben durch:
  • bi = (240 - 230)/2 + (240 - 150) + (240 - 50) + +(240 - 60) + (240 - 100) + (240 - 190)/2 = 630 (8)
  • Wenn ein Zwischenraum analysiert werden soll, lokalisiert in ähnlicher Weise die Einrichtung 1502 des Subpixel- Interpolationsuntersystems 1500 ein erstes Tal, das der Mitte des dem zu analysierenden Zwischenraum unmittelbar vorangehenden Striches entspricht. Ein Tal stellt bezüglich der benachbarten Pixel im allgemeinen ein Pixelintensitätspegelminimum dar. Anschließend lokalisiert die Einrichtung 1504 ein zweites Tal, das der Mitte des dem zu analysierenden Zwischenraum unmittelbar folgenden Stiches entspricht. Die zwei Täler sind benachbarte kritische Punkte längs einer eindimensionalen Signalkurve, die einen Abschnitt des aktuellen Suchschritts darstellt, der auf den zu analysierenden Zwischenraum zentriert ist.
  • Die Einrichtung 1506 berechnet anschließend die Fläche unter der Graustufensignalkurve zwischen den zwei Tälern durch numerisches Integrieren unter Verwendung der Pixelintensitätspegel. Diese Fläche ist der Signalenergiewert des analysierten Zwischenraums Bei der Durchführung dieser Integrationsberechnung verwendet die Einrichtung 1506 vorzugsweise den minimalen Pixelintensitätspegel aus dem von der Einrichtung 112 des Erfassungssystems 100 der Fig. 1 erzeugten Histrogramm als untere Grenze für die Berechnung der Fläche unter der Kurve. Im allgemeinen ist der Signalenergiewert si für einen Zwischenraum gegeben durch:
  • si = (Ivalley#1 - Imin)/2 + Σ (Ip - Imin) + (Ivalley#2 - Imin)/2, (9)
  • wobei Imin der minimale Pixelintensitätspegel aus dem Histogramm ist, Ivalley#1 der Pixelintensitätspegel des dem ersten Tal entsprechenden Pixels ist, Ivalley#2 der Pixelintensitätspegel des dem zweiten Tal entsprechenden Pixels ist und die Pixelintensitätspegel derjenigen Pixel sind, die zwischen den ersten und zweiten Tälern längs des aktuellen Suchschrittes liegen.
  • Im Beispiel der Fig. 12 und 13 implementiert das Schrittuntersystem 904 ein Subpixel-Interpolationsuntersystem 1500 längs des Suchschrittes 1228, um den Signalenergiewert für den Zwischenraum 1216 zu ermitteln. Die Einrichtung 1502 lokalisiert das erste Tal, das sich in der Mitte des dem Zwischenraum 1216 unmittelbar vorausgehenden Striches 1206 befindet. Die Einrichtung 1502 kann das Pixel 4 in Fig. 13 als erstes Tal auswählen. Anschließend lokalisiert die Einrichtung 1504 das zweite Tal, das sich in der Mitte des dem Zwischenraum 1216 unmittelbar folgenden Striches 1208 befindet. Die Einrichtung 1504 kann das Pixel 9 in Fig. 13 als zweites Tal auswählen. Anschließend berechnet die Einrichtung 1506 den Signalenergiewert für den Zwischenraum 1216 unter Verwendung der Gleichung (9). Es sei z. B. angenommen, daß das Histogramm für das Pixelbild, das das Strichcodesymbol 1202 enthält, anzeigt, daß der minimale Pixelintensitätspegel Imin gleich so ist. Der Signalenergiewert si für den Zwischenraum 1216 von der Einrichtung 1506 ist dann gegeben durch:
  • si = (50 - 50)/2 + (60 - 50) + (100 - 50) + (190 - 50) + +(140 - 50) + (100 - 50)/2 = 315
  • Ermitteln der Zeichenauswahlen aus den Subpixel-Interpolationsergebnissen
  • Nachdem für alle Symbolelemente des detektierten Strichcodesymbols eine Subpixel-Interpolation durchgeführt worden ist, ermittelt das Zeichenbestimmungsuntersystem 1118 des Schrittuntersystems 904 die alphanumerischen Zeichenauswahlen für alle Symbolzeichen. Die Subpixel- Interpolation erzeugt einen Signalenergiewert für jeden Strich und jeden Zwischenraum des detektierten Strichcodesymbols. Die Kombinationen von Strichen und Zwischenräumen im Strichcodesymbol entsprechen den Symbolzeichen. Das Zeichenbestimmungsuntersystem 1118 verwendet die Signalenergiewerte, um für jedes Symbolzeichen ein oder mehrere Auswahlen von alphanumerischen Zeichen zu bestimmen. Das Untersystem 1118 berechnet ferner einen Zuverlässigkeitsfaktor für jede alphanumerische Zeichenauswahl. Diese Zeichenauswahlen und die Zuverlässigkeitsfaktoren werden anschließend vom Decodierungsuntersystem 114 verwendet, um die bei der obenbeschriebenen Prüfsummenanalyse verwendete Zeichentabelle zu erzeugen und zu aktualisieren.
  • Jeder Strichcodezeichensatz besitzt ein bestimmtes Format für die Codierung von alphanumerischen Zeichen in Strichen und Zwischenräumen. In dieser Beschreibung ist das Untersystem 1118 im Kontext der Decodierung der Strichcodesymbole des Symbolsatzes Code 128 beschrieben, obwohl Fachleute erkennen werden, daß die vorliegende Erfindung auch eine analoge Verarbeitung zur Decodierung eines beliebigen bekannten Symbolsatzes verwenden kann. Im Symbolsatz Code 128 wird jedes alphanumerische Zeichen durch ein Symbolzeichen mit drei Strichen und drei Zwischenräumen dargestellt. Die Breite jedes Symbolzeichens beträgt 11 Module, wobei jedes Symbolelement (Strich oder Zwischenraum) eine ganze Zahl von Modulen breit ist und die minimale Breite für ein Symbolelement ein Modul beträgt. Außerdem ist die Summe der Breiten der drei Striche immer eine gerade Anzahl von Modulen, während die Summe der drei Zwischenraumbreiten immer eine ungerade Anzahl von Modulen ist. Das Zeichenbestimmungsuntersystem 1118 erzeugt für jedes Symbolzeichen ein oder mehrere Auswahlen von alphanumerischen Zeichen aus drei Strichen und drei Zwischenräumen.
  • In Fig. 16 ist eine graphische Darstellung eines Strichcodesymbolzeichens 1600 gezeigt, das aus drei Strichen 1602, 1604 und 1606 und aus drei Zwischenräumen 1608, 1610 und 1612 besteht. Die Breiten der Symbolelemente des Symbolzeichens 1600 können durch die Signalenergiewerte b&sub1;, b&sub2;, b&sub3; für die drei Striche und s&sub1;, s&sub2;, s&sub3; für die drei Zwischenräume dargestellt werden. Diese Signalenergiewerte werden von der vom Decodierungsuntersystem 114 durchgeführten Subpixel-Interpolation erzeugt. Das Zeichenbestimmungsuntersystem 1118 ermittelt einen 1-Modul- Wert X äquivalent zu einem Modul für das Symbolzeichen 1600, wobei:
  • X = 1/11(b&sub1; + s&sub1; + b&sub2; + s&sub2; + b&sub3; + s&sub3;). (11)
  • Das Untersystem 1118 bildet anschließend aus den vom Decodierungsuntersystem 114 erzeugten Signalenergiewerten und dem 1-Modul-Wert X vier gemessene Breiten t&sub1;, t&sub2;, t&sub3;, t&sub4;, wobei:
  • &sub1; = 1/X (b&sub1; + s&sub1;)
  • &sub2; = 1/X (s&sub1; + b&sub2;)
  • &sub3; = 1/X (b&sub2; + s&sub2;)
  • &sub4; = 1/X (s&sub2; + b&sub3;)
  • Jede Breite t&sub1; entspricht der Breite längs des Symbolzeichens 1600 von einer Symbolelementkante zur nächsten Symbolelementkante desselben Typs. Zum Beispiel entspricht die Breite t&sub1; der Anzahl der Module von der vorderen Kante des Striches 1602 bis zur vorderen Kante des nächsten Striches - dem Strich 1604. In ähnlicher Weise entspricht die Breite t&sub2; der Anzahl der Module von der vorderen Kante des Zwischenraums 1608 bis zur vorderen Kante des nächsten Zwischenraums - dew Zwischenraum 1610. Da die Striche und Zwischenräume jeweils eine ganze Zahl von Modulen breit sind, sind die Breiten ti idealerweise ganze Zahlen von 2 bis 7. In der Praxis kann jedoch eine Störung Abweichungen von diesen Idealbreiten verursachen.
  • Das Untersystem 1118 vergleicht jede gemessene Breite ti mit den Idealbreiten, um eine oder mehrere Idealbreiten und Abweichungen von diesen Idealbreiten der gemessenen Breite zuzuweisen. Zum Beispiel kann eine Idealbreite 2, den gemessenen Breiten ti von 1,3 bis 2,7 zugewiesen werden. In ähnlicher Weise kann eine Idealbreite 3,0 den gemessenen Breiten ti von 2,3 bis 3,7 zugewiesen werden. Einige gemessene Breiten können mehr als einer Idealbreite zugewiesen werden, z. B. wird eine gemessene Breite 2,5 sowohl der Idealbreite 2,0 als auch der Idealbreite 3,0 zugewiesen. Fachleute werden erkennen, daß diese Bereiche empirisch ermittelt werden können, indem unterschiedliche Bereiche mit bekannten Strichcodesymbolen getestet werden.
  • Es sei angenommen, daß der Satz der gemessenen Breiten (t&sub1;, t&sub2;, t&sub3;, t&sub4;), der aus der Subpixel-Interpolation des Zeichensymbols 1600 der Fig. 16 abgeleitet worden ist, gleich (2,45, 5,2, 4,9, 2,9) ist. Das Untersystem 1118 kann den Idealsatz (2,0, 5,0, 5,0, 3,0) für diesen gemessenen Satz auswählen. In diesem Fall ist eine Distanzmessung, die die Abweichungen vom Ideal widerspiegelt, die Summe der absoluten Differenzen zwischen dem Idealsatz und dem gemessenen Satz, d. h. ( 2,45 - 2,0 + 5,2 - 5,0 + 4,9 - 5,0 + 2,9 - 3,0 ) bzw. 0,85. Dieses Distanzmaß kann vom Decodierungsuntersystem 114 als Zuverlässigkeitsfaktor für das alphanumerische Zeichen verwendet werden, das dem Idealsatz (2,0, 5,0, 5,0, 3,0) entspricht. Je näher der gemessene Satz dem Idealsatz kommt, desto kleiner ist das Distanzmaß oder der Zuverlässigkeitsfaktor und desto größer ist die Zuverlässigkeit, daß der gemessene Satz der Idealsatz ist. Wenn kein alphanumerisches Zeichen dem Idealsatz entspricht, wählt das Untersystem 1118 nicht diesen Idealsatz als mögliche Auswahl für das aktuelle Symbolzeichen aus.
  • Das Untersystem 1118 erzeugt alternative Auswahlen, wenn die gemessenen Breiten ti in die Bereiche mehrerer Idealbreiten fallen. Da die gemessene Breite t&sub1; im Zeichensymbol 1600 gleich 2,45 ist, fällt sie in die Bereiche sowohl für 2,0 als auch für 3,0. Somit kann die gemessene Breite t&sub1; statt einer 2,0 einer 3,0 entsprechen, wobei eine mögliche alternative Auswahl für den gemessenen Satz der Idealsatz (3,0, 5,0, 5,0, 3,0) ist. Der Zuverlässigkeitsfaktor für das diesem zweiten Idealsatz zugeordnete alphanumerische Zeichen beträgt 0,95. Da die vorangegangene Zeichenauswahl einen geringeren Zuverlässigkeitsfaktor als diese Zeichenauswahl besitzt, ist das vorangegangene Zeichen in der vom Decodierungsuntersystem 114 erzeugten Zeichentabelle die erste Auswahl. Andere Zeichen sind ebenfalls möglich, wobei jedoch angenommen wird, daß die anderen gemessenen Breiten ti in den Bereichen jeweils nur einer Idealbreite liegen, weshalb das Untersystem 1118 keine weiteren alternativen Auswahlen auswählt.
  • Das Untersystem 1118 decodiert alle Symbolzeichen in einem detektierten Code-128-Strichcodesymbol, indem es für jeden Satz von drei Strichen und drei Zwischenräumen, die einem Symbolzeichen entsprechen, eine ähnliche Analyse durchführt. Die resultierenden alphanumerischen Zeichenauswahlen und die zugehörigen Zuverlässigkeitsfaktoren werden von der Einrichtung 906 des Decodierungsuntersystems 114 verwendet, um die Zeichentabelle zu erzeugen und zu aktualisieren, die verwendet wird, um die Zeichensätze für die Prüfsummenanalyse zu erzeugen.
  • Decodierung von Strichcodesymbolen durch Steppen
  • In Fig. 17 ist ein Prozeßablaufdiagramm des Stepp-Untersystems 1700 zur Decodierung von Strichcodesymbolen durch Steppen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gezeigt. Das Stepp-Untersystem 1700 funktioniert im wesentlichen wie das Schrittuntersystem 904, mit der Ausnahme, daß das Stepp-Untersystem 1700 jeden Suchschritt verwendet, um eine Subpixel-Interpolation von zwei oder mehr Symbolelementen des detektierten Strichcodesymbols durchzuführen, und daß jeder Suchschritt ein oder mehrere Symbolelemente gemeinsam mit wenigstens einem anderen Suchschritt besitzt. Das heißt, es besteht eine Überlappung von Symbolelementen zwischen aufeinanderfolgenden Suchschritten. Stepp-Untersysteme 1700 ermitteln die Signalenergiewerte zum Zuweisen zu jedem Symbolelement durch Vergleichen der redundanten Signalenergiewerte, die für dieses Symbolelement aus zwei oder mehr verschiedenen Subpixel-Interpolationen entstehen können.
  • In einer bevorzugten Ausführungsform führt die Einrichtung 1702 eine Subpixel-Interpolation längs mehrerer Suchschritte durch, die ausgewählt werden können, indem auf eine Referenzlinie projiziert wird, ähnlich derjenigen, die vom Schrittuntersystem 904 durchgeführt wird. Jeder Suchschritt wird verwendet, um den Signalenergiewert von zwei oder mehr Symbolelementen zu bestimmen. Im Gegensatz zum Schrittuntersystem 904, das den nächsten Suchschritt dort beginnt, wo der vorangegangene Suchschritt beendet wurde, wiederholt das Stepp-Untersystem 1700 zweckmäßigerweise die Subpixel-Interpolation für die Symbolelemente, die vorher analysiert worden sind. Somit überlappen die Suchschritte des Stepp-Untersystems 1700, während diejenigen für das Schrittuntersystem 904 Ende an Ende aufeinanderfolgen.
  • Die Einrichtung 1704 vergleicht anschließend für jedes Symbolelement des Strichcodesymbols die redundanten Ergebnisse, um für dieses Symbolelement einen einzelnen Signalenergiewert auszuwählen. In einer bevorzugten Ausführungsform kann diese Auswahl durch Mittelung der redundanten Signalenergiewerte bewerkstelligt werden. In alternativen Ausführungsformen können andere Typen von statistischen Analysen verwendet werden, um für jedes Symbolelement einen einzelnen Signalenergiewert auszuwählen. Nachdem jedem Symbolelement ein Signalenergiewert zugewiesen worden ist, kann das Zeichenbestimmungsuntesystem 1118 der Fig. 11 Zeichenauswahlen für die Verwen dung durch das Decodierungsuntersystem 114 erzeugen, wie in dieser Beschreibung oben beschrieben worden ist.
  • In Fig. 16 ist eine graphische Darstellung des Pixelbildes 1800 gezeigt, das ein Strichcodesymbol 1802 enthält, welches weder auf die Pixelzeilen noch auf die Pixelspalten des Pixelbildes 1800 ausgerichtet ist. Das Strichcodesymbol 1802 enthält Striche 1806 bis 1822 und Zwischenräume 1824 bis 1838. Das Stepp-Untersystem 1700 kann das Strichcodesymbol 1802 decodieren, indem es die Referenzlinie 1804 entlangschreitet, um längs der Suchschritte 1840 bis 1864 eine Subpixel-Interpolation durchzuführen. Bei jedem Suchschritt erzeugt die Einrichtung 1702 Energiesignalwerte für ein oder mehrere Elemente des Strichcodesymbols 1802. Zum Beispiel kann die Einrichtung 1702 eine Subpixel-Interpolation längs des Suchschrittes 1840 durchführen, um Energiesignalwerte für den Strich 1806 und den Zwischenraum 1824 zu erzeugen. In ähnlicher Weise kann die Einrichtung 1702 entlang des Suchschrittes 1842 eine Subpixel-Interpolation durchführen, um Energiesignalwerte für die Striche 1806 und 1808 und den Zwischenraum 1824 zu erzeugen. Die Tabelle II enthält die Elemente des Strichcodesymbols 1802, die längs der Suchschritte 1840 bis 1864 charakterisiert werden können. TABELLE II
  • Jedes Element kann unter Verwendung ein oder mehrerer Suchschritte charakterisiert werden. Zum Beispiel kann der Strich 1808 unter Verwendung der Suchschritte 1842, 1844 und 1846 charakterisiert werden. Die Einrichtung 1704 kann die Symbolelemente verfolgen, indem sie jedem Element einen Versatzwert zuweist, der seinem Ort längs des Strichcodesymbols entspricht, wobei der Versatzwert auf dem Gesamtenergiesignalwert für die vorangegangenen Elemente beruht. Der Strich 1806 des Strichcodesymbols 1802 ist z. B. der erste Strich im Symbol und besitzt einen Versatz von 0. Wenn die Einrichtung 1702 einen Energiesignalwert äquivalent zu 9 Modulen für den Strich 1806 längs des Suchschrittes 1840 erzeugt, dann besitzt der Zwischenraum 1824 einen Versatz von 9. Die Tabelle III stellt die Versatzwerte und die Energiesignalwerte dar, die von der Einrichtung 1702 für die Suchschritte 1840 bis 1864 erzeugt werden können. Der Suchschritt 1844 beginnt mit dem Zwischenraum 1824 mit einem Versatz 8 auf der Grundlage der Energiesignalwerte 8 und 9 für den Strich 1806, die von der Vorrichtung 1702 längs der Suchschritte 1840 bzw. 1842 erzeugt worden sind. TABELLE III
  • Da die von der Einrichtung 1702 erzeugten Energiesignal werte für jedes Symbolelement längs unterschiedlicher Suchschritte unterschiedlich sein können, kann die Einrichtung 1704 die Energiesignalwerte für jedes Element mitteln, um einen mittleren Energiesignalwert für die Zuweisung zu diesem Element zu bestimmen, wie in Tabelle IV für das Beispiel der Fig. 18 gezeigt ist. In alternativen Ausführungsformen kann die Einrichtung 1704 einen Energiesignalwert zum Zuweisen zum jeweiligen Element unter Verwendung anderer Typen statistischer Analysen, einschließlich von Voting-Schemen bestimmen. TABELLE IV
  • Fachleute werden erkennen, daß die Aspekte der vorliegenden Erfindung in Verbindung mit Systemen genutzt werden können, die Strichcodesymbole unter Verwendung von Laserscannern detektieren und decodieren. Fachleute werden ferner erkennen, daß die vorliegende Erfindung nicht auf die Verarbeitung von Bildern beschränkt ist, die von CCD- Vorrichtungen erzeugt werden. Zum Beispiel kann die vorliegende Erfindung verwendet werden, um Bilder zu verarbeiten, die von Laserscannern erzeugt worden sind, die sich senkrecht zu einer Förderbandrichtung bewegen. Außerdem kann das Konzept der Zeichentabellen, die für jedes Symbolzeichen ein oder mehrere Auswahlen von alphanumerischen Zeichen enthalten, bei der Decodierung von Strichcodesymbolen mittels Systemen mit Laserscannern verwendet werden.
  • Wie vorher in Verbindung mit Fig. 1 beschrieben, erzeugt in einer bevorzugten Ausführungsform die Einrichtung 102 des Erfassungssystems 100 ein Histogramm des gesamten Eingangspixelbildes. Das Histogramm wird anschließend verwendet, um Schwellen für die Erfassung von Zustandsübergängen zwischen Strichcodesymbol-Ruhezonen und Start/Stopp-Zeichen auszuwählen. Das Histogramm wird ferner verwendet, um minimale und maximale Pixelintensitätpegel auszuwählen, die bei der Subpixel-Interpolation verwendet werden, wie vorher in Verbindung mit den Fig. 14 und 15 beschrieben worden ist. In einer alternativen bevorzugten Ausführungsform führt das Erfassungssystem 100 eine adaptive Schwellenbewertung durch, bei der der dynamische Bereich der Pixelintensitätspegel für jeden Teil des Bildes separat bestimmt wird. Bei der adaptiven Schwellenbewertung können die Schwellen angepaßt werden, während das Bild abgetastet oder durchsucht wird. In dieser bevorzugten Ausführungsform kann das Erfassungssystem 100 Bilder verarbeiten, deren dynamische Bereiche über die Bildflächen z. B. aufgrund von ungleichmäßiger Beleuchtung variieren.
  • Es ist ferner klar, daß von Fachleuten verschiedene Anderungen von Einzelheiten, Materialien und Anordnungen der Bauteile, die beschrieben und dargestellt worden sind, um die Eigenart dieser Erfindung zu erläutern, vorgenommen werden können, ohne vom Prinzip und vom Umfang der Erfindung abzuweichen, wie sie in den folgenden Ausdrücken dargelegt ist.

Claims (12)

1. Verfahren zum Auffinden einer Ecke eines Artefakts in einem zweidimensionalen Pixelbild (500), mit den Schritten:
a) Auswählen (604-612) einer Folge von Anfangspixeln, wobei die Folge mit einem ursprünglichen Anfangspixel (224) beginnt, dem mehrere nächste Anfangspixel folgen, wobei jedes nächste Anfangspixel gemäß dem vorhergehenden Anfangspixel in der Folge ausgewählt wird und wobei das ursprüngliche Anfangspixel und das oder die nächsten Anfangspixel Punkten im Pixelbild an der Grenze des Artefakts entsprechen;
b) Erzeugen (616, 618, 620) eines Referenzvektors auf der Grundlage der Differenz zwischen dem ursprünglichen Anfangspixel und einem der nächsten Anfangspixel;
c) Erzeugen (616) eines momentanen Vektors für jedes der ersten n nächsten Anfangspixel in der Folge, wobei n eine ganze Zahl größer oder gleich 1 ist, wobei der momentane Vektor auf der Differenz zwischen einem entsprechenden der ersten n nächsten Anfangspixel in der Folge und einem folgenden nächsten Anfangspixel in der Folge basiert;
d) Vergleichen (622) des Referenzvektors mit jedem der momentanen Vektoren;
e) Auswählen (624, 626) einer Ecke entsprechend dem Vergleich.
2. Verfahren nach Anspruch 1, bei dem der Bezugsvektor ein Vektor vom ursprünglichen Anfangspixel zum j-ten folgenden Anfangspixel in der Folge ist, und der momentane Vektor ist ein Vektor vom nächsten Anfangspixel zum j- ten Anfangspixel nach dem nächsten Anfangspixel in der Folge, wobei j eine ganze Zahl größer gleich 1 ist.
3. Verfahren nach Anspruch 1, bei dem der Schritt a) den Schritt des Bestimmens (710) der Ahnlichkeit zweier benachbarter Pixel angrenzend an jedes Anfangspixel aufweist, wobei zwei Pixel ähnlich sind, wenn ihre Intensitätspegel beide kleiner gleich einem Schwellenwert sind oder wenn sie beide größer als der Schwellenwert sind.
4. Verfahren nach Anspruch 1, in dem der Schritt d) einen Schritt zur Bestimmung des Betrags der Vektordifferenz zwischen dem Referenzvektor und dem momentanen Vektor aufweist, wobei Schritt e) den Schritt des Vergleichens des Betrags mit einem Schwellenbetrag aufweist.
5. Verfahren nach Anspruch 1, bei dem der Schritt d) ein Schritt des Bestimmens des Betrags des Winkels zwischen dem Referenzvektor und dem momentanen Vektor aufweist, und wobei der Schritt e) den Schritt des Vergleichens des Betrags mit einem Schwellenbetrag aufweist.
6. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß das Artefakt ein Strichcodesymbol ist, das einen äußeren Strich als Grenze hat.
7. Vorrichtung zum Auffinden einer Ecke eines Artefakts in einem zweidimensionalen Pixelbild (500) mit:
a) einer Anfangspixelauswahleinrichtung (604-612) zum Auswählen einer Folge von Anfangspixeln, wobei die Folge mit einem ursprünglichen Anfangspixel (224) beginnt, das von einem oder mehreren nächsten Anfangspixeln gefolgt wird, wobei jedes nächste Anfangspixel entsprechend dem vorherigen Anfangspixel in der Folge ausgewählt wird und wobei das ursprüngliche Anfangspixel und das oder die mehreren nächsten Anfangspixel Punkten im Pixelbild an der Grenze des Artefakts entsprechen;
b) eine erste vektorerzeugungseinrichtung (616, 618, 620) zum Erzeugen eines Referenzvektors auf der Grundlage der Differenz zwischen dem ursprünglichen Anfangspixel und einem der nächsten Anfangspixel;
c) einer zweiten Vektorerzeugungseinrichtung (616) zum Erzeugen eines momentanen Vektors für jedes der ersten n nächsten Anfangspixel in der Folge, wobei n eine ganze Zahl größer gleich 1 ist, und wobei der momentane Vektor auf dem Unterschied zwischen dem entsprechenden der ersten n nächsten Anfangspixel in der Folge und einem folgenden nächsten Anfangspixel in der Folge basiert;
d) einer Vergleichseinrichtung (622) zum Vergleichen des Referenzvektors mit jedem der momentanen Vektoren;
e) eine Eckenauswahleinrichtung (624, 626) zum Auswählen einer Ecke entsprechend dem Vergleich.
8. Vorrichtung nach Anspruch 7, bei der der Referenzvektor ein Vektor ist vom ursprünglichen Anfangspixel zum j-ten folgenden Anfangspixel in der Folge, und wobei der momentane Vektor ein Vektor ist vom nächsten Anfangspixel zum j-ten Anfangspixel nach dem nächsten Anfangspixel in der Folge, wobei j eine ganze Zahl größer gleich 1 ist.
9. Vorrichtung nach Anspruch 7, bei der die Anfangspixelauswahleinrichtung die Ähnlichkeit zweier benachbarter Pixel bei dem ursprünglichen Anfangspixel bestimmt (710), wobei zwei Pixel ähnlich sind, wenn ihre Intensitätspegel beide kleiner gleich einem Schwellenwert oder beide größer als der Schwellenwert sind.
10. Vorrichtung nach Anspruch 7, bei der die Vergleichseinrichtung (622) den Betrag der Vektordifferenz zwischen dem Referenzvektor und dem momentanen Vektor bestimmt und bei der die Eckenauswahleinrichtung (624, 626) den Betrag mit einem Schwellenbetrag vergleicht.
11. Vorrichtung nach Anspruch 7, bei der die Vergleichseinrichtung (622) den Betrag des Winkels zwischen dem Referenzvektor und dem momentanen Vektor bestimmt und bei der die Eckenauswahleinrichtung (624, 626) den Betrag mit einem Schwellenbetrag vergleicht.
12. Vorrichtung nach einem der Ansprüche 7 bis 11, dadurch gekennzeichnet, daß das Artefakt ein Strichcodesymbol ist, das einen äußeren Strich als Grenze hat.
DE69310049T 1992-08-10 1993-07-19 Verfahren und Vorrichtung zum Auffinden einer Ecke einer Struktur in zweidimensionalen Bildern Expired - Lifetime DE69310049T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/927,909 US5418862A (en) 1992-08-10 1992-08-10 Method and apparatus for detecting artifact corners in two-dimensional images

Publications (2)

Publication Number Publication Date
DE69310049D1 DE69310049D1 (de) 1997-05-28
DE69310049T2 true DE69310049T2 (de) 1997-07-31

Family

ID=25455440

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69310049T Expired - Lifetime DE69310049T2 (de) 1992-08-10 1993-07-19 Verfahren und Vorrichtung zum Auffinden einer Ecke einer Struktur in zweidimensionalen Bildern

Country Status (7)

Country Link
US (1) US5418862A (de)
EP (1) EP0582858B1 (de)
AT (1) ATE152267T1 (de)
DE (1) DE69310049T2 (de)
DK (1) DK0582858T3 (de)
ES (1) ES2105013T3 (de)
GR (1) GR3023602T3 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5965863A (en) * 1994-03-04 1999-10-12 Welch Allyn, Inc. Optical reader system comprising local host processor and optical reader
US5773806A (en) * 1995-07-20 1998-06-30 Welch Allyn, Inc. Method and apparatus for capturing a decodable representation of a 2D bar code symbol using a hand-held reader having a 1D image sensor
US7387253B1 (en) * 1996-09-03 2008-06-17 Hand Held Products, Inc. Optical reader system comprising local host processor and optical reader
US5438188A (en) 1994-04-01 1995-08-01 United Parcel Service Of America, Inc. Method and apparatus for decoding bar code images using information from previous scan lines
US5412196A (en) * 1994-04-01 1995-05-02 United Parcel Service Of America, Inc. Method and apparatus for decoding bar code images using multi-order feature vectors
AU1981195A (en) * 1994-09-22 1996-04-09 United Parcel Service Of America, Inc. Method and apparatus for detecting and adaptively decoding bar code symbols in continuous images
US5581635A (en) * 1995-07-25 1996-12-03 United Parcel Service Of America, Inc. Method and system for fast rotation of run-length encoded images
US6064763A (en) * 1996-07-26 2000-05-16 Intermec Ip Corporation Time-efficient method of analyzing imaged input data to locate two-dimensional machine-readable symbols or other linear images therein
US20040004128A1 (en) * 1996-09-03 2004-01-08 Hand Held Products, Inc. Optical reader system comprising digital conversion circuit
JP3635829B2 (ja) * 1996-12-10 2005-04-06 松下電器産業株式会社 バーコード読み取り装置
US7304670B1 (en) 1997-03-28 2007-12-04 Hand Held Products, Inc. Method and apparatus for compensating for fixed pattern noise in an imaging system
CA2288758C (en) * 1997-05-05 2007-07-17 Alexander R. Roustaei Optical scanner and image reader for reading images and decoding optical information including one and two dimensional symbologies at variable depth of field
US6128414A (en) * 1997-09-29 2000-10-03 Intermec Ip Corporation Non-linear image processing and automatic discriminating method and apparatus for images such as images of machine-readable symbols
AU744206B2 (en) * 1998-09-25 2002-02-21 Canon Kabushiki Kaisha Method and apparatus for detecting corner pixels of one or more sub-images within an image
JP3748172B2 (ja) * 1998-12-09 2006-02-22 富士通株式会社 画像処理装置
JP4176230B2 (ja) * 1999-03-19 2008-11-05 株式会社ルネサステクノロジ 座標位置制御システム、座標位置制御方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
FR2803067A1 (fr) * 1999-12-23 2001-06-29 Intermec Scanner Technology Ct Dispositif optoelectronique et procede d'acquisition de codes a l'aide d'un capteur bidimensionnel de dimension utile optimisee
US8682077B1 (en) 2000-11-28 2014-03-25 Hand Held Products, Inc. Method for omnidirectional processing of 2D images including recognizable characters
US7203361B1 (en) 2001-03-16 2007-04-10 Hand Held Products, Inc. Adaptive digitizer for optical reader
US6895116B2 (en) * 2001-06-07 2005-05-17 Hewlett-Packard Development Company, L.P. Automatically extracting graphical bar codes
US7331523B2 (en) 2001-07-13 2008-02-19 Hand Held Products, Inc. Adaptive optical image reader
US7181066B1 (en) 2002-12-26 2007-02-20 Cognex Technology And Investment Corporation Method for locating bar codes and symbols in an image
US20040134988A1 (en) * 2003-01-09 2004-07-15 Hand Held Products, Inc. Analog-to-digital converter with automatic range and sensitivity adjustment
US20060027657A1 (en) 2004-08-04 2006-02-09 Laurens Ninnink Method and apparatus for high resolution decoding of encoded symbols
US7175090B2 (en) 2004-08-30 2007-02-13 Cognex Technology And Investment Corporation Methods and apparatus for reading bar code identifications
US20060043189A1 (en) * 2004-08-31 2006-03-02 Sachin Agrawal Method and apparatus for determining the vertices of a character in a two-dimensional barcode symbol
US7963448B2 (en) * 2004-12-22 2011-06-21 Cognex Technology And Investment Corporation Hand held machine vision method and apparatus
US9552506B1 (en) 2004-12-23 2017-01-24 Cognex Technology And Investment Llc Method and apparatus for industrial identification mark verification
JP4961564B2 (ja) * 2005-07-25 2012-06-27 庸一郎 伊藤 標識認証システム及び標識認証方法
US20070071324A1 (en) * 2005-09-27 2007-03-29 Lexmark International, Inc. Method for determining corners of an object represented by image data
US8108176B2 (en) * 2006-06-29 2012-01-31 Cognex Corporation Method and apparatus for verifying two dimensional mark quality
US8169478B2 (en) * 2006-12-14 2012-05-01 Cognex Corporation Method and apparatus for calibrating a mark verifier
US7852519B2 (en) 2007-02-05 2010-12-14 Hand Held Products, Inc. Dual-tasking decoder for improved symbol reading
US9734376B2 (en) 2007-11-13 2017-08-15 Cognex Corporation System and method for reading patterns using multiple image frames
US8628015B2 (en) 2008-10-31 2014-01-14 Hand Held Products, Inc. Indicia reading terminal including frame quality evaluation processing
TWI442329B (zh) * 2009-08-10 2014-06-21 Primax Electronics Ltd 在輸入影像中取出具有文字特徵之影像的影像處理方法及其相關裝置
US8587595B2 (en) 2009-10-01 2013-11-19 Hand Held Products, Inc. Low power multi-core decoder system and method
US10140496B2 (en) * 2014-12-02 2018-11-27 Symbol Technologies, Llc System for and method of stitching barcode fragments of a barcode symbol to be read in an imaging-based presentation workstation
JP2019061527A (ja) * 2017-09-27 2019-04-18 富士通株式会社 データ判定装置、ライブラリ装置、及びデータ判定プログラム
JP7172351B2 (ja) * 2018-09-21 2022-11-16 富士フイルムビジネスイノベーション株式会社 文字列認識装置及び文字列認識プログラム
EP3995987A1 (de) * 2020-11-04 2022-05-11 Leuze electronic GmbH + Co. KG Sensoranordnung

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4608489A (en) * 1984-06-04 1986-08-26 International Business Machines Corporation Method and apparatus for dynamically segmenting a bar code
JPH077446B2 (ja) * 1986-11-12 1995-01-30 松下電器産業株式会社 部品認識方法
EP0310921B1 (de) * 1987-09-28 1996-01-10 Sumitomo Electric Industries Limited Kombinieren von gelesenen Strichcode-Daten
FR2631476B1 (fr) * 1988-05-10 1992-01-03 Bertin & Cie Procede et dispositif de lecture d'un code barres sur un support sensiblement immobile
JPH07101437B2 (ja) * 1988-06-21 1995-11-01 アルプス電気株式会社 符号読取装置
US4988852A (en) * 1988-07-05 1991-01-29 Teknekron Transportation Systems, Inc. Bar code reader
US4873426A (en) * 1988-08-03 1989-10-10 Image Business Systems Corporation Technique for reading bar codes
JPH02141889A (ja) * 1988-11-22 1990-05-31 Eastman Kodatsuku Japan Kk バーコード読取方法
US4948955A (en) * 1988-12-22 1990-08-14 The Boeing Company Barcode location determination
EP0375805B1 (de) * 1988-12-30 1995-05-24 Yozan Inc. Vektorisationsverfahren
US4958064A (en) * 1989-01-30 1990-09-18 Image Recognition Equipment Corporation Bar code locator for video scanner/reader system
US5073954A (en) * 1989-02-28 1991-12-17 Electrocom Automation, Inc. Bar code location and recognition processing system
US5081689A (en) * 1989-03-27 1992-01-14 Hughes Aircraft Company Apparatus and method for extracting edges and lines
US5155343A (en) * 1990-03-28 1992-10-13 Chandler Donald G Omnidirectional bar code reader with method and apparatus for detecting and scanning a bar code symbol
DE69126811T2 (de) * 1990-03-28 1998-02-19 Omniplanar Inc Streifenkodeleser für alle Richtungen
DE69126231T2 (de) * 1990-03-28 1997-09-11 Omniplanar Inc Leser für Strichkodierungen
US4992650A (en) * 1990-03-29 1991-02-12 International Business Machines Corporation Method and apparatus for barcode recognition in a digital image
US5050222A (en) * 1990-05-21 1991-09-17 Eastman Kodak Company Polygon-based technique for the automatic classification of text and graphics components from digitized paper-based forms
US5241166A (en) * 1990-07-02 1993-08-31 Chandler Donald G Low resolution target acquisition
US5120940A (en) * 1990-08-10 1992-06-09 The Boeing Company Detection of barcodes in binary images with arbitrary orientation
US5124537A (en) * 1990-10-29 1992-06-23 Omniplanar, Inc. Omnidirectional bar code reader using virtual scan of video raster scan memory
US5173946A (en) * 1991-05-31 1992-12-22 Texas Instruments Incorporated Corner-based image matching

Also Published As

Publication number Publication date
DE69310049D1 (de) 1997-05-28
ATE152267T1 (de) 1997-05-15
EP0582858A1 (de) 1994-02-16
EP0582858B1 (de) 1997-04-23
ES2105013T3 (es) 1997-10-16
DK0582858T3 (da) 1997-09-01
US5418862A (en) 1995-05-23
GR3023602T3 (en) 1997-08-29

Similar Documents

Publication Publication Date Title
DE69310049T2 (de) Verfahren und Vorrichtung zum Auffinden einer Ecke einer Struktur in zweidimensionalen Bildern
DE69332771T2 (de) Verfahren und Vorrichtung zum Dekodieren von strichkodierten Symbolen
DE69728482T2 (de) Zweidimensionaler Codeleser
DE69433492T2 (de) Verfahren und Vorrichtung zum Dekodieren von Streifencodes durch unabhängige Analyse von Streifen und Zwischenräumen
DE10036110B4 (de) Verfahren zur Bestimmung des Schrägwinkels eines zweidimensionalen Barcodes
DE19814075B4 (de) Verfahren zum Abtasten und Erkennen mehrerer Fotografien und zum Beseitigen von Randfehlern
DE3633743C2 (de)
DE69835358T2 (de) Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes
DE69028899T2 (de) Verfahren und Vorrichtung zum Dekodieren von Strichkodes mit Mehrfachabtastung
EP1260933B1 (de) Verfahren zum Erfassen von zweidimensionalen Codes
DE3854885T2 (de) Kombinieren von gelesenen Strichcode-Daten
EP2417561B1 (de) Zweidimensionaler symbolcode und verfahren zum lesen des symbolcodes
DE69926205T2 (de) Artefaktentfernungstechnik für schiefenkorrigierte bilder
DE69027757T2 (de) Verfahren zur Dekodierung von strichkodierten Symbolen aus Teilabtastungen
EP3428834B1 (de) Optoelektronischer codeleser und verfahren zum lesen von optischen codes
DE69126231T2 (de) Leser für Strichkodierungen
DE69126811T2 (de) Streifenkodeleser für alle Richtungen
DE69629930T2 (de) Verfahren zum Festlegen eines auf einem Objekt angebrachten optischen Codes
DE3923449A1 (de) Verfahren zum bestimmen von kanten in bildern
DE19924144C2 (de) Schiefekorrekturapparat und -verfahren
DE19960555A1 (de) Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes
DE19722439A1 (de) Verfahren und Vorrichtung zur Auffindung und Dekodierung maschinenlesbarer Symbole einschließlich Datenmatrixsymbolen
DE4005492A1 (de) Bildcodierverfahren
DE69814105T2 (de) Verfahren zur automatischen Regulierung der Eigenschaften eines optischen Codelesesystems
DE60300476T2 (de) System zum Erkennen eines Barcodes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition