DE69324079T2 - Verfahren und Vorrichtung zur Erfassung von Strichkoden - Google Patents
Verfahren und Vorrichtung zur Erfassung von StrichkodenInfo
- Publication number
- DE69324079T2 DE69324079T2 DE69324079T DE69324079T DE69324079T2 DE 69324079 T2 DE69324079 T2 DE 69324079T2 DE 69324079 T DE69324079 T DE 69324079T DE 69324079 T DE69324079 T DE 69324079T DE 69324079 T2 DE69324079 T2 DE 69324079T2
- Authority
- DE
- Germany
- Prior art keywords
- symbol
- bar code
- pixel
- character
- 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
Links
- 238000000034 method Methods 0.000 title claims description 40
- 238000012512 characterization method Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 61
- 238000001514 detection method Methods 0.000 description 37
- 230000004807 localization Effects 0.000 description 36
- 239000013598 vector Substances 0.000 description 31
- 238000010586 diagram Methods 0.000 description 19
- 238000012360 testing method Methods 0.000 description 14
- 230000007704 transition Effects 0.000 description 14
- 230000000295 complement effect Effects 0.000 description 9
- 240000004282 Grewia occidentalis Species 0.000 description 8
- 238000011835 investigation Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 101100311330 Schizosaccharomyces pombe (strain 972 / ATCC 24843) uap56 gene Proteins 0.000 description 3
- 238000007619 statistical method Methods 0.000 description 3
- 101150018444 sub2 gene Proteins 0.000 description 3
- 230000000153 supplemental effect Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10544—Methods 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/10821—Methods 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/1093—Methods 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, after transfer of the image of the data-field to an intermediate store, e.g. storage with cathode ray tube
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1456—Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1465—Methods for optical code recognition the method including quality enhancement steps using several successive scans of the optical code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1469—Methods for optical code recognition the method including quality enhancement steps using sub-pixel interpolation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1486—Setting the threshold-width for bar codes to be decoded
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1491—Methods 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)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Character Input (AREA)
- Discharge Of Articles From Conveyors (AREA)
- Image Processing (AREA)
- Error Detection And Correction (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Radar Systems Or Details Thereof (AREA)
- Cash Registers Or Receiving Machines (AREA)
- Inorganic Compounds Of Heavy Metals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Analysis (AREA)
- Communication Control (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf ein Verfahren und auf eine Vorrichtung zum Erfassen eines Bar-Code- Symbols gemäß den Oberbegriffen der unabhängigen Ansprüche. Derartige Verfahren und Vorrichtungen sind aus EP-A-0 350 933 bekannt.
- Bar-Codes bilden den für die automatische Identifizierung am weitesten verbreiteten Code. Herkömmliche Bar-Code- Symbol-Leser sind Laser-Abtaster, die zum Lesen zweidimensionaler Codes ungeeignet sind. Außerdem können sie eine häufige Wartung und ein häufiges Einstellen erfordern. Zweidimensionale Codes können leichter durch Systeme mit Kameras mit linearen CD-Matrizen gelesen werden. Solche Kameras, die wenig Wartung oder Einstellen erfordern, erzeugen zweidimensionale Graustufen-Pixelbilder det Code-Symbole. Die vorliegende Erfindung erfaßt Bar-Code-Symbole in durch CCD-Kamerasysteme erzeugten Pixelbildern, so daß der gleiche Code-Symbol-Leser sowohl zum Lesen von Bar-Codes als auch von zweidimensionalen Codes verwendet werden kann.
- EP-A-0 350 933 offenbart eine Bildsignal-Verarbeitungsvorrichtung für ein Bar-Code-Bildsignal. Die Vorrichtung empfängt Eingangsdaten, die ein Bild darstellen, das einen oder mehrere Bar-Code-Bereiche enthält. Die Eingangsdaten werden in Zweiniveauwerte umgesetzt, die verarbeitet werden, um ein Bild zu erhalten, in dem ein Gerüst-Mittelabschnitt des Bar-Code-Bereichs als ein vollständig schwarzer Bereich erscheint. Auf der Grundlage dieses Gerüstbereichs werden eine Mittelposition und der Anstieg einer Mittelachse des Bar-Code-Bereichs berechnet, wobei dann die der Mittelachse entsprechenden Datenwerte im Bildspeicher zum Lesen der Daten ausgelesen werden.
- Es ist die Aufgabe der Erfindung, ein Verfahren und eine Vorrichtung zum Erfassen eines Bar-Code-Symbols in einem Pixelbild zu schaffen.
- Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Die abhängigen Ansprüche sind auf zweckmäßige Ausführungen der Erfindung gerichtet.
- Die vorliegende Erfindung ist ein System zum Erfassen eines Bar-Code-Symbols in einem empfangenen zweidimensionalem Bild, wobei das Symbol kein Vorabwissen betreffend die Ausrichtung des Symbols im Bild hat. Das System tastet das Bild in einer Dimension ab, um eine potentielle Ruhezone für das Symbol zu lokalisieren, und durchsucht das Bild in einer Dimension, um ein Start/Stopp- Zeichen des Symbols zu identifizieren, das der potentiellen Ruhezone folgt oder ihr vorausgeht, um dadurch das Bar-Code-Symbol zu erfassen.
- Fig. 1 ist ein Prozeßablaufplan des Erfassungssystems zum Erfassen von Bar-Code-Symbolen gemäß einer zweckmäßigen Ausführung der vorliegenden Erfindung;
- Fig. 2 ist eine graphische Darstellung eines Pixelbildes, das ein Bar-Code-Symbol enthält, das in bezug auf die Zeilen und Spalten der Pixel in dem Pixelbild unter einem Winkel von 45º ausgerichtet ist;
- Fig. 3 ist ein Prozeßablaufplan eines Start/Stopp- Zeichen-Identifizierungsteilsystems des Erfassungssytems nach Fig. 1 zum Identifizieren von Bar-Code-Symbol- Start/Stopp-Zeichen;
- Fig. 4 ist ein Prozeßablaufplan eines Vier-Ecken-Lokalisierungsteilsystems des Erfassungssystems nach Fig. 1 zum Lokalisieren der vier Ecken eines Bar-Code-Symbols;
- Fig. 5 ist eine graphische Darstellung eines Pixelteilbildes des Pixelbildes nach Fig. 2;
- Fig. 6 ist ein Prozeßablaufplan eines Zwei-Ecken-Lokalisierungsteilsystems zum Lokalisieren zweier Ecken eines Bar-Code-Symbols;
- Fig. 7 ist ein Prozeßablaufplan für ein Keimpixelauswahl- Teilsystem des Zwei-Ecken-Lokalisierungsteilsystems nach Fig. 6 zum Auswählen eines nächsten Keimpixels von einem momentanen Keimpixel;
- Fig. 8 ist eine Tabelle, die für das Teilbild nach Fig. 5 die ersten zwölf Verarbeitungszyklen des Zwei-Ecken- Lokalisierungsteilsystems nach Fig. 6 darstellt;
- Fig. 9 ist ein Prozeßablaufplan eines Bar-Code-Symbol- Decodierteilsystems des Erfassungssystems nach Fig. 1 zum Decodieren eines Bar-Code-Symbols;
- Fig. 10 ist eine graphische Darstellung eines Pixelbildes, das ein verschlechtertes Bar-Code-Symbol enthält;
- Fig. 11 ist ein Prozeßablaufplan eines Schritt-Teilsystems des Bar-Code-Symbol-Decodierteilsystems nach Fig. 9 zum Abschreiten längs einer Referenzlinie und zum Decodieren eines Bar-Code-Symbols;
- Fig. 12 ist eine graphische Darstellung eines Pixelbildes, das einen weder auf die Pixelzeilen noch auf die Pixelspalten des Pixelbildes ausgerichteten Abschnitt eines Bar-Code-Symbols enthält;
- Fig. 13 ist eine graphische Darstellung der Pixelstärkeniveaus von 11 Pixeln in einem Suchschritt des Pixelbildes nach Fig. 12;
- Fig. 14 ist ein Prozeßablaufplan eines Unterpixelinterpolations-Teilsystems zum Berechnen der Signalenergiewerte für die Bar-Code-Symbol-Striche;
- Fig. 15 ist ein Prozeßablaufplan eines Unterpixelinterpolations-Teilsystems zum Berechnen der Signalenergiewerte für die Bar-Code-Symbol-Zwischenräume;
- Fig. 16 ist eine graphische Darstellung eines aus drei Strichen und aus drei Zwischenräumen bestehenden Bar- Code-Symbol-Zeichens;
- Fig. 17 ist ein Prozeßablaufplan eines Heft-Teilsystems zum Decodieren von Bar-Code-Symbolen durch Heften; und
- Fig. 18 ist eine graphische Darstellung eines Pixelbildes, das ein weder auf die Pixelzeilen noch auf die Pixelspalten des Pixelbildes ausgerichtetes Bar-Code- Symbol enthält.
- Die vorliegende Erfindung umfaßt ein System zum Erfassen von Bar-Code-Symbolen. In einer zweckmäßigen Ausführung sind die Bar-Code-Symbole in durch eine Ladungsspeicherbaustein-Matrix-Kamera (CCD-Matrix-Kamera) erzeugten zweidimensionalen Graustufen-Pixelbildsignalen enthalten. Jedes Pixelbild kann eines oder mehrere zufällig angeordnete und ausgerichtete Bar-Code-Symbole enthalten. Insbesondere ist es möglich, daß die Striche in den Bar-Code- Symbolen weder auf die Zeilen noch auf die Spalten der Pixel in den Pixelbildern ausgerichtet sind. Das Erfassungs- und Decodiersystem der vorliegenden Erfindung erfordert kein Vorabwissen betreffend die Ausrichtungen und Positionen der Bar-Code-Symbole in den Pixelbildern. Das heißt, das System kann die Bar-Code-Symbole in den Pixelbildern dadurch verarbeiten, daß es die Pixelbilder ohne irgendeine bestehende Kenntnis über die Ausrichtungen und Positionen dieser Symbole in diesen Pixelbildern selbst erfaßt.
- In einer zweckmäßigen Ausführung der vorliegenden Erfindung wird ein Pixelbild längs aufeinanderfolgender ausgewählter Abtastzeilen mit einer niedrigen Auflösung nach einer Ruhezone eines Bar-Code-Symbols abgetastet. Jede aufeinanderfolgende Abtastlinie wird zweckmäßig gemäß einer binären Suchfolge so ausgewählt, daß das Pixelbild bei aufeinanderfolgenden Abtastlinien in immer kleinere Abschnitte unterteilt wird. Wenn eine Ruhezone erfaßt wird, wird das Pixelbild längs der ausgewählten Abtastlinie mit einer hohen Auflösung nach irgendeinem in einer Referenztabelle enthaltenen Start/Stopp-Zeichen aus einem Satz von Referenz-Bar-Code-Symbol-Start/Stopp-Zeichen durchsucht. Wenn ein solches Start/Stopp-Zeichen gefunden wird, wird ein Bar-Code-Symbol erfaßt, wobei die vier Ecken des Bar-Code-Symbols in dem Pixelbild lokalisiert werden. Unter Verwendung dieser vier Ecken zum Identifizieren des Bereichs des Pixelbildes, der das erfaßte Bar- Code-Symbol enthält, wird dann das Bar-Code-Symbol decodiert. Nach dem Decodieren eines erfaßten Bar-Code-Symbols wird das Abtasten des Pixelbildes nach einer weiteren Ruhezone eines weiteren Bar-Code-Symbols mit einer niedrigen Auflösung fortgesetzt. Dieses Erfassen und Decodieren der Bar-Code-Symbole kann fortgesetzt werden, bis das Abtasten nach Ruhezonen mit einer niedrigen Auflösung das Pixelbild in eine besondere Abschnittsgröße unterteilt hat.
- In Fig. 1 ist nun ein Prozeßablaufplan des Erfassungssystems 100 zum Erfassen und Decodieren von Bar-Code-Symbolen gezeigt. Das Erfassungssystem 100 empfängt ein zweidimensionales Graustufenpixelbild als Eingangssignal, tastet das Pixelbild in einer Dimension nach Ruhezonen ab, durchsucht nach dem Finden jeder Ruhezone in einer Dimension nach Start/Stopp-Zeichen, findet die vier Ecken jedes erfaßten Bar-Code-Symbols und decodiert jedes erfaßte Bar-Code-Symbol. Das Erfassungssystem 100 kann in einem 16 MHz-386sx-Computer mit einem mathematischen Coprozessor oder in einem von CSPI hergestellten i860- CPU-RISC-Prozessor der Marke "SUPERCARD2" liegen und arbeiten.
- In einer zweckmäßigen Ausführung der vorliegenden Erfindung nimmt das Erfassungssystem 100 ein Pixelbild als Eingangsgröße an, wobei die Einrichtung 102 ein Histogramm des Pixelbildes erzeugt. Das Histogramm zeigt das minimale und das maximale Stärkeniveau für die Pixel in diesem Pixelbild. Wie später in dieser Beschreibung in Verbindung mit den Fig. 14 und 15 erläutert wird, werden dieses minimale und maximale Stärkeniveau zum Bestimmen der Breiten der Striche und Zwischenräume der in dem Pixelbild enthaltenen Bar-Code-Symbole verwendet.
- Das Abtastsystem 100 tastet längs ausgewählter Abtastlinien über dem Pixelbild nach Ruhezonen ab. Jede Abtastlinie ist entweder eine Zeile oder eine Spalte von Pixeln in dem Pixelbild. In einer zweckmäßigen Ausführung der vorliegenden Erfindung werden die Abtastlinien in einer doppeltgerichteten binären Suchfolge ausgewählt.
- In Fig. 2 ist nun eine graphische Darstellung eines Pixelbildes 200 gezeigt, das ein in bezug auf die Zeilen und Spalten der Pixel in dem Pixelbild 200 unter einem Winkel von 45º ausgerichtetes Bar-Code-Symbol 202 ent hält. Gemäß einer zweckmäßigen doppeltgerichteten binären Suchfolge 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. Eine dritte und eine vierte Abtastlinie 270 und 258 teilen die obere bzw. die untere Hälfte des Pixelbildes 200 wiederum in zwei Hälften. Ähnlich teilen eine fünfte und eine sechste Abtastlinie 204 und 216 die linke bzw. die rechte Hälfte des Pixelbildes 200 wiederum in zwei Hälften. Somit sind die Abtastlinien zweckmäßig entweder parallel oder senkrecht zueinander.
- Die Auswahl nachfolgender Abtastlinien erfolgt zweckmäßig dadurch, daß die verbleibenden Abschnitte des Pixelbildes 200 ständig in zwei Hälften unterteilt werden. In Abhängigkeit von den an das Erfassungssystem 100 gestellten Betriebsanforderungen kann das Abtasten des Pixelbildes 200 fortgesetzt werden, bis eine besondere minimale Abschnittsgröße erreicht ist, bis jede einzelne Pixelzeile und -spalte abgetastet ist oder bis die zulässige Verarbeitungszeit abgelaufen ist. In einer zweckmäßigen Ausführung stellt das Abtasten des Pixelbildes 200 sicher, daß jede Ruhezone des Bar-Code-Symbols wenigstens zweimal abgetastet wird.
- Zum Beispiel kann das Pixelbild 200 eine Bildfläche mit einer Breite von 5,12 Zoll und mit einer Höhe von 5,12 Zoll darstellen, wobei jedes Pixel eine Fläche mit einer Größe von 0,01 Zoll mal 0,01 Zoll darstellt. Wenn die Bar-Code-Symbole nach Strichen mit einer Höhe von wenigstens 2 Zoll durchsucht werden, wählt eine Suchfolge zweckmäßig Abtastlinien aus, bis das Pixelbild 200 in Abschnitte unterteilt wird, die wenigstens lediglich 0,71 Zoll mal 0,71 Zoll groß sind. Wo das Pixelbild 200 eine Fläche darstellt, die quadratisch 5,12 Zoll mal 5,12 Zoll groß ist und gemäß der in Fig. 2 gezeigten zweckmäßigen binären Suchfolge abgetastet wird, stellt jeder Abschnitt 238 eine quadratische Fläche von 0,64 Zoll mal 0,64 Zoll dar. Solche Abschnittsgrößen stellen sicher, daß die Ruhezonen eines relativ zu den Pixelzeilen und -spalten im ungünstigsten Fall unter einem Winkel von 45º ausgerichteten 2 Zoll hohen Bar- Code-Symbol wenigstens zweimal abgetastet werden.
- Wieder mit Bezug auf Fig. 1 ist eine Einrichtung 104 zum Auswählen einer Abtastlinie aus den Pixelzeilen und -spalten in einem Pixelbild vorgesehen. Die Einrichtung 106 tastet die ausgewählte Abtastlinie in einer Ruhezonen-Abtastrichtung nach einer potentiellen Bar-Code- Symbol-Ruhezone ab. Das Abtasten nach Ruhezonen wird zweckmäßig mit einer niedrigen Auflösung ausgeführt, wobei das Stärkeniveau nur jedes zweiten oder dritten Pixels in der ausgewählten Abtastlinie untersucht wird.
- In einer zweckmäßigen Ausführung entspricht die Energie jedes Pixels in dem Pixelbild einem Graustufen-Stärkeniveau. Pixel, die weißen oder hellen Flächen des Pixelbildes entsprechen, besitzen hohe Energien und hohe Graustufen-Stärkeniveaus, während Pixel, die schwarzen oder dunklen Flächen entsprechen, niedrige Energien und niedrige Graustufen-Stärkeniveaus besitzen. Zum Beispiel entspricht das absolute Weiß in einem 8 Bit-Graustufen- Pixelbild einem Stärkeniveau von 255, während das absolute Schwarz einem Stärkeniveau von 0 entspricht.
- Eine Bar-Code-Symbol-Ruhezone ist eine zu einem Bar-Code- Symbol benachbarte relativ große helle Fläche. Die Einrichtung 106 erfaßt eine Ruhezone dadurch, daß sie längs · der ausgewählten 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, wobei n ein besonderer Wert ist, sucht. Wenn das Stärkeniveau eines Pixels größer als ein erster Schwellwert ist, wird es als hell betrachtet, während es andernfalls als dunkel betrachtet wird. In einer zweckmäßigen Ausführung ermittelt die Einrichtung 102 den ersten Schwellwert dadurch, daß sie ein Histogramm des Pixelbildes erzeugt. Der erste Schwellwert kann entweder das durchschnittliche Stärkeniveau oder das mittlere Stärkeniveau von dem Histogramm sein. Alternativ kann der erste Schwellwert einfach eine vorgegebene Konstante sein oder auf andere Weise einschließlich anderer Arten statistischer Untersuchungen ermittelt werden. Jedenfalls wird der erste Schwellwert zum Unterscheiden dunkler Pixel von hellen Pixeln in dem Pixelbild verwendet.
- Um potentielle Ruhezonen zu erfassen, sucht die Einrichtung 106 nach fortwährenden Folgen von n hellen Pixeln, wobei n eine ganze Zahl ist, die größer als ein zweiter Schwellwert ist. Dieser zweite Schwellwert hängt von der Auflösung des Pixelbildes, von der Größe der Ruhezonen, nach denen gesucht wird, und von der Auflösung der Ruhezonenabtastung ab. Wenn z. B. bei der Suche nach wenigstens 0,25 Zoll breiten Ruhezonen in einem Pixelbild, in dem jedes Pixel eine Fläche von 0,01 Zoll mal 0,01 Zoll darstellt, jedes dritte Pixel untersucht wird, kann der zweite Schwellwert als 7 Pixel ausgewählt werden.
- In einer zweckmäßigen Ausführung folgen alle vertikalen Ruhezonenabtastungen der gleichen Ruhezonen-Abtastrichtung entweder von oben nach unten oder von unten nach oben, während alle horizontalen Ruhezonenabtastungen ähnlich der gleichen Ruhezonen-Abtastrichtung entweder von links nach rechts oder von rechts nach links folgen. In alternativen Ausführungen kann das Abtasten nach Ruhezonen mit einer hohen Auflösung durch Untersuchen jedes Pixels in jeder ausgewählten Abtastlinie und durch Abtasten ausgewählter Abtastlinien längs verschiedener Ruhezonen-Abtastrichtungen fortgesetzt werden.
- Falls die Einrichtung 106 ermittelt, daß längs der ausgewählten Abtastlinie keine potentielle Ruhezone erfaßt wird, ermittelt die Einrichtung 118, ob die Ruhezonenabtastung das Ende der ausgewählten Abtastlinie erreicht hat. Falls die Einrichtung 118 ermittelt, daß das Ende der ausgewählten Abtastlinie nicht erreicht worden ist, geht die Verarbeitung zur Einrichtung 106 über, um die Ruhezonenabtastung längs der ausgewählten Abtastlinie nach einer potentiellen Ruhezone mit einer niedrigen Auflösung fortzusetzen; andernfalls ermittelt die Einrichtung 120, ob die Ruhezonenabtastung des gesamten Pixelbildes abgeschlossen ist. Falls die Ruhezonenabtastung nicht abgeschlossen ist, kehrt die Verarbeitung zur Einrichtung 104 zurück, um eine nächste Abtastlinie zur Verarbeitung auszuwählen; andernfalls ist die Verarbeitung des Pixelbildes durch das Abtastteilsystem 100 abgeschlossen.
- Falls die Einrichtung 106 ermittelt, daß längs der ausgewählten Abtastlinie eine potentielle Ruhezone erfaßt wird, ermittelt die Einrichtung 108, ob sich die potentielle Ruhezone innerhalb eines Bereichs des Pixelbildes befindet, von dem zuvor ermittelt wurde, daß er ein Bar- Code-Symbol enthält. In einer zweckmäßigen Ausführung ignoriert das Erfassungssystem 100 jene Bereiche des -Pixelbildes, die bereits erfaßte und decodierte Bar-Code- Symbole enthalten. Falls sich die potentielle Ruhezone innerhalb eines solchen Bereichs befindet, ermittelt die Einrichtung 118, ob die Ruhezonenabtastung das Ende der ausgewählten Abtastlinie erreicht hat.
- Falls die Einrichtung 108 ermittelt, daß sich die potentielle Ruhezone nicht innerhalb eines Pixelbildbereichs, der ein zuvor erfaßtes und decodiertes Symbol enthält, befindet, ermittelt das Start/Stopp-Zeichen-Identifizierungsteilsystem 110, ob die potentielle Ruhezone eine echte Ruhezone ist. Eine echte Ruhezone folgt einem Start/Stopp-Zeichen oder geht ihm voraus. Das Identifizierungsteilsystem 110 sucht längs der ausgewählten Abtastlinie mit einer hohen Auflösung, um ein Start/Stopp- Zeichen zu identifizieren. Somit sind die Suchrichtung und die ausgewählte Abtastlinie kollinear. Das Identifizierungsteilsystem 110 wird unten kurz beschrieben und wird wiederum später in dieser Beschreibung in Verbindung mit Fig. 3 ausführlicher beschrieben.
- Das Teilsystem 110 ist für die Suche nach einem Bar-Code- Symbol-Start/Stopp-Zeichen mit einer hohen Auflösung längs der ausgewählten Abtastlinie vorgesehen. In einer zweckmäßigen Ausführung umfaßt die Suche mit einer hohen Auflösung das Untersuchen der Stärke jedes Pixels längs eines Abschnitts der ausgewählter. Abtastlinie. Falls die Einrichtung 106 eine potentielle Ruhezone, in der der Zustandsübergang von hell nach dunkel erfolgte, erfaßt hat, kann der potentiellen Ruhezone in der Ruhezonen- Abtastrichtung ein Bar-Code-Symbol folgen. In diesem Fall sucht das Teilsystem 110 in der gleichen Richtung wie die Ruhezonenabtastung nach einem Start/Stopp-Zeichen. Falls die durch die Einrichtung 106 erfaßte potentielle Ruhezone alternativ einen Zustandsübergang von dunkel nach hell aufweist, kann der potentiellen Ruhezone ein Bar- Code-Symbol vorausgehen. In diesem Fall sucht das Teilsystem 110 längs der ausgewählten Abtastlinie in der zur Ruhezonen-Abtastrichtung entgegengesetzten Richtung nach einem Start/Stopp-Zeichen.
- Das Start/Stopp-Zeichen-Identifizierungsteilsystem 110 ermittelt, ob an die durch die Einrichtung 106 erfaßte potentielle Ruhezone ein Stopp/Start-Zeichen angrenzt. In einer zweckmäßigen Ausführung kann das Erfassungssystem 100 zum Erfassen von Symbolen irgendeiner anerkannten Bar-Code-Symbologie verwendet werden. Diese können z. B. die Symbole der Universellen Erzeugniscode- (UPC-), der Europäischen Artikelnummersystem- (EAN-), der Verschachtelten 2-aus-5-, der Codabar-, der Code 39- der Code 128- , der Code 93-, der Code 49- oder der Code 16K-Symbologien umfassen. Das Erfassungssystem 100 kann eine Referenztabelle enthalten, die Informationen in bezug auf die Start/Stopp-Zeichen irgendeiner Bar-Code-Symbologie enthält. Für die Zwecke dieser Erfindung können die Start/Stopp-Zeichen in der Weise betrachtet werden, daß sie herkömmlich an solche Zeichen angrenzende Abschlußstriche oder Muster enthalten. Falls das Teilsystem 110 kein an die potentielle Ruhezone angrenzendes Zeichen als eines dieser Referenz-Start/Stopp-Zeichen identifiziert, wird die potentielle Ruhezone als eine falsche Ruhezone zurückgewiesen, wobei die Einrichtung 118, wie früher beschrieben wurde, ermittelt, ob das Ende der ausgewählten Abtastlinie erreicht ist. Falls das Teilsystem 110 ein an die potentielle Ruhezone angrenzendes Zeichen als ein Referenz-Start/Stopp-Zeichen identifiziert, wurde ermittelt, daß in dem Pixelbild ein Bar-Code-Symbol vorhanden, ist, wobei die Verarbeitung mit dem Vier-Ecken- Lokalisierungsteilsystem 112 fortgesetzt wird.
- Das Vier-Ecken-Lokalisierungsteilsystem 112 versucht, die vier Ecken des durch das Identifizierungsteilsystem 110 identifizierten Bar-Code-Symbols zu lokalisieren. Falls das Lokalisierungsteilsystem 112 nicht alle vier Eckendes erfaßten Bar-Code-Symbols lokalisiert, wird das erfaßte Bar-Code-Symbol zurückgewiesen, wobei die Verarbeitung in der Einrichtung 118 fortgesetzt wird. Andern falls decodiert das Decodierteilsystem 114, nachdem das Lokalisierungsteilsystem 112 die vier Ecken des Bar-Code- Symbols erfolgreich lokalisiert hat, das erfaßte Bar- Code-Symbol. Das Lokalisierungsteilsystem 112 und das Decodierteilsystem 114 werden später in dieser Beschreibung in Verbindung mit den Fig. 4 bzw. 9 ausführlicher beschrieben.
- Nachdem das Decodierteilsystem 114 das erfaßte Bar-Code- Symbol decodiert hat, behält die Einrichtung 116 die Informationen über den Bereich des Pixelbildes, der dieses Bar-Code-Symbol enthält. Die Einrichtung 108 verwendet die durch die Einrichtung 116 gespeicherten Informationen, um dieses Gebiet während der nachfolgenden Verarbeitung zu ignorieren. Nach der Erfassung und Decodierung eines Bar-Code-Symbols fährt das Erfassungssystem 100 fort, nichtabgetastete Bereiche des Pixelbildes nach weiteren Bar-Code-Symbolen abzutasten. Nachdem die Einrichtung 116 die Informationen über den Bereich des Pixelbildes, der das decodierte Bar-Code-Symbol enthält, speichert, wird die Verarbeitung somit mit der Einrichtung 118 fortgesetzt, die ermittelt, ob das Ende der ausgewählten Abtastlinie erreicht ist.
- Wieder mit Bezug auf das Beispiel nach Fig. 2 erzeugt die Einrichtung 102 des Erfassungssystems 100 nach Fig. 1 ein Histogramm des Pixelbildes 200. Die Einrichtung 104 kann dann die Abtastlinie 264 als die erste Abtastlinie für das Pixelbild 200 auswählen. Die Einrichtung 106 kann dann ausgehend vom Punkt 262 längs der Abtastlinie 264 von links nach rechts (die Ruhezonen-Abtastrichtung) eine Ruhezonenabtastung mit einer niedrigen Auflösung ausführen. Im Punkt 266 kann die Einrichtung 106 einen Zustandsübergang von einer Folge heller Pixel zu wenigstens einem dunklen Pixel erfassen, was eine potentielle Ruhezone angibt. Die Einrichtung 108 ermittelt dann, daß die potentielle Ruhezone nicht innerhalb eines Pixelbildbereichs liegt, der ein zuvor erfaßtes und decodiertes Bar- Code-Symbol enthält. Das Start/Stopp-Zeichen-Identifizierungsteilsystem 110 sucht längs der Abtastlinie 264 in der Ruhezonen-Abtastrichtung mit einer hohen Auflösung nach einem in der Referenztabelle enthaltenen Referenz- Start/Stopp-Zeichen. Da der Punkt 266 nicht der Beginn eines Start/Stopp-Zeichens ist, identifiziert das Teilsystem 110 kein Start/Stopp-Zeichen, was zeigt, daß die durch die Einrichtung 106 erfaßte potentielle Ruhezone eine falsche Ruhezone war. Die Einrichtung 118 ermittelt dann, daß das Ende der Abtastlinie 264 nicht erreicht ist, wobei die Einrichtung 106 die Abtastung vom Punkt 266 längs der Abtastlinie 264 in der Ruhezonen-Abtastrichtung (von links nach rechts) mit einer niedrigen Auflösung fortsetzt.
- Im Punkt 232 kann die Einrichtung 106 einen weiteren Zustandsübergang von einem dunklen Pixel zu einer Folge heller Pixel erfassen, was eine weitere potentielle Ruhezone angibt. Die Einrichtung 108 ermittelt erneut, daß diese potentielle Ruhezone nicht innerhalb eines Bereichs des Pixelbildes 200, der ein zuvor erfaßtes Bar- Code-Symbol enthält, liegt. Da der erfaßte Zustandsübergang von dunkel nach hell verläuft, sucht das Teilsystem 110 von rechts nach links, d. h.. in der zur Ruhezonen- Abtastrichtung entgegengesetzten Richtung, längs der Abtastlinie 264 mit einer hohen Auflösung nach einem Start/Stopp-Zeichen. Erneut identifiziert das Teilsystem 110 kein Referenz-Start/Stopp-Zeichen, ermittelt die Einrichtung 118, daß die Abtastlinie 264 nicht abgeschlossen ist und setzt die Einrichtung 106 die Ruhezonenabtastung mit einer niedrigen Auflösung vom Punkt 232 längs der Abtastlinie 264 in der Ruhezonen-Abtastrichtung von links nach rechts fort.
- Die Ruhezonenabtastung mit einer niedrigen Auflösung wird längs der Abtastlinie 264 in der Ruhezonen-Abtastrichtung ohne Erfassen irgendwelcher weiterer potentieller Ruhezonen bis zum Erreichen des Punkts 234 fortgesetzt, bei dem die Zeiteinrichtung 118 ermittelt, daß die Abtastlinie 264 abgeschlossen ist. Die Einrichtung 120 ermittelt dann, 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. Die Einrichtung 104 wählt dann die Abtastlinie 210 vom Punkt 208 bis zum Punkt 244 als die nächste Abtastlinie für die Ruhezonenabtastung mit einer niedrigen Auflösung aus. Somit verläuft die Ruhezonen-Abtastrichtung während der Abtastung mit einer niedrigen Auflösung von oben nach unten vom Punkt 208 zum Punkt 244. Während sie das Pixelbild 200 längs der Abtastlinie 210 mit einer niedrigen Auflösung nach Ruhezonen abtastet, kann die Einrichtung 106 potentielle Ruhezonen erfassen, die den Zustandsübergängen in den Punkten 206 und 242 entsprechen, die durch das Identifizierungsteilsystem 110 als falsche Ruhezonen zurückgewiesen werden.
- Nach dem Abschluß der Ruhezonenabtastung des Pixelbildes 200 längs der Abtastlinie 210 mit einer niedrigen Auflösung wählt die Einrichtung 104 die Abtastlinie 270 aus und beginnt in einer Ruhezonen-Abtastrichtung von links nach rechts vom Punkt 268 bis zum Punkt 226 abzutasten. Nach dem Erfassen einer weiteren falschen Ruhezone im Punkt 212 erfaßt die Einrichtung 106 im Punkt 224 einen Zustandsübergang von einem dunklen zu einer Folge heller Pixel, wobei die Einrichtung 108 wieder ermittelt, daß der Bereich nicht ignoriert werden kann. Das Teilsystem 110 führt dann längs der Abtastlinie 270 von rechts nach links (d. h. in einer zur Ruhezonen-Abtastrichtung entgegengesetzten Richtung) eine Suche mit einer hohen Auflösung nach einem Start/Stopp-Zeichen aus. In diesem Fall ist es möglich, daß das Identifizierungsteilsystem 110 im Punkt 224 ein Referenz-Start/Stopp-Zeichen identifiziert. Während das Decodierteilsystem 114 das Bar-Code-Symbol 202 decodiert, lokalisiert das Lokalisierungsteilsystem 112 dann die Ecken 214, 230, 246 und 260.
- Nach dem Decodieren des Bar-Code-Symbols 202 tastet das Erfassungssystem 100 das Pixelbild 200 weiter längs weiterer ausgewählter Abtastlinien nach weiteren Bar- Code-Symbolen ab. In einer zweckmäßigen Ausführung weist die Einrichtung 108 das Erfassungssystem 100 an, den Bereich des Pixelbildes 200, der das erfaßte und decodierte Bar-Code-Symbol 202 enthält, während der Ausführung nachfolgender Ruhezonenabtastungen mit einer niedrigen Auflösung zu ignorieren. Somit ignoriert das Erfassungssystem 100 nachfolgend mit dem Bar-Code-Symbol 202 verknüpfte potentielle Ruhezonen. Zum Beispiel kann das Erfassungssystem 100 nach dem Abschluß der Abtastlinie 270 längs der Abtastlinie 258 mit einer niedrigen Auflösung abtasten. Dabei ignoriert das Erfassungssystem 100 sowohl die potentielle Ruhezone im Punkt 256 als auch die potentielle Ruhezone im Punkt 236.
- Bis die Einrichtung 120 ermittelt, daß die letzte ausgewählte Abtastlinie vollständig abgetastet worden ist, tastet das Erfassungssystem 100 das Pixelbild 200 weiter nach weiteren Bar-Code-Symbolen ab. In dem gezeigten Beispiel wählt das Abtastsystem 100 weiter Abtastlinien aus, bis jede der 14 Gitterlinien 240 nach Fig. 2 ausgewählt worden ist.
- In Fig. 3 ist nun ein Prozeßablaufplan des Start/Stopp- Zeichen-Identifizierungsteilsystems 110 des Erfassungssystems 100 zum Identifizieren von Bar-Code-Symbol- Start/Stopp-Zeichen gemäß einer zweckmäßigen Ausführung der vorliegenden Erfindung gezeigt. Das Identifizierungs teilsystem 110 sucht mit einer hohen Auflösung längs der ausgewählten Abtastlinie in der durch die Art des durch die Einrichtung 106 des Erfassungssystems 100 erfaßten Zustandsübergangs vorgeschriebenen Richtung nach einem Start/Stopp-Zeichen. Falls ein Referenz-Start/Stopp- Zeichen identifiziert wird, überprüft das Identifizierungsteilsystem 110 diese Identifizierung dadurch, daß es längs der Suchlinien parallel zur ausgewählten Abtastlinie nach diesem Start/Stopp-Zeichen sucht.
- Die Einrichtung 302 ist zum Erzeugen einer ersten Folge von Symbolelementbreiten zum Erfassen eines Bar-Code- Symbol-Start/Stopp-Zeichens längs der ausgewählten Abtastlinie vorgesehen. 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 während der Unterpixelinterpolation längs eines Abschnitts der ausgewählten. Abtastlinie erzeugten Signalenergiewerten ab. Die Unterpixelinterpolation wird später in dieser Beschreibung in Verbindung mit den Fig. 14 und 15 ausführlicher beschrieben.
- Die Suche nach einem Start/Stopp-Zeichen beginnt zweckmäßig bei dem zum Erfassen der potentiellen Ruhezone verwendeten Zustandsübergangspunkt. Jede. Referenz- Start/Stopp-Zeichen in einer Referenztabelle besitzt eine eindeutige Folge von Elementbreiten, wobei verschiedene Bar-Code-Symbologien Start/Stopp-Zeichen mit unterschiedlichen Anzahlen von Symbolelementen besitzen können. Die Einrichtung 302 erzeugt zweckmäßig eine erste Folge von n Elementbreiten, wobei n der Anzahl der Symbolelemente in dem Referenz-Start/Stopp-Zeichen in der Referenztabelle mit der größten Anzahl von Symbolelementen entspricht.
- Falls das Erfassungssystem 100 z. B. nur zum Erfassen und Decodieren von Code 128-Bar-Code-Symbolen verwendet wird, erzeugt die Einrichtung 302 zweckmäßig eine erste Folge von 5 Elementbreiten. Im Code 128 besitzt ein Startzeichen 6 Elemente (3 Striche und 3 Zwischenräume), während ein Stopp-Zeichen, das den Abschlußstrich enthält, 7 Elemente (4 Striche und 3 Zwischenräume) besitzt. Jedoch kann das Start- und das Stopp-Zeichen im Code 128 durch Kennzeichnen nur der Breite der ersten 5 Elemente eindeutig identifiziert werden. Für das Startzeichen des Codes 128 sind die durch diese drei Striche begrenzten drei Striche und zwei Zwischenräume die gekennzeichneten 5 Elemente. Für das Stopp-Zeichen des Codes 128 sind der Abschlußstrich, die zwei am nächsten bei dem Abschlußstrich gelegenen Striche und die zwei durch diese zwei Striche und durch den Abschlußstrich begrenzten Zwischenräume die gekennzeichneten 5 Elemente. 17a ein potentielles Start/Stopp-Zeichen entweder ein Start- oder ein Stopp-Zeichen des Codes 128 sein kann, erzeugt die Einrichtung 302 eine erste Folge von 5 Elementbreiten.
- Der Abschnitt der ausgewählten Abtastlinie, längs derer die Einrichtung 302 eine Unterpixelinterpolation zum Erzeugen der ersten Folge der Elementbreiten ausführt, beginnt bei dem Zustandsübergangspunkt und wird fortgesetzt, bis eine Folge von n Elementbreiten erzeugt ist. Falls vor der Bestimmung aller n Elementbreiten das Ende der ausgewählten Abtastlinie erreicht ist, Entspricht der momentane Zustandsübergangspunkt keinem Referenz- Start/Stopp-Zeichen. Falls ein "Strich" oder ein "Zwischenraum" außerdem zu breit ist, um einem Element der erwarteten Bar-Code-Symbole zu entsprechen, kann die Erzeugung der Folge der Elementbreiten ohne Identifizieren eines Start/Stopp-Zeichens angehalten werden.
- Die Einrichtung 304 vergleicht die erste Folge der Elementbreiten mit den Referenz-Start/Stopp-Zeichen. Falls die Einrichtung 304 ermittelt, daß die erste Folge mit keinem der Referenz-Start/Stopp-Zeichen übereinstimmt, wird kein Bar-Code-Symbol-Start/Stopp-Zeichen identifiziert und die Verarbeitung zur Einrichtung 118 des Erfassungssystems 100 nach Fig. 1 gelenkt. Wie später in dieser Beschreibung in Verbindung mit Fig. 16 ausführlicher beschrieben wird, wird der Vergleich zwischen Folgen von Elementbreiten und Referenz-Start/Stopp-Zeichen zweckmäßig auf der Grundlage von statistischen Sicherheiten ausgeführt.
- Falls die Einrichtung 304 jedoch ermittelt, daß die erste Folge mit keinem Referenz-Start/Stopp-Zeichen übereinstimmt, erzeugt die Einrichtung 306 eine zweite Folge von Elementbreiten dadurch, daß sie längs einer ersten Überprüfungssuchlinie parallel zur ausgewählten Abtastlinie und in deren Nähe eine Unterpixelinterpolation ausführt. In einer zweckmäßigen Ausführung ist die Erste Überprüfungssuchlinie gegenüber der ausgewählten Abtastlinie um einige Pixel versetzt. Die Einrichtung 308 ermittelt, ob die zweite Folge der Elementbreiten mit dem durch die Einrichtung 304 identifizierten Referenz-Start/Stopp- Zeichen übereinstimmt. Falls die zweite Folge nicht mit dem Referenz-Start/Stopp-Zeichen übereinstimmt, wird das durch die Einrichtung 304 identifizierte Start/Stopp- Zeichen bestätigt, wobei die Verarbeitung mit einer bestätigten Bar-Code-Symbol-Identifizierung im Lokalisierungsteilsystem 112 des Erfassungssystems 100 nach Fig. 1 fortgesetzt wird.
- Falls die Einrichtung 308 die durch die Einrichtung 304 ausgeführte Referenz-Start/Stopp-Zeichen-Identifizierung nicht bestätigt, wird durch die Einrichtung 310 und durch die Einrichtung 312 eine zweite Bestätigung versucht. Abgesehen davon, daß eine zweite Überprüfungssuchlinie untersucht wird, arbeiten die Einrichtung 310 und die Einrichtung 312 im wesentlichen gemäß der Einrichtung 306 bzw. der Einrichtung 308. Die zweite Überprüfungssuchlinie wird auf der der ersten Überprüfungssuchlinie gegenüberliegenden Seite der ausgewählten Abtastlinie positioniert. Falls die Einrichtung 312 das durch die Einrichtung 304 identifizierte Start/Stopp-Zeichen bestätigt, wird die Verarbeitung mit einer bestätigten Bar-Code- Symbol-Identifizierung in dem Lokalisierungsteilsystem 112 des Erfassungssystems 100 nach Fig. 1 fortgesetzt. Andernfalls identifiziert das Identifizierungsteilsystem 110 kein Bar-Code-Symbol-Stopp/Start-Zeichen, wobei die Verarbeitung zur Einrichtung 118 des Erfassungssystems 100 nach Fig. 1 gelenkt wird.
- Wieder mit Bezug auf das Beispiel nach Fig. 2 führt die Einrichtung 302 des Identifizierungsteilsystems 110, nachdem das Erfassungssystem 100 im Punkt 224 längs der Abtastlinie 270 eine potentielle Ruhezone erfaßt, längs der Abtastlinie 270 eine Unterpixelinterpolation zum Erzeugen einer ersten Folge von Elementbreiten aus. Falls die Einrichtung 304 ermittelt, daß die erste Folge mit einem Referenz-Start/Stopp-Zeichen übereinstimmt, führt die Einrichtung 306 längs einer ersten Überprüfungssuchlinie 222 eine Unterpixelinterpolation zum Erzeugen einer zweiten Folge von Elementbreiten aus. Falls die Einrichtung 308 ermittelt, daß die zweite Folge das durch die Einrichtung 304 identifizierte Start/Stopp-Zeichen bestätigt, lenkt die Einrichtung 308 die Verarbeitung mit einem bestätigten Start/Stopp-Zeichen an das Lokalisierungsteilsystem 112 des Erfassungssystems 100 nach Fig. 1.
- Falls die zweite Folge nicht mit dem durch die Einrichtung 304 identifizierten Referenz-Start/Stopp-Zeichen übereinstimmt, führt die Einrichtung 310 längs der zweiten Überprüfungssuchlinie 228 eine Unterpixelinterpolation zum Entnehmen einer dritten Folge von Elementbreiten aus. Die Einrichtung 312 ermittelt dann, ob die dritte Folge das durch die Einrichtung 304 identifizierte Start/Stopp-Zeichen bestätigt. Ein Start/Stopp-Zeichen kann aus verschiedenen Gründen durch die Einrichtung 304 identifiziert, durch die Einrichtungen 308 oder 312 aber nicht bestätigt werden. Die Identifizierung durch die Einrichtung 304 kann fälschlich positiv sein, wobei sie ein Bar-Code-Symbol dort identifiziert, wo sich keines befindet. Alternativ kann ein Bar-Code-Symbol vorhanden, in dem Pixelbild aber verschlechtert sein. Eine solche Verschlechterung kann durch physikalische Fehler im Etikett, das das Bar-Code-Symbol trägt, oder durch während der Erzeugung des Pixelbildes dieses Etiketts eingeführte Fehler verursacht werden.
- In Fig. 4 ist nun ein Prozeßablaufplan des Vier-Ecken- Lokalisierungsteilsystems 112 des Erfassungssystems 100 zum Lokalisieren der vier Ecken eines Bar-Code-Symbols gezeigt. Das Lokalisierungsteilsystem 112 beginnt damit, daß es zwei Ecken des durch das Teilsystem 110 identifizierten Start/Stopp-Zeichens lokalisiert. Diese zwei Ecken entsprechen zwei Ecken des ersten oder Außenstrichs dieses ersten Start/Stopp-Zeichens. Das Lokalisierungsteilsystem 112 versucht dann, durch Suchen nach der zweiten Ruhezone und nach dem zweiten mit dem Bar-Code- Symbol verknüpften Start/Stopp-Zeichen das andere Ende des Bar-Code-Symbols zu finden. Falls die zweite Ruhezone und das zweite Start/Stopp-Zeichen erfolgreich gefunden werden, lokalisiert das Lokalisierungsteilsystem 112 die letzten zwei Ecken des Bar-Code-Symbols. Diese zwei Ecken entsprechen zwei Ecken des Außenstrichs des zweiten Start/Stopp-Zeichens. Jede Ecke ist durch die Position des Pixels in dem Pixelbild, das diese Ecke des Bar-Code- Symbols enthält, definiert.
- Die Einrichtung 402 lokalisiert die ersten zwei Ecken des identifizierten Bar-Code-Symbols, d. h. jene am oberen und am unteren Ende des durch das Identifizierungsteilsystem 110 identifizierten Start/Stopp-Zeichens. Die Einrichtung 402 wird später in dieser Beschreibung in Verbindung mit Fig. 6 ausführlicher beschrieben.
- Nach dem Auffinden der ersten zwei Ecken ermittelt die Einrichtung 404 die Lage einer Linie, die die Linie, die die ersten zwei Ecken verbindet, schneidet und senkrecht zu ihr ist. Die Einrichtung 404 führt über das erfaßte Bar-Code-Symbol längs der senkrecht schneidenden Linie eine Ruhezonenabtastung mit niedriger Auflösung nach der zweiten Ruhezone am anderen Ende des Symbols aus.
- Die Einrichtung 406 ermittelt durch Suchen nach einer fortwährenden Folge von n hellen Pixeln längs der senkrecht schneidenden Geraden, wobei n größer als der zweite Schwellwert ist, ob diese zweite Ruhezone gefunden ist. Der zweite Schwellwert wurde früher in dieser Beschreibung in Verbindung mit Fig. 1 beschrieben. Falls die zweite Ruhezone nicht gefunden wird, werden die vier Ecken nicht lokalisiert, wobei die Einrichtung 406 die Verarbeitung zur Einrichtung 118 des Erfassungssystems 100 nach Fig. 1 lenkt. Falls die Einrichtung 406 die zweite Ruhezone findet, führt die Einrichtung 408 eine Unterpixelinterpolation längs einer ersten Suchlinie zum Erzeugen einer ersten Folge von Elementbreiten aus. Diese erste Suchlinie kann eine Pixelzeile oder -spalte sein, die die senkrecht schneidende Linie an der Kante der zweiten Ruhezone schneidet.
- Die Einrichtung 410 ermittelt, ob die durch die Einrichtung 408 erzeugte erste Folge von Elementbreiten mit dem Start/Stopp-Zeichen, das das durch das Identifizierungsteilsystem 110 identifizierte Start/Stopp-Zeichen ergänzt, übereinstimmt. Die Bar-Code-Symbole enthalten eindeutige Start/Stopp-Zeichen, die die Art der Bar-Code- Symbologie zeigen. Jedes Bar-Code-Symbol besitzt ein Paar einander ergänzender Start- und Stopp--Zeichen, die jeweils die Symbologie des Bar-Code-Symbols identifizieren. Sobald an einem Ende eines Bar-Code-Symbols ein erstes Start/Stopp-Zeichen identifiziert wird, muß das zweite Start/Stopp-Zeichen am anderen Ende des Bar-Code- Symbols, bevor eine Bar-Code-Symbol-Identifizierung bestätigt werden kann, das erste Start/Stopp-Zeichen somit ergänzen. Zum Beispiel gibt es im Code 128 drei verschiedene Startzeichen und ein Stopp-Zeichen. Falls eines der drei Startzeichen des Codes 128 identifiziert wird, ist das ergänzende Stopp-Zeichen bekannt. Ähnlich muß beim Identifizieren des Stopp-Zeichens des Codes 128 das ergänzende Startzeichen eines der drei möglichen Startzeichen des Codes 128 sein.
- Falls die Einrichtung 410 ermittelt, daß die durch die Einrichtung 408 erzeugte erste Folge der Elementbreiten mit dem ergänzenden Start/Stopp-Zeichen übereinstimmt, wird das zweite Start/Stopp-Zeichen bestätigt, wobei die Einrichtung 420 die letzten zwei Ecken des erfaßten Bar- Code-Symbols, d. h. jene, die das obere und das untere Ende des Außenstrichs des zweiten Start/Stopp-Zeichens definieren, findet. Die Einrichtung 420 arbeitet im wesentlichen gemäß der Einrichtung 402 und wird später in dieser Beschreibung in Verbindung mit Fig. 6 ausführlicher beschrieben. Nach der Einrichtung 420 wird die Verarbeitung mit dem Decodierteilsystem 114 des Erfassungssystems 100 fortgesetzt.
- Falls die durch die Einrichtung 408 erzeugte erste Folge der Elementbreiten nicht mit dem ergänzenden Start/Stopp- Zeichen übereinstimmt, führt die Einrichtung 412 zum Erzeugen einer zweiten Folge von Elementbreiten eine Unterpixelinterpolation längs einer zweiten Suchlinie aus. Die zweite Suchlinie kann parallel zur ersten Suchlinie sein und in deren Nähe liegen. In einer zweckmäßigen Ausführung ist die zweite Suchlinie zur ersten Suchlinie parallel und gegenüber dieser um einige Pixel versetzt. Die Einrichtung 414 ermittelt dann, ob die zweite Folge mit dem ergänzenden Start/Stopp-Zeichen übereinstimmt. Wenn das der Fall ist, wird die Verarbeitung in der Einrichtung 420 zum Lokalisieren der zwei anderen Ecken des Bar-Code-Symbols fortgesetzt. Andernfalls erzeugt die Einrichtung 416 durch Ausführen einer Unterpixelinterpolation längs einer auf der der zweiten Suchlinie gegenüberliegenden Seite der ersten Suchlinie positionierten dritten Suchlinie eine dritte Folge von Elementbreiten. Die Einrichtung 418 ermittelt dann, ob die dritte Folge mit dem ergänzenden Start/Stopp-Zeichen übereinstimmt. Wenn das der Fall ist, wird die Verarbeitung in der Einrichtung 420 zum Lokalisieren der anderen zwei Ecken des Bar-Code-Symbols fortgesetzt. Andernfalls wird das ergänzende Start/Stopp-Zeichen nicht identifiziert, wobei die vier Ecken des Bar-Code-Symbols nicht lokalisiert werden und die Verarbeitung zur Einrichtung 118 des Erfassungssystems 100 zurückkehrt.
- Nachdem das Erfassungssystem 100 ein erstes Start/Stopp- Zeichen des Bar-Code-Symbols 202 im Punkt 224 längs der Abtastlinie 270 identifiziert und bestätigt hat, lokalisiert die Einrichtung 402 des Vier-Ecken-Lokalisierungsteilsystems 112 wieder mit Bezug auf das Beispiel nach Fig. 2 die Ecken 214 und 230. Die Einrichtung 404 ermittelt die Lage der Linie 220, die die Linie zwischen den Ecken 214 und 230 im Punkt 218 schneidet und zu dieser senkrecht ist. Die Einrichtung 404 tastet dann mit einer niedrigen Auflösung längs der Linie 220 über das Bar- Code-Symbol 202 nach der zweiten Ruhezone am anderen Ende des Bar-Code-Symbols 202 ab. Die Einrichtung 406 lokali siert die zweite Ruhezone nach dem Punkt 248 dadurch, daß sie an dieser Position eine fortwährende Folge heller Pixel, die länger als der zweite Schwellwert ist, erfaßt. Zum Erzeugen einer ersten Folge von Elementbreiten führt die Einrichtung 408 dann längs der Suchlinie 252 eine Unterpixelinterpolation von links nach rechts aus. Die Einrichtung 410 kann dann bestimmen, daß die erste Folge mit der Ergänzung des ersten Start/Stopp-Zeichens übereinstimmt. In diesem Fall findet die Einrichtung 420 die Ecken 246 und 260. Falls die Einrichtung 410 ermittelt, daß die erste Folge nicht mit dem ergänzenden Start/Stopp-Zeichen übereinstimmt, würde das Lokalisierungsteilsystem 112 versuchen, das ergänzende Start/Stopp-Zeichen unter Verwendung der Einrichtungen 412 und 414 längs der Suchlinie 254 und erforderlichenfalls unter Verwendung der Einrichtungen 416 und 418 längs der Suchlinie 250 zu identifizieren.
- In Fig. 5 ist nun eine graphische Darstellung des Teilbildes 500 des Pixelbildes 200 nach Fig. 2 gezeigt. Jedes Quadrat in Fig. 5 stellt ein in dem Pixelbild 500 durch den Spaltenindex i und durch den Zeilenindex j identifiziertes Pixel (i, j) dar, wobei i und j von 0 bis 15 laufen. Die Pixelzeile 6 in Fig. 5 entspricht der Abtastlinie 27 0 nach Fig. 2, während das Pixel (13, 6) dem Punkt 224 nach Fig. 2 entspricht. Die nicht an den Außenkanten des Pixelbildes 200 liegenden Pixel besitzen acht Nachbarn. Zum Beispiel sind die Nachbarn des Pixels (13, 6) die Pixel (13, 5), (14, 5), (14, 6), (14, 7), (13, 7), (12, 7), (12, 6) und (12, 5).
- Falls ihr Graustufen-Stärkeniveau niedriger als oder gleich dem ersten Schwellwert ist, besitzen die Pixel in Fig. 5 einen schwarzen Punkt. Ähnlich besitzen die Pixel in Fig. 5 keine schwarzen Punkte, falls ihr Stärkeniveau größer als der erste Schwellwert ist. Wie zuvor in dieser Beschreibung in Verbindung mit Fig. 1 beschrieben wurde, kann der erste Schwellwert aus dem durch die Einrichtung 102 des Erfassungssystems 100 erzeugten Histogramm des Pixelbildes ermittelt werden. Die mit einem schwarzen Punkt gezeigten Pixel können einen Teil einer Linie in dem Bar-Code-Symbol 202 bilden. Die ohne einen schwarzen Punkt gezeigten Pixel können einen Teil der Zwischenräume in dem Bar-Code-Symbol 202 bilden.
- In Fig. 6 ist nun ein Prozeßablaufplan eines Zwei-Ecken- Lokalisierungsteilsystems 600 zum Lokalisieren zweier Ecken eines Bar-Code-Symbols gezeigt. Die Einrichtung 402 und die Einrichtung 420 des Vier-Ecken-Lokalisierungsteilsystems 112 nach Fig. 4 arbeiten im wesentlichen gemäß dem Zwei-Ecken-Lokalisierungsteilsystem 600. Das Lokalisierungsteilsystem 600 findet zwei Ecken eines erfaßten Bar-Code-Symbols dadurch, daß es zum Finden der Außenecken dieses Strichs längs der "Außenkante" eines Strichs gleitet, der ein Außensymbolelement eines Start/Stopp-Zeichens bildet. Die "Außenkante" eines Strichs, der ein Außensymbolelement eines gegebenen Start/Stopp-Zeichens bildet, liegt dort, wo sich das Start/Stopp-Zeichen und seine zugeordnete Ruhezone treffen.
- Um die Erläuterung zu erleichtern, wird das Lokalisierungsteilsystem 600 im Kontext des Beispiels nach den Fig. 2 und 5 beschrieben. Nachdem das Erfassungssystem 100 in dem Pixelbild 200 ein Start/Stopp-Zeichen des Bar-Code-Symbols 202 identifiziert hat, aktiviert das Lokalisierungsteilsystem 112 die Einrichtung 402 zum Lokalisieren der Ecken 214 und 230. Nach dem Auffinden des ergänzenden Start/Stopp-Zeichens aktiviert das Lokalisierungsteilsystem 112 die Einrichtung 420, die dann die Ecken 246 und 260 lokalisiert.
- Das Lokalisierungsteilsystem 600 empfängt das "ursprüngliche Keimpixel" als eine Eingangsgröße. Ein ursprüngliches Keimpixel ist ein an ein Start/Stopp-Zeichen angrenzendes Pixel in einer Ruhezone. Ein ursprüngliches Keimpixel kann durch das Identifizierungsteilsystem 110 oder durch das Lokalisierungsteilsystem 112 ermittelt werden. Ein ursprüngliches Keimpixel ist zweckmäßig ein helles Pixel, das einen Teil einer Ruhezone bildet und unmittelbar benachbart zu einem dunklen Pixel liegt, das einen Teil des ersten oder Außenstrichs eines der zwei Start/Stopp-Zeichen eines erfaßten Bar-Code- Symbols bildet. In dem Beispiel nach Fig. 2 entspricht die Lage des ursprünglichen Keimpixels dem Punkt 224, wobei es in Fig. 5 durch das Pixel (13, 6) dargestellt wird.
- Außerdem empfängt das Lokalisierungsteilsystem 600 als Eingangsgröße die Suchrichtung, in der das Erfassungssystem 100 nach dem mit dem ursprünglichen Keimpixel verknüpften Start/Stopp-Zeichen gesucht hat. Entsprechend dem Durchsuchen längs der Pixelzeilen und -spalten gibt es vier mögliche Suchrichtungen: östlich, westlich, nördlich und südlich. Diese vier Richtungen sind zusammen mit den vier Zwischenrichtungen nordöstlich, südöstlich, südwestlich und nordwestlich in Fig. 5 definiert. Jeder der acht Nachbarn des momentanen Keimpixels besitzt relativ zu dem momentanen Keimpixel eine eindeutige Richtung. Da die hochauflösende Suche nach dem zu dem Punkt 224 benachbarten Stopp/Start-Zeichen längs der Linie 270 von Osten nach Westen voranschreitet, ist die in dem Beispiel nach Fig. 5 durch das Lokalisierungsteilsystem 600 empfangene Suchrichtung westlich.
- Das Lokalisierungsteilsystem 600 findet eine Ecke dadurch, daß es auf der Suche nach der Ecke längs der Außenkante des ersten Strichs eines Start/Stopp-Zeichens gleitet. Das Lokalisierungsteilsystem 600 gleitet dadurch längs der Außenkante des Strichs, daß es das momentane Keimpixel nach dem Untersuchen der Nachbarn des momentanen Keimpixels in einer Folgeausrichtung entweder in Uhrzeigerrichtung oder entgegen der Uhrzeigerrichtung durch ein nächstes Keimpixel ersetzt. Eine ausgewählte Folgeausrichtung in Uhrzeigerrichtung führt zur Lokalisierung einer der zwei Ecken des ersten Strichs des Start/Stopp-Zeichens, während eine ausgewählte Folgeausrichtung entgegen der Uhrzeigerrichtung zur Lokalisierung der anderen Ecke führt. Da das Lokalisierungsteilsystem 600 schließlich beide Ecken lokalisiert, verwendet das Lokalisierungsteilsystem 600 sowohl die Folgeausrichtung in Uhrzeigerrichtung zum Lokalisieren einer Ecke als auch die Folgeausrichtung entgegen der Uhrzeigerrichtung zum Lokalisieren der anderen Ecke. Welche Folgeausrichtung zuerst ausgesucht wird, ist unbedeutend. Die Auswahl eines nächsten Keimpixels auf der Grundlage eines momentanen Keimpixels unter Verwendung einer Folgeausrichtung in Uhrzeigerrichtung oder entgegen der Uhrzeigerrichtung wird später in dieser Beschreibung in Verbindung mit Fig. 7 ausführlicher beschrieben.
- Nachdem das Lokalisierungsteilsystem 600 das ursprüngliche Keimpixel und die Suchrichtung als Eingangsgrößen empfangen hat, wählt die Einrichtung 602 zur Verwendung bei der Auswahl eines nächsten Keimpixels von einem momentanen Keimpixel eine Folgeausrichtung in Uhrzeigerrichtung aus. Die Einrichtung 604 stellt dann das momentane Keimpixel gleich dem ursprünglichen Keimpixel ein, wobei die Einrichtung 606 die Liste der ausgewählten Keimpixel beginnt. Das Lokalisierungsteilsystem 600 unterhält eine Liste der letzten als Keimpixel ausgewählten n Pixel, wobei n zweckmäßig 5 ist. Die Einrichtung 606 beginnt, die Liste der ausgewählten Keimpixel durch das ursprüngliche Keimpixel zu erweitern.
- Das Keimpixelauswahl-Teilsystem 608 wählt das nächste Keimpixel von dem momentanen Keimpixel auf der Grundlage der ausgewählten Folgeausrichtung (d. h. in Uhrzeigerrichtung oder entgegen der Uhrzeigerrichtung) und der gewählten Suchrichtung aus. Das Keimpixelauswahl-Teilsystem 608 wird später in dieser Beschreibung in Verbindung mit Fig. 7 ausführlicher beschrieben. Die Einrichtung 610 aktualisiert dann die Liste der ausgewählten Keimpixel dadurch, daß sie das momentane Keimpixel zum Ende der Liste hinzufügt, während die Einrichtung 612 das momentane Keimpixel als das nächste Keimpixel einstellt. Nachdem die Liste der ausgewählten Keimpixel die zweckmäßige Länge von 5 Pixeln erreicht hat, aktualisiert die Einrichtung 610 die Liste dadurch, daß sie das momentane Keimpixel zum Ende der Liste hinzufügt und das erste Keimpixel in der Liste löscht.
- Falls die Einrichtung 614 ermittelt, daß die Länge der Liste der ausgewählten Keimpixel kleiner als der zweckmäßige Schwellwert von 5 ist, kehrt die Verarbeitung zur Auswahl des nächsten Keimpixels zu dem Keimpixelauswahl- Teilsystem 608 zurück. Andernfalls erzeugt die Einrichtung 616 einen momentanen Vektor. Der momentane Vektor wird dadurch ermittelt, daß der Vektor von dem ersten Keimpixel in der Liste der ausgewählten Keimpixel zum letzten Keimpixel in der Liste in den Ursprung verschoben wird, wobei der Ursprung irgendein Pixel in dem Pixelbild sein kann. Falls die Einrichtung 618 ermittelt, daß der momentane Vektor der erste für die ausgewählte Folgeausrichtung durch das Lokalisierungsteilsystem 600 erzeugte Vektor ist, sichert die Einrichtung 620, bevor sie zur Einrichtung 622 übergeht, den momentanen Vektor als einen. Referenzvektor; andernfalls geht die Verarbeitung direkt zur Einrichtung 622 über.
- Die Einrichtung 622 berechnet die Größe der Vektordifferenz zwischen dem momentanen Vektor und dem Referenzvektor. Falls die Einrichtung 624 ermittelt, daß diese Größe kleiner als ein besonderer dritter Schwellwert ist, ist noch keine Ecke erfaßt worden, wobei die Verarbeitung zu dem Keimpixelauswahl-Teilsystem 608 zurückkehrt. Andernfalls wurde eine Ecke erfaßt, wobei die Einrichtung 626 ein dieser erfaßten Ecke entsprechendes Pixel auswählt. Falls die Einrichtung 628 dann ermittelt, daß die erfaßte Ecke nur die erste der zwei zu lokalisierenden Ecken ist, wählt die Einrichtung 630 eine Folgeausrichtung entgegen der Uhrzeigerrichtung aus, wobei die Verarbeitung zum Beginn der Suche nach der zweiten Ecke zur Einrichtung 604 zurückkehrt. Um nach der zweiten Ecke mit einer Folgeausrichtung entgegen der Uhrzeigerrichtung zu suchen, kehrt die Einrichtung 604 zu dem ursprünglichen Keimpixel als dem momentanen Keimpixel zurück, wobei die Einrichtung 606 die Liste der ausgewählt en Keimpixel nur mit dem ursprünglichen Keimpixel wieder von vorn beginnt. Falls die Einrichtung 628 andernfalls ermittelt, daß die gerade erfaßte Ecke die zweite Ecke ist, wurden beide Ecken lokalisiert, womit das Lokalisierungsteilsystem 600 abgeschlossen ist.
- Für den Fachmann auf dem Gebiet ist selbstverständlich, daß das Lokalisierungsteilsystem 600 die Ecken der Bar- Code-Symbole unter Verwendung anderer Maße als der Größe der Vektordifferenz erfassen kann. Zum Beispiel berechnet die Einrichtung 622 in einer alternativen Anordnung die Größe des Winkels zwischen dem momentanen Vektor und dem Referenzvektor. Diese kann als die Phase der Vektordifferenz bezeichnet werden. Die Einrichtung 624 vergleicht dann diese Phase mit einem ausgewählten Phasenschwellwert. Falls die Phase kleiner als der Phasenschwellwert ist, wurde noch keine Ecke erfaßt; während andernfalls eine Ecke erfaßt wurde.
- In Fig. 7 ist nun ein Prozeßablaufplan für das Keimpixelauswahl-Teilsystem 608 zum Auswählen eines nächsten Keimpixels von einem momentanen Keimpixel gezeigt. Das Auswahlteilsystem 608 bildet einen Teil des Zwei-Ecken- Lokalisierungsteilsystems 600. Das Auswahlteilsystem 608 wählt von den acht benachbarten Pixeln des momentanen Keimpixels das nächste Keimpixel aus. Das nächste Keimpixel bildet wie das momentane Keimpixel einen Teil der Ruhezone. Zusätzlich dazu, daß das nächste Keimpixel ein Nachbar des momentanen Keimpixels ist, liegt es unmittelbar benachbart zu einem weiteren Nachbarn des momentanen Keimpixels, wobei der weitere Nachbar einen Teil des Außenstrichs des Start/Stopp-Zeichens bildet.
- Falls die Stärkeniveaus der zwei Pixel beide kleiner als der erste Schwellwert oder gleich diesem sind, werden sie, da sie beide Teile eines oder mehrerer Striche bilden können, als "ähnlich" betrachtet. Außerdem werden zwei Pixel, da sie beide Teile eines oder mehrerer Zwischenräume bilden können, als ähnlich betrachtet, falls ihre Stärkeniveaus beide größer als der erste Schwellwert sind. Zum Beispiel sind in Fig. 5 die Pixel (12, 6) und (11, 6) ebenso wie die Pixel (12, 7) und (13, 6), nicht jedoch die Pixel (12, 6) und (13, 6) ähnlich zueinander.
- Das Auswahlteilsystem 608 empfängt als Eingangsgröße das momentane Keimpixel, die Suchrichtung und die ausgewählte Folgeausrichtung. Die ausgewählte Folgeausrichtung kann entweder in Uhrzeigerrichtung oder entgegen der Uhrzeigerrichtung liegen. Um das nächste Keimpixel zu bestimmen, untersucht das Auswahlteilsystem 608 die Nachbarn des momentanen Keimpixels in der Folgeausrichtung entweder in Uhrzeigerrichtung oder entgegen der Uhrzeigerrichtung. Nach dem Empfang der Eingangsgröße stellt die Einrichtung 702 des Auswahlteilsystems 608 den momentanen Nachbarn in der Weise ein, daß er in der Suchrichtung der Nachbar von dem momentanen Keimpixel ist. Falls die Suchrichtung z. B. westlich ist, wählt die Einrichtung 702 den westlichen Nachbarn des momentanen Keimpixels als den momentanen Nachbarn aus.
- Die Einrichtung 704 ermittelt, ob der momentane Nachbar ähnlich zu dem momentanen Keimpixel ist, d. h., ob sie beide helle Pixel sind, die einen Teil einer Ruhezone bilden können. Wenn das der Fall ist, kehrt die Einrichtung 706, bevor sie zur Einrichtung 708 übergeht, die ausgewählte Folgeausrichtung für die Nachbarnuntersuchung vorübergehend um, d. h., sie kehrt sie je nachdem, welche Ausrichtung geeignet ist, von der in Uhrzeigerrichtung zu der entgegen der Uhrzeigerrichtung oder von der entgegen der Uhrzeigerrichtung zu der in Uhrzeigerrichtung um. Diese Umkehr der ausgewählten Folgeausrichtung ist dadurch vorübergehend, daß die Umkehrfolgeausrichtung nur solange erhalten wird, bis die Verarbeitung des Auswahlteilsystems 608 abgeschlossen ist. Wenn die Verarbeitung zu dem Lokalisierungsteilsystem 600 zurückkehrt, kehrt die Folgeausrichtung zu der vor dem Realisieren des Auswahlteilsystems 608 zurück. Falls der momentane Nachbar andernfalls nicht ähnlich zu dem momentanen Keimpixel ist, geht die Verarbeitung direkt zur Einrichtung 708 über.
- Die Einrichtung 708 wählt den nächsten Nachbarn in der Weise aus, daß sie das momentane Keimpixel in der ausgewählten Folgeausrichtung von dem momentanen Nachbarn in Inkrementen zu 45º hin- und herbewegt. Falls der momentane Nachbar z. B. der westliche Nachbar und die ausgewählte Folgeausrichtung in Uhrzeigerrichtung zeigt, wählt die Einrichtung 708 den nordwestlichen Nachbarn als den nächsten Nachbarn aus. Falls der momentane Nachbar der westliche Nachbar und die ausgewählte Folgeausrichtung entgegen der Uhrzeigerrichtung zeigt, wird ähnlich der südwestliche Nachbar als der nächste Nachbar ausgewählt.
- Falls die Einrichtung 710 ermittelt, daß der nächste Nachbar ähnlich zu dem momentanen Nachbarn ist, wurde das nächste Keimpixel noch nicht gefunden. In diesem Fall stellt die Einrichtung 712 den momentanen Nachbarn als den nächsten Nachbarn ein, wobei die Verarbeitung zur Auswahl des nächsten Nachbarn zur Einrichtung 708 zurückkehrt. Andernfalls ermittelt die Einrichtung 714, ob der nächste Nachbar zu dem momentanen Keimpixel ähnlich ist. Wenn das der Fall ist, wählt die Einrichtung 716 das nächste Keimpixel als den nächsten Nachbarn aus. Andernfalls wählt die Einrichtung 718 das nächste Keimpixel als den momentanen Nachbarn aus. In beiden Fällen ist das nächste Keimpixel ausgewählt uni die Verarbeitung des Auswahlteilsystems 608 abgeschlossen.
- Die Verarbeitung sowohl des Keimpixelauswahl-Teilsystems 608 als auch des Zwei-Ecken-Lokalisierungsteilsystems 600 kann ebenfalls im Kontext des Beispiels nach Fig. 5 erläutert werden.
- Wieder mit Bezug auf das Beispiel nach Fig. 5 empfängt das Zwei-Ecken-Lokalisierungsteilsystem 600 ein ursprüngliches Keimpixel des Pixels (13, 6) und eine westliche Suchrichtung. Die Einrichtung 602 nach Fig. 6 wählt eine Folgeausrichtung in Uhrzeigerrichtung aus, während die Einrichtung 604 das momentane Keimpixel als das ursprüngliche Keimpixel (13, 6) einstellt und die Einrichtung 606 die Liste der ausgewählten Keimpixel beginnt.
- In Fig. 8 ist nun eine Tabelle gezeigt, die für das Beispiel nach Fig. 5 die ersten zwölf Verarbeitungszyklen des Lokalisierungsteilsystems 600. 5 darstellt. Nach dem Zyklus 1 enthält die durch das Lokalisierungsteilsystem 600 unterhaltene Liste der ausgewählten Keimpixel nur das ursprüngliche Keimpixel (13, 6).
- Zu Beginn des Zyklus 2 empfängt das Auswahlteilsystem 608 als Eingangsgrößen das momentane Keimpixel (13, 6), die westliche Suchrichtung und die in Uhrzeigerrichtung ausgewählte Folgeausrichtung. Da dies der Nachbar in der westlichen Suchrichtung von dem momentanen Keimpixel (13, 6) ist, stellt die Einrichtung 702 nach Fig. 7 den momentanen Nachbarn als das Pixel (12, 6) ein. Da der momentane Nachbar (12, 6) ein dunkles Pixel und das momentane Keimpixel (13, 6) ein helles Pixel ist, sind sie keine ähnlichen Pixel, wobei die Einrichtung 704 die Verarbeitung zur Einrichtung 708 lenkt.
- Dadurch, daß die Einrichtung 708 um das momentane Keimpixel (13, 6) in Uhrzeigerrichtung herumläuft, wählt sie das Pixel (12, 7) als den nächsten Nachbarn aus. Da der nächste Nachbar (12, 7) hell ist, ist der nächste Nachbar (12, 7) nicht ähnlich zu dem momentanen Nachbarn (12, 6), wobei die Einrichtung 710 die Verarbeitung zur Einrichtung 714 lenkt. Da der nächste Nachbar (12, 7) ähnlich zu dem momentanen Keimpixel (13, 6) ist, lenkt die Einrichtung 714 die Verarbeitung zur Einrichtung 716, die den nächsten Nachbarn (12, 7) als das nächste Keimpixel auswählt. Wie der Zyklus 2 nach Fig. 8 widerspiegelt, kehrt die Verarbeitung dann zum Aktualisieren der Liste der ausgewählten Keimpixel durch Hinzufügen des nächsten Keimpixels (12, 7) zur Einrichtung 610 des Lokalisierungsteilsystems 600 zurück. Die Einrichtung 612 wählt dann das nächste Keimpixel (12, 7) als das momentane Keimpixel aus. Da die Liste der ausgewählten Keimpixel nur 2 Pixel lang, d. h. kürzer als der zweckmäßige ausgewählte Schwellwert von 5 Pixeln, ist, lenkt die Einrichtung 614 die Verarbeitung zurück zum Auswahlteilsystem 608.
- Im Zyklus 3 verwendet die Einrichtung 702 des Auswahlteilsystems 608 das momentane Keimpixel (13, 7) und die westliche Suchrichtung zum Auswählen des momentanen Nachbarn (11, 7). Nachdem die Einrichtung 704 ermittelt, daß der momentane Nachbar (11, 7) nicht ähnlich zu dem momentanen Keimpixel (12, 7) ist, wählt die Einrichtung 708 den nächsten Nachbarn (11, 8) dadurch aus, daß sie von dem momentanen Nachbarn (11, 7) in Uhrzeigerrichtung um das momentane Keimpixel (12, 7) herumläuft. Da der nächste Nachbar (11, 8) ähnlich zu dem momentanen Nachbarn (11, 7) ist, lenkt die Einrichtung 710 die Verarbeitung zur Einrichtung 712, die den momentanen Nachbarn als den nächsten Nachbarn (11, 8) einstellt. Die Verarbeitung kehrt dann zur Einrichtung 708 zurück, die den nächsten Nachbarn (12, 8) dadurch auswählt, daß sie von dem momentanen Nachbarn (11, 8) in Uhrzeigerrichtung um das momentane Keimpixel (12,7) herumläuft. Da der nächste Nachbar (12, 8) nicht ähnlich zu dem momentanen Nachbarn (11, 8) ist, lenkt die Einrichtung 710 die Verarbeitung nun zur Einrichtung 714, die ihrerseits ermittelt, daß der nächste Nachbar (12, 8) ähnlich zu dem momentanen Keimpixel (12, 7) ist. Die Einrichtung 716 stellt dann das nächste Keimpixel als den nächsten Nachbarn (12, 8) ein.
- Wie Zyklus 3 nach Fig. 8 widerspiegelt, aktualisiert dann die Einrichtung 610 die Liste der Keimpixel durch Hinzufügen des nächsten Keimpixels (12, 8), während die Einrichtung 612 das momentane Keimpixel als das nächste Keimpixel (12, 8) einstellt. Da die Liste der ausgewählten Keimpixel immer noch kürzer als der ausgewählte Schwellwert von 5 Pixeln ist, gibt die Einrichtung 614 die Verarbeitung wieder an die Einrichtung 608 zurück.
- Ähnlich wählt das Auswahlteilsystem 608 in den Zyklen 4 und 5 die Pixel (11, 9) und (10, 10) als die nächsten zwei Keimpixel aus, während die Einrichtung 610, wie Fig. 8 widerspiegelt, die Liste der ausgewählten Keimpixel aktualisiert. Im Zyklus 5 ermittelt die Einrichtung 614, daß die Liste der ausgewählten Keimpixel nicht mehr kürzer als der ausgewählte Schwellwert von 5 Pixeln ist und lenkt die Verarbeitung zur Einrichtung 616, die den momentanen Vektor von (-3, 4) dadurch erzeugt, daß sie den Vektor vom ersten Keimpixel (13, 6) in der Liste zum letzten Keimpixel (10, 10) in der Liste, wie Zyklus 5 von Fig. 8 widerspiegelt, in den Ursprung verschiebt. Der momentane Vektor (-3, 4) zeigt, daß das Fortschreiten vom Pixel (13, 6) zum Pixel (10, 10) ein westliches Verschieben um 3 Pixel und ein nördliches Verschieben um 4 Pixel erfordert.
- Da der momentane Vektor (-3, 4) der erste für die ausgewählte Folgeausrichtung in Uhrzeigerrichtung durch das Lokalisierungsteilsystem 600 erzeugte Vektor ist, lenkt die Einrichtung 618 die Verarbeitung zur Einrichtung 620, die den momentanen Vektor (-3, 4) als den Referenzvektor sichert. Da der momentane Vektor (-3, 4) völlig gleich zu dem Referenzvektor (-3, 4) ist, berechnet die Einrichtung 622, wie der Zyklus 5 aus Fig. 8 widerspiegelt, eine Vektordifferenzgröße von 0.
- Da die Größe 0 kleiner als der in dem Beispiel nach Fig. 5 als 2,5 vorausgesetzte ausgewählte dritte Schwellwert ist, gibt die Einrichtung 624 die Verarbeitung während des Zyklus 6 an das Auswahlteilsystem 608 zurück. Für den Fachmann auf dem Gebiet ist selbstverständlich, daß der für den dritten Schwellwert ausgewählte Wert empirisch offline durch Testen des Lokalisierungsteilsystem 600 unter Verwendung verschiedener Werte für den dritten Schwellwert zum Verarbeiten von Bildern, die bekannte Bar-Code-Symbole enthalten, ermittelt werden kann.
- Im Zyklus 6 wählt das Auswahlteilsystem 608 unter Verwendung des momentanen Keimpixels (10, 10) als nächstes Keimpixel (9, 11) aus, während die Einrichtung 610 die Liste der ausgewählten Keimpixel dadurch aktualisiert, daß sie, wie Fig. 8 widerspiegelt, das erste Keimpixel (13, 6) löscht und das nächste Keimpixel (9, 11) hinzufügt. Die Einrichtung 616 erzeugt den momentanen Vektor (-3, 4), während die Einrichtung 622 die Größe 0 berechnet und die Einrichtung 624 die Verarbeitung während des Zyklus 7 zurück zu dem Auswahlteilsystem 608 lenkt. Ähnlich wählt das Auswahlteilsystem 608 in den Zyklen 7, 8 und 9 die Pixel (9, 12), (8, 13) bzw. (7, 14) als die nächsten drei Keimpixel aus, während die Einrichtung 610 die Liste der ausgewählten Keimpixel aktualisiert, die Einrichtung 616 die momentanen Vektoren (-3, 4) erzeugt und die Einrichtung 624 die Verarbeitung während des nächsten Zyklus zurück zu dem Auswahlteilsystem 608 lenkt.
- Im Zyklus 10 stellt die Einrichtung 702 des Auswahlteilsystems 608 auf der Grundlage des momentanen Keimpixels (7, 14) den momentanen Nachbarn als den westlichen Nachbarn (6, 14) ein. Da der momentane Nachbar (6, 14) hell ist, ist er ähnlich zu dem momentanen Keimpixel (7, 14), wobei die Einrichtung 704 die Verarbeitung zur Einrichtung 706 lenkt, die die ausgewählte Folgeausrichtung vorübergehend umkehrt. Da die ausgewählte Folgeausrichtung in Uhrzeigerrichtung war, wählt die Einrichtung 706 vorübergehend die Richtung entgegen der Uhrzeigerrichtung als die Folgeausrichtung aus. Die Einrichtung 708 wählt dann den nächsten Nachbarn (6, 13) dadurch aus, daß sie von dem momentanen Nachbarn (6, 14) um das momentane. Keimpixel (7, 14) entgegen der Uhrzeigerrichtung herumläuft. Da der nächste Nachbar (6, 13) dunkel ist, ist er nicht ähnlich zu dem momentanen Nachbarn (6, 14), wobei die Einrichtung 710 die Verarbeitung zur Einrichtung 714 lenkt. Da der nächste Nachbar (6, 13) außerdem nicht ähnlich zu dem momentanen. Keimpixel (7, 14) ist, lenkt die Einrichtung 714 die Verarbeitung zur Einrichtung 718, die das nächste Keimpixel als den momentanen Nachbarn (6, 14) einstellt. Die Einrichtung 610 aktualisiert dann die Liste der ausgewählten Keimpixel, wobei dann die Einrichtung 616, wie der Zyklus 10 von Fig. 8 widerspiegelt, den momentanen Vektor (-3, 3) erzeugt. In diesem Fall berechnet die Einrichtung 622 eine Größe von 1,0, die die Größe der Vektordifferenz zwischen dem momentanen Vektor (-3, 3) und dem Referenzvektor (-3, 4) darstellt. Da die Größe 1,0 kleiner als der ausgewählte dritte Schwellwert von 2,5 ist, lenkt die Einrichtung 624 die Verarbeitung dann während des Zyklus 11 zurück zu dem Auswahlteilsystem 608.
- Ähnlich wählt das Auswahlteilsystem 608 im Zyklus 11 das nächste Keimpixel (5, 13) aus, während die Einrichtung 610 die Liste der ausgewählten Keimpixel aktualisiert, die Einrichtung 616 die momentanen 'Vektoren (-4, 1) erzeugt und die Einrichtung 622, wie der Zyklus 11 von Fig. 8 widerspiegelt, eine Größe von 3,2 berechnet. Die Einrichtung 624 ermittelt dann, daß die Größe 3,2 nicht kleiner als der ausgewählte dritte Schwellwert von 2,5 ist und lenkt die Verarbeitung zur Einrichtung 626. Die Einrichtung 626 wählt das der erfaßten Ecke entsprechende Pixel aus. Um sicherzustellen, daß der durch die vier durch das Lokalisierungsteilsystem 112 identifizierten Ecken definierte Bereich das gesamte lokalisierte Bar- Code-Symbol enthält, wählt die Einrichtung 626 des Lokalisierungsteilsystems 600 zweckmäßig ein Pixel außerhalb der eigentlichen Ecke des Außenstrichs des Start/Stopp- Zeichens als die erfaßte Ecke aus. In dem Beispiel nach Fig. 5 kann die Einrichtung 626 das Pixel (7, 15) als die erste dem Punkt 214 nach Fig. 2 entsprechende Ecke da durch, daß sie von dem letzten ausgewählten Keimpixel (5, 13) zwei Pixel nördlich und zwei Pixel östlich läuft, auswählen
- Wenn die Suchrichtung westlich und die ausgewählte Folge in Uhrzeigerrichtung ist, lokalisiert das Lokalisierungsteilsystem 600 die nordöstliche Ecke eines Bar-Code- Symbols, während die Einrichtung 626 von dem letzten ausgewählten Keimpixel 2 Pixel nördlich und 2 Pixel östlich läuft, um die Auswahl eines das gesamte Bar-Code- Symbol umfassenden Eckpixels sicherzustellen. Wenn die Suchrichtung westlich und die ausgewählte Folge entgegen der Uhrzeigerrichtung ist, lokalisiert das Lokalisierungsteilsystem 600 ähnlich die südwestliche Ecke, während die Einrichtung 626 südlich und östlich läuft. Wenn die Suchrichtung östlich und die ausgewählte Folge in Uhrzeigerrichtung ist, lokalisiert das Lokalisierungsteilsystem 600 die südwestliche Ecke, während die Einrichtung 626 südlich und westlich läuft. Die Einrichtung 626 kann in diesen Richtungen um andere Anzahlen von Pixeln einschließlich null laufen.
- Nach der Auswahl des ersten Eckpixels ermittelt die Einrichtung 628, daß bisher nur ein Eckpixel ausgewählt worden ist, wobei die Einrichtung 630 dann die Folgeausrichtung entgegen der Uhrzeigerrichtung auswählt. Im Zyklus 12 beginnt das Lokalisierungsteilsystem 600 das Verfahren des Lokalisierens der zweiten Ecke unter Verwendung der Folgeausrichtung entgegen der Uhrzeigerrichtung dadurch, daß es zur Einrichtung 604, die das momentane Keimpixel zurück auf das ursprüngliche Keimpixel (13, 6) einstellt, und zur Einrichtung 606, die die Liste der ausgewählten Keimpixel, wie Fig. 8 widerspiegelt, nur mit dem ursprünglichen Keimpixel (13, 6) wieder von vorn beginnt, zurückkehrt. Das Lokalisierungsteilsystem 600 setzt die Verarbeitung ähnlich zu der zum Lokalisieren der ersten Ecke fort, bis die zweite Ecke lokalisiert ist, wobei die Einrichtung 628 zu diesen Zeitpunkt ermittelt, daß beide Ecken lokalisiert wurden und die Verarbeitung des Lokalisierungsteilsystems 600 abgeschlossen ist.
- Für den Fachmann auf dem Gebiet ist selbstverständlich, daß die Ecken-Lokalisierungs-Teilsysteme zum Lokalisieren der Ecken von Artefakten in anderen Pixelbildern als Bar- Code-Symbolen verwendet werden können. Solche Artefakte können eine andere Form als die eines Rechtecks mit rechtwinkligen Ecken haben.
- In Fig. 9 ist nun ein Prozeßablaufplan eines Bar-Code- Symbol-Decodierteilsystems 114 des Erfassungssystems 100 zum Decodieren eines Bar-Code-Symbols gezeigt. Falls das Vier-Ecken-Lokalisierungsteilsystem 112 des Erfassungssystems 100 nach Fig. 1 alle vier Ecken eines erfaßten Bar- Code-Symbols lokalisiert, decodiert das Decodierteilsystem 114 das Symbol dadurch, daß es die Folge der als Striche und Zwischenräume in dem Bar-Code-Symbol codierten alphanumerischen Zeichen ermittelt. Die alphanumerischen Zeichen können irgendein mögliches Zeichen sein und sind nicht nur auf Ziffern und Buchstaben des englischen Alphabets beschränkt. Das Decodierteilsystem 114 wählt eine Referenzlinie über dem zufällig ausgerichteten Bar- Code-Symbol aus und decodiert das Symbol durch Voranschreiten längs der Referenzlinie.
- Für jene Symbologien mit Prüfsummenzeichen wie etwa für den Code 128 wählt das Decodierteilsystem 114 für jedes Symbolzeichen eine oder mehrere alphanumerische Zeichenwahlen aus. Das Decodierteilsystem 114 führt dann eine. Prüfsummenuntersuchung auf Sätzen der von diesen Zeichenwahlen ausgewählten alphanumerischen Zeichen aus. Wenn ein Zeichensatz der Prüfsummenuntersuchung genügt, wird dieser Zeichensatz als das Ergebnis der Decodierung des Bar-Code-Symbols ausgewählt. Falls keiner der Zeichensätze der Prüfsummenuntersuchung genügt, wählt das Decodierteilsystem 114 eine weitere Referenzlinie aus, für die das Verfahren des Decodierens und Prüfens wiederholt wird. Das Decodierteilsystem 114 fährt mit dem Auswählen von Referenzlinien fort, bis die Prüfsummenuntersuchung erfüllt ist oder bis eine besondere Haltebedingung auftritt. In Abhängigkeit von den Anforderungen der besonderen Anwendung kann die Haltebedingung eine besondere Auflösung zwischen den Referenzlinien, eine besondere Anzahl von Referenzlinien oder eine besondere Verarbeitungsdauer sein.
- Für jene Symbologien, die keine Prüfsummenzeichen besitzen, wählt das Decodierteilsystem 114 für jedes Symbolzeichen eine beste alphanumerische Zeichenwahl aus. Jede dieser Wahlen besitzt eine entsprechende statistische Sicherheit. Falls jede Wahl in dem Satz der besten Wahlen auf der Grundlage der statistischen Sicherheiten "gut genug" ist, wählt das Decodierteilsystem 114 diesen Satz als das Decodierergebnis für das Bar-Code-Symbol aus. Falls eine oder mehrere Wahlen nicht gut: genug sind, wählt das Decodierteilsystem 114 eine weitere Referenzlinie aus, für die das Verfahren des Decodierens wiederholt wird, wobei die besten Auswahlen von jeder Referenzlinie gesichert werden. Die Auswahl der Referenzlinien wird fortgesetzt, bis jede Wahl gut genug ist oder bis die besondere Haltebedingung eintritt.
- In Fig. 10 ist nun eine graphische Darstellung eines Pixelbildes 1000 gezeigt, das ein verschlechtertes Bar- Code-Symbol 1002 enthält. Das Bar-Code-Symbol 1002 ist ein Code 128-Symbol, das die Daten "CODE 128" codiert. Außer den acht Datenzeichen enthält das Bar-Code-Symbol 1002 ein Startzeichen, ein Stopp-Zeichen, von dem angenommen wird, daß es den Abschlußstrich enthält, sowie ein Prüfsummenzeichen. Das Prüfsummenzeichen stellt den Wert 84 dar, der dem Ergebnis der Ausführung der entsprechenden Code 128-Prüfsummenberechnung an den acht Datenzeichen des Bar-Code-Symbols 1002 entspricht. Das Prüfsummenzeichen kann zum Überprüfen der Richtigkeit der Decodierung des Bar-Code-Symbols 1002 verwendet werden.
- Das Bar-Code-Symbol 1002 ist in den Bereichen 1004, 1006 und 1008 verschlechtert. Die Verschlechterungen können Striche und Zwischenräume dünner oder dicker als beabsichtigt erscheinen lassen. Solche Abweichungen von den beabsichtigten Dicken können zu Fehlern beim Decodieren des Bar-Code-Symbols 1002 längs der über die verschlechterten Bereiche verlaufenden Referenzlinien führen.
- Wiederum mit Bezug auf Fig. 9 empfängt das Decodierteilsystem 114 als Eingangsgrößen die vier durch das Vier- Ecken-Lokalisierungsteilsystem 112 lokalisierten Ecken des Bar-Code-Symbols. Die Einrichtung 902 wählt dann eine erste Referenzlinie über dem Bar-Code-Symbol aus. Im allgemeinen verläuft eine Referenzlinie über einem Bar- Code-Symbol zweckmäßig senkrecht zu den Strichen und Zwischenräumen dieses Bar-Code-Symbols. Somit beginnt eine Referenzlinie in einer Ruhezone und endet in der anderen Ruhezone des Bar-Code-Symbols. Zweckmäßig ist die erste Referenzlinie die früher in Verbindung mit den Fig. 2 und 4 erwähnte durch die Mitte des Bar-Code-Symbols verlaufende senkrecht schneidende Linie.
- In dem Beispiel nach Fig. 10 empfängt das Decodierteilsystem 114 als Eingangsgrößen die Ecken 101(), 1012, 1014 und 1016, die einen Bereich des Pixelbildes 1000 definieren, der das Bar-Code-Symbol 1002 enthält. Die Einrichtung 902 wählt die Referenzlinie 1018 als die erste Referenzlinie zum Decodieren des Bar-Code-Symbols 1002 aus.
- 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 Bar- Code-Symbols 1002 und der Punkt 1022 der Mittelpunkt zwischen den Ecken 1014 und 1016 am anderen Ende des Bar- Code-Symbols 1002 ist.
- Das Schritt-Teilsystem 904 führt dann die Unterpixelinterpolation des Bar-Code-Symbols 1002 längs der mit der Referenzlinie 1018 verknüpften Suchschritte aus. Das Schritt-Teilsystem 904 und die Unterpixelinterpolation werden später in dieser Beschreibung in Verbindung mit den Fig. 11, 14 und 15 ausführlicher beschrieben. Jedes Symbolzeichen des Bar-Code-Symbols 1002 ist ein Satz von Strichen und Zwischenräumen, die ein alphanumerisches Zeichen darstellen. Das Schritt-Teilsystem 904 wählt eines oder mehrere alphanumerische Zeichen aus, um diese mit jedem Symbolzeichen des Bar-Code-Symbols 1002 zu verknüpfen. Außerdem ordnet das Schritt-Teilsystem 904 für jedes Symbolzeichen jedem ausgewählten alphanumerischen Zeichen eine statistische Sicherheit zu, die angibt, wie "sicher" das Teilsystem 904 ist, daß das Symbolzeichen tatsächlich das ausgewählte alphanumerische Zeichen darstellt.
- Zum Beispiel kann das Schritt-Teilsystem 904 unter Verwendung der Referenzlinie 1018 ermitteln, daß das erste Datenzeichen des Bar-Code-Symbols 1002, wie in Tabelle I dargestellt ist, mit dem alphanumerischen Zeichen "C" verknüpft werden sollte. Dieser Zeichenauswahl wird dann eine besondere statistische Sicherheit zugeordnet. Das Schritt-Teilsystem 904 kann außerdem bestimmen, daß das zweite Datenzeichen mit dem alphanumerischen Zeichen "0"· zu verknüpfen ist, dem seine eigene statistische Sicherheit zugeordnet wird. TABELLE I DATENZEICHEN
- Da das Bar-Code-Symbol 1002 in den Bereichen 1004 und 1006 verschlechtert ist, ist es möglich, daß das Schritt- Teilsystem 904 unter Verwendung der Referenzlinie 1018 für jedes der anderen Datenzeichen eine oder mehrere alphanumerische Zeichenwahlen erzeugt. Da die Referenzlinie 1018 durch den verschlechterten Bereich 1004 bei dem zweiten Datenzeichen verläuft, kann das Schritt-Teilsystem 904 für das zweite Datenzeichen des Bar-Code-Symbols 1002 z. B. eine erste oder beste Wahl von "O" und eine zweitbeste Wahl von "W" erzeugen. Die relativen Werte der zugewiesenen statistischen Sicherheiten können angeben, daß das Schritt-Teilsystem 904 "sicherer ist", daß das zweite Datenzeichen tatsächlich das alphanumerische Zeichen "O" darstellt, als daß es tatsächlich das alphanumerische Zeichen "W" darstellt. Ähnlich kann das Schritt-Teilsystem 904 für das vierte Datenzeichen des Bar-Code-Symbols 1002 infolge der ungünstigen Ergebnisse des verschlechterten Bereichs 1006 eine beste, eine zweitbeste und eine drittbeste Wahl "7", "L" bzw. "E" erzeugen.
- Wenn die erste Referenzlinie ausgewählt ist, erzeugt die Einrichtung 906 eine Zeichentabelle der alphanumerischen- Zeichen und der durch das Schritt-Teilsystem 904 zugeordneten statistischen Sicherheiten. Jede Spalte der Zeichentabelle entspricht einem anderen Symbolzeichen, wobei jede Spalte die mit diesem Symbolzeichen verknüpften von der höchsten Sicherheit zur niedrigsten Sicherheit, d. h. von der besten Wahl zur schlechtesten Wahl, angeordneten alphanumerischen Zeichen enthält.
- Nachdem die Einrichtung 906 die Zeichentabelle erzeugt hat, wählt die Einrichtung 908 aus der Zeichentabelle einen Zeichensatz aus. Zuerst wählt die Einrichtung 908 aus der Zeichentabelle den Satz der Zeichen erster Wahl aus. Jedes Zeichen in diesem Satz der Zeichen erster Wahl ist für jedes in der Zeichentabelle dargestellte Symbolzeichen die beste oder erste Wahl, d. h. das alphanumerische Zeichen mit der höchsten Sicherheit.
- Die Einrichtung 910 führt dann eine Prüfsummenberechnung an diesem ausgewählten Satz alphanumerischer Zeichen aus und vergleicht das Ergebnis mit dem Prüfsummenzeichen. Wenn die Einrichtung 910 ermittelt, daß das Prüfsummenergebnis mit dem Prüfsummenzeichen übereinstimmt, ist das Bar-Code-Symbol decodiert, wobei die Verarbeitung des Decodierteilsystems 114 abgeschlossen ist. Andernfalls ist die Prüfsummenuntersuchung nicht erfüllt, wobei die Einrichtung 912 ermittelt, ob die Zeichentabelle irgendwelche weiteren zu prüfenden Sätze von Zeichenauswahlen enthält. Wenn das der Fall ist, wählt die Einrichtung 908 für die Prüfsummenuntersuchung durch die Einrichtung 910 einen nächsten Zeichensatz aus der Zeichentabelle aus.
- Wie oben beschrieben wurde, kann jedes Symbolzeichen eines oder mehrere in der Zeichentabelle zugeordnete alphanumerische Zeichen besitzen. Das Decodierteilsystem 114 kann andere Sätze alphanumerischer Zeichen als den Zeichensatz erster Wahl mit dem Prüfsummenzeichen vergleichen. Mit Ausnahme eines Symbolzeichens, das durch eine seiner anderen Wahlen dargestellt wird, besteht jeder dieser anderen Zeichensätze für jedes Symbolzeichen aus dem alphanumerischen Zeichen erster Wahl. Das Decodierteilsystem 114 vergleicht diese anderen Zeichensätze, bis es einen findet, der der Prüfsummenuntersuchung genügt.
- Falls keine weiteren Zeichensätze zu prüfen sind, ermittelt die Einrichtung 914, ob irgendwelche weiteren Referenzlinien auszuwählen sind. In Abhängigkeit von den Anforderungen der besonderen Anwendung kann die Auswahl der Referenzlinien je nach gewünschtem Kriterium fortgesetzt werden, bis eine besondere Auflösung zwischen den Referenzlinien erreicht wurde oder bis eine besondere Anzahl von Referenzlinien ausgewählt wurde oder bis eine besondere Verarbeitungszeit abgelaufen ist. Zum Decodieren eines erfaßten Bar-Code-Symbols können bis zu drei Referenzlinien ausgewählt werden. Falls weitere Referenzlinien vorhanden sind, wählt die Einrichtung 902 eine nächste Referenzlinie für die weitere Unterpixelinterpolation durch das Schritt-Teilsystem 904 aus. Andernfalls sind alle Referenzlinien ausgewählt worden, wobei das Decodieren des Bar-Code-Symbols durch das Decodierteilsystem 902 mißlingt.
- In dem Beispiel nach Fig. 10 kann die Tabelle I die durch die Einrichtung 906 unter Verwendung der Referenzlinie 1018 erzeugten Zeichenauswahlen darstellen. Die Einrichtung 908 wählt zunächst den dem Zeichensatz ("C", "O", "D", "7", Zwischenraum, "1", "2", "8", "84") entsprechenden Satz der Zeichen erster Wahl aus. Die Einrichtung 910 .führt dann an dem ausgewählten Zeichensatz die Prüfsummenuntersuchung aus. Da das Prüfsummenergebnis der Einrichtung 910 nicht mit dem Prüfsummenzeichen "84" übereinstimmt, ist die Prüfsummenuntersuchung nicht erfüllt: Die Einrichtung 912 ermittelt dann, ob die Zeichentabelle irgendwelche weiteren Zeichensätze enthält. Falls der Satz der Zeichen erster Wahl die Prüfsummenuntersuchung in dem Decodierteilsystem 114 nicht besteht, werden die ausgewählten weiteren Zeichensätze geprüft.
- Nachdem der Zeichensatz erster Wahl die Prüfsummenuntersuchung nicht besteht, ermittelt die Einrichtung 912, daß es in der Zeichentabelle weitere Zeichensätze gibt, wobei die Einrichtung 908 einen weiteren Zeichensatz aus der Zeichentabelle auswählt. In dem Beispiel nach Tabelle I kann die Einrichtung 908 als den nächsten zu prüfenden Zeichensatz {"C", "W", "D", "7", Zwischenraum, "1", "2", "8", "84"} auswählen. Mit Ausnahme des Datenzeichens Nr. 2, für das die zweite Wahl ausgewählt wird, stellt dieser Satz für jedes Symbolzeichen die erste Wahl dar. Die Einrichtung 910 führt an diesen Zeichensatz die Prüfsummenberechnung aus und ermittelt, daß er die Prüfsummenuntersuchung ebenfalls nicht besteht. Die Einrichtung 912 ermittelt wiederum, daß der ausgewählte Zeichensatz nicht der letzte Zeichensatz ist, wobei die Einrichtung 908 als den nächsten Zeichensatz {"C", "O", "D", "L" Zwischenraum "1" "2" "8" "84"} auswählen kann.
- Auch dieser Zeichensatz besteht die Prüfsummenuntersuchung der Einrichtung 910 nicht, wobei dann durch die Einrichtung 908 als der nächste Zeichensatz {"C", "O", "D", "E", Zwischenraum, "1", "2", "8", "84"} ausgewählt wird.
- Da { "C" "O" "D" "E" Zwischenraum "1" "2" "8" "84"} der richtige Zeichensatz ist, genügt er der Prüfsummenuntersuchung der Einrichtung 910, d. h., das Ergebnis der an den Datenzeichen dieses Zeichensatzes ausgeführten Prüfsummenberechnung ist "84", der Wert des Prüfsummenzeichens. An dieser Stelle ist das Bar-Code- Symbol 1002 decodiert, wobei die Verarbeitung des Decodierteilsystems 114 abgeschlossen ist. Falls sich jedoch aus irgendeinem Grund herausstellte, daß der Bereich 1006 für die Referenzlinie 1018 so sehr verschlechtert war, daß keiner der durch die Einrichtung 908 ausgewählten Zeichensätze die Prüfsummenuntersuchung besteht, ermittelt die Einrichtung 914, ob irgendwelche weiteren Referenzlinien zum Decodieren des Bar-Code-Symbols 1002 verwendet werden können. Die Anzahl der zu verwendenden Referenzlinien kann durch die Verarbeitungsanforderungen der besonderen Anwendung vorgeschrieben werden. Es können bis zu 20 Referenzlinien ausgewählt werden.
- Nachdem die Einrichtung 914 ermittelt hat, daß die Referenzlinie 1018 nicht die letzte auszuwählende Referenzlinie ist, kann die Einrichtung 902 die Referenzlinie 1024 als die nächste Referenzlinie auswählen, wobei die Referenzlinie 1024 zweckmäßig die Linie in der Mitte zwischen der Referenzlinie 1018 und der durch die Ecken 1010 und 1016 definierten Linie ist. Das Schritt-Teilsystem 904 decodiert dann durch Voranschreiten längs der Referenzlinie 1024. Wie zuvor kann diese Decodierung für jedes Symbolzeichen in dem Bar-Code-Symbol 1002 zu einem oder zu mehreren alphanumerischen Zeichen und zugeordneten statistischen Sicherheiten führen. Die Einrichtung 906 aktualisiert dann die Zeichentabelle unter Verwendung der Ergebnisse für die Referenzlinie 1024 und der zuvor für die Referenzlinie 1018 erzeugten Ergebnisse.
- Wie später in dieser Beschreibung in. Verbindung mit Fig. 11 ausführlicher beschrieben wird, sind die statistischen Sicherheiten Abstandsmaße, die die Abweichungen von den idealen Zeichen widerspiegeln. Eine kleine statistische Sicherheit besagt als solches eine kleinere Abweichung von einem idealen alphanumerischen Zeichen und ein höheres Sicherheitsniveau, daß dieses ideale alphanumerische Zeichen das richtige Zeichen ist. Zweckmäßig aktualisiert die Einrichtung 906 die Zeichentabelle dadurch, daß sie für jede alphanumerische Wahl gemäß der Gleichung:
- 1/R = Σ 1/Ri, (1)
- 1
- wobei die R1 die statistischen Sicherheiten für diese alphanumerische Wahl unter Verwendung verschiedener Referenzlinien sind, eine effektive statistische Sicherheit R erzeugt. Die Zeichentabelle wird dann dadurch aktualisiert, daß die Wahlen gemäß ihren effektiven statistischen Sicherheiten angeordnet werden.
- Zum Beispiel wird angenommen, daß unter Verwendung der ersten Referenzlinie für eines der Symbolzeichen in einem Bar-Code-Symbol zwei alphanumerische Wahlen erzeugt werden: der Buchstabe "A" mit einer statistischen Sicherheit von 0,5 und der Buchstabe "B" mit einer statistischen Sicherheit von 0,8. Da "A" die kleinere statistische Sicherheit besitzt, ist nach dieser ersten Referenzlinie "A" die erste Wahl und "B" die zweite Wahl. Es wird weiter angenommen, daß die Verwendung der zweiten Referenzlinie zu zwei weiteren Wahlen für das gleiche Symbolzeichen führt: "B" mit einer statistischen Sicherheit von 0,8 und "C" mit einer statistischen Sicherheit von 0,6. In diesem Fall aktualisiert die Einrichtung 906 die Zeichentabelle für dieses Symbolzeichen dadurch, daß sie "A" mit einer statistischen Sicherheit von 0,5 erhält, "C" mit einer statistischen Sicherheit von 0,6 hinzufügt und die statistische Sicherheit R für "B" unter Verwendung von Gleichung (1) mit:
- 1/R = 1/0,8 + 1/0,8 (2)
- auf 0,4 aktualisiert. Da "B" nun die kleinste effektive statistische Sicherheit besitzt, wird es in der Zeichentabelle die erste Wahl, gefolgt von "A" und "C". Für den Fachmann auf dem Gebiet ist selbstverständlich, daß die Zeichentabelle unter Verwendung alternativer Verfahren aktualisiert werden kann.
- Die aktualisierte Zeichentabelle wird dann wie zuvor beschrieben durch die Einrichtungen 908, 910 und 912 verarbeitet. Falls keiner der durch die Einrichtung 908 aus der aktualisierten Zeichentabelle ausgewählten Zeichensätze die Prüfsummenuntersuchung erfüllt, kann eine weitere Referenzlinie 1026 ausgewählt und das Verfahren des Abschreitens, Aktualisierens und Untersuchens der Prüfsumme wiederholt werden.
- Das Prüfsummenzeichen in der Zeichentabelle wird nur durch ein alphanumerisches Zeichen erster Wahl dargestellt. In einer alternativen Anordnung kann das Prüfsummenzeichen eine oder mehrere Wahlen außer der ersten Wahl haben. In diesen Fällen kann das Prüfsummenzeichen beim Erzeugen der Zeichensätze für die Prüfsummenuntersuchung wie irgendein anderes Zeichen behandelt werden.
- In Fig. 11 ist nun ein Prozeßablaufplan des Schritt- Teilsystems 904 des Bar-Code-Symbol-Decodierteilsystems 114 für das Abschreiten längs einer ausgewählten Referenzlinie und für das Decodieren eines Bar-Code-Symbols gezeigt. Da die durch das Erfassungssystem 100 zu erfassenden und zu decodierenden Bar-Code-Symbole relativ zu den Zeilen und Spalten aus Pixeln in dem Pixelbild zufällig ausgerichtet sein können, sind die durch das Decodierteilsystem 114 ausgewählten Referenzlinien typischerweise nicht auf die Pixelzeilen oder -spalten ausgerichtet.
- Um den Informationsinhalt dieser Pixelbilder zu erhalten, decodiert das Decodierteilsystem 114 die Bar-Code-Symbole durch Ausführen einer Unterpixelinterpolation längs einer Reihe von Suchschritten. Jeder Suchschritt ist ein an dem Schnittpunkt der Pixelzeile oder -spalte und der ausgewählten Referenzlinie beginnender Abschnitt einer Pixelzeile oder -spalte. Wenn die Referenzlinie auf die Pixel zeilen des Pixelbildes mit einer Winkelgröße von weniger als 45º ausgerichtet ist, sind die Suchschritte Abschnitte von Pixelzeilen. Andernfalls sind die Suchschritte Abschnitte von Pixelspalten.
- In Fig. 12 ist nun eine graphische Darstellung eines eine Ruhezone 1204 und einen Abschnitt des Bar-Code-Symbols 1202 enthaltenden Pixelbildes 1200, das nicht entweder auf die Pixelzeilen oder -spalten des Pixelbildes 1200 ausgerichtet ist, gezeigt. Das Bar-Code-Symbol 1202 umfaßt die Striche 1206 bis 1214 sowie die Zwischenräume 1216 bis 1224. Außerdem zeigt die Fig. 12 die Referenzlinie 1226 sowie die Suchschritte 1228 bis 1242. Die Referenzlinie 1226 ist ähnlich zu den Referenzlinien 1018, 1024 und 1026 nach Fig. 10.
- In Fig. 13 ist nun eine graphische Darstellung der Pixelstärkeniveaus von 11 Pixeln in dem Suchschritt 1228 des Pixelbildes 1200 gezeigt. Jedes Pixel längs des Suchschritts 1228 besitzt ein entsprechendes Stärkeniveau, das seine Helligkeit darstellt. Zur Erleichterung der Erläuterung wird das Schritt-Teilsystem 904 im Kontext des Beispiels nach den Fig. 12 und 13 beschrieben.
- Das Schritt-Teilsystem 904 nach 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 zweckmäßig eine Zeile oder Spalte aus Pixeln, die die Referenzlinie bei dem Zustandsübergang zwischen einer Ruhezone und einem Start/Stopp-Zeichen des erfaßten Bar-Code-Symbols schneidet. Der Startpunkt ist zweckmäßig das dem Schnittpunkt entsprechende Pixel. In Fig. 10 kann der Punkt 1020 der Startpunkt des ersten Suchschritts unter Verwendung der Referenzlinie 1018 zum Decodieren des Bar-Code-Symbols 1002 sein. Ähnlich kann in Fig. 12 der Punkt 1244 der Startpunkt des ersten Suchschritts 1228 bei Verwendung der Referenzlinie 1226 zum Decodieren des Bar-Code-Symbols 1202 sein. Der Suchschritt 1228 bildet einen Abschnitt der die Referenzlinie 1226 im Punkt 1244 schneidenden Zeile der Pixel.
- Nachdem die Einrichtung 1102 den Startpunkt des ersten Suchschritts ausgewählt hat, führt die Einrichtung 1104 längs des ersten Suchschritts eine Unterpixelinterpolation zum Bestimmen eines Signalenergiewerts, der die Breite des ersten Strichs des Bar-Code-Symbols darstellt, aus. In dem Beispiel nach Fig. 12 führt die Einrichtung 1104 die Unterpixelinterpolation zum Bestimmen eines Signalenergiewerts für den Strich 1206 des Bar-Code- Symbols 1202 längs des Suchschritts 1228 aus. Je höher der Signalenergiewert ist, desto breiter ist das Symbolelement. Die Unterpixelinterpolation wird später in dieser Beschreibung in Verbindung mit den Fig. 14 und 15 weiter beschrieben.
- Die Einrichtung 1106 stellt den momentanen Suchschritt als den ersten Suchschritt ein. Die Einrichtung 1108 führt dann eine Unterpixelinterpolation für ein weiteres Element längs des momentanen Suchschritts aus, wobei die Elemente durch die Einrichtung 1108 in der Reihenfolge, in der sie in dem Bar-Code-Symbol erscheinen, untersucht werden. Die Einrichtung 1110 Ermittelt dann, ob die Unterpixelinterpolation für das nächste Element längs des momentanen Suchschritts auszuführen ist oder ob ein neuer momentaner Suchschritt auszuwählen ist. Wenn das vorletzte untersuchte Element breit genug ist, um von ihm zu projizieren, wird ein neuer momentaner Suchschritt ausgewählt. Wenn das letzte untersuchte Element z. B. ein Zwischenraum war, wird ein neuer momentaner Suchschrittzum Untersuchen des unmittelbar auf diesen Zwischenraum folgenden Strichs ausgewählt, falls der Strich, der diesem Zwischenraum unmittelbar vorausgeht, breit genug ist, um von ihm zu projizieren.
- Um dies zu ermitteln, vergleicht die Einrichtung 1110 den Signalenergiewert für das vorausgehende Symbolelement mit einem vierten Schwellwert. Der vierte Schwellwert entspricht zweckmäßig wenigstens dem Doppelten der Breite des schmalsten Bar-Code-Symbol-Elements. Falls die Einrichtung 1110 ermittelt, daß der Signalenergiewert für das vorletzte untersuchte Element größer als der vierte Schwellwert ist, wählt die Einrichtung 1112 den Startpunkt für einen neuen momentanen Suchschritt dadurch aus, daß sie von der Mitte des vorletzten untersuchten Elements auf die Referenzlinie projiziert. Andernfalls wählt die Einrichtung 1114 den Startpunkt längs des momentanen Suchschritts als die Mitte des vorletzten untersuchten Elements aus.
- Nachdem der Startpunkt entweder durch die Einrichtung 1112 oder durch die Einrichtung 1114 ausgewählt wurde, ermittelt die Einrichtung 1116 dadurch, daß sie prüft, ob die Ruhezone erreicht ist, ob das Voranschreiten längs der Referenzlinie abgeschlossen ist. Wenn das der Fall ist, erzeugt das Zeichenermittlungs-Teilsystem 1118 die mit jedem Symbolzeichen des Bar-Code-Symbols verknüpften alphanumerischen Zeichenwahlen und statistischen Sicherheiten. An diesem Punkt ist die Verarbeitung durch das Schritt-Teilsystem 904 abgeschlossen. Das Zeichenermittlungs-Teilsystem 1118 wird später in dieser Beschreibung .in Verbindung mit Fig. 16 weiter beschrieben.
- In dem Beispiel nach Fig. 12 kann die Einrichtung 1110 bestimmen, daß der Signalenergiewert für den Strich 1206 größer als der vierte Schwellwert ist. Die Einrichtung 1112 kann dann den Startpunkt 1246 des Suchschritts 1230 als den Startpunkt für den neuen momentanen Suchschritt dadurch auswählen, daß sie von dem Punkt 1248 des Suchschritts 1228 auf die Referenzlinie 1226 projiziert. Wo die Bar-Code-Symbol-Elemente z. B. eine minimale Breite von 0,015 Zoll haben, kann der vierte Schwellwert 0,030 Zoll entsprechen. Die Projektion von dem Suchschritt 1228 auf die Referenzlinie 1226 erfolgt zweckmäßig senkrecht zur Referenzlinie 1226. Wenn die Referenzlinie 1226 durch den Anstieg k und durch den Achsenabschnitt n gekennzeichnet wird und der Mittelpunkt 1248 durch den Punkt (x&sub1;, y&sub1;) dargestellt wird, ist die Projektionslinie von dem Mittelpunkt 1248 durch den Anstieg k&sub1; und durch den Achsenabschnitt n&sub1; mit:
- k&sub1; = -1/k (3)
- und
- n&sub1; = y&sub1; - k&sub1;x&sub1; (4)
- gekennzeichnet. Der Startpunkt 1246 kann durch den Punkt (x&sub2;, y&sub2;) mit:
- und
- y&sub2; = k&sub1;x&sub2; + n1 (6)
- dargestellt werden. Nachdem die Einrichtung 1116 ermittelt hat, daß die Ruhezone nicht erreicht worden ist, führt die Einrichtung 1108 eine Unterpixelinterpolation für den Strich 1208 längs des Suchschritts 1230 aus.
- Falls der Signalenergiewert für den Strich 1206 andernfalls nicht größer als der vierte Schwellwert ist, stellt die Einrichtung 1114 den Startpunkt für die Unterpixelinterpolation auf die Mitte des Strichs 1206 längs des momentanen Suchschritts 1228 ein. Nachdem die Einrichtung 1116 ermittelt hat, daß die Ruhezone nicht erreicht worden ist, berechnet die Einrichtung 1108 den Signalenergiewert für den Strich 1208 längs des momentanen Suchschritts 1228. Die Unterpixelinterpolation der nach folgenden Symbolelemente wird längs des Suchschritts 1228 fortgesetzt, bis das vorletzte untersuchte Element ein Strich oder ein Zwischenraum ausreichender Breite ist, wobei die Einrichtung 1112 in diesem Fall zum Auswählen des Startpunkts des neuen momentanen Suchschritts von der Mitte dieses Elements auf die Referenzlinie 1226 projiziert. Auf diese Weise ermittelt das Schritt-Teilsystem 904 die Signalenergiewerte für jedes Symbolelement des Bar-Code-Symbols 1202.
- In den Fig. 14 und 15 sind nun die Prozeßablaufpläne der Unterpixelinterpolations-Teilsysteme 1400 und 1500 zum Berechnen der Signalenergiewerte für die Striche bzw. Zwischenräume gezeigt. Wenn das zu untersuchende Bar- Code-Symbol-Element ein Strich ist, realisiert die Einrichtung 1108 des Schritt-Teilsystems 904 das Unterpixelinterpolations-Teilsystem 1400 zum Bestimmen eines Signalenergiewerts für den Bereich von der Mitte des dem Strich unmittelbar vorausgehenden Zwischenraums zur Mitte des dem Strich unmittelbar folgenden Zwischenraums. Wenn das zu untersuchende Symbolelement ein Zwischenraum ist, realisiert die Einrichtung 1108 ähnlich das Teilsystem 1500 zum Bestimmen eines Signalenergiewerts für den Bereich von der Mitte des dem Zwischenraum unmittelbar vorausgehenden Strichs zur Mitte des dem Zwischenraum unmittelbar folgenden Strichs.
- Wenn ein Strich zu untersuchen ist, lokalisiert die Einrichtung 1402 des Unterpixelinterpolations-Teilsystems 1400 ein erstes Spitzenniveau, das der Mitte des dem zu untersuchenden Strich unmittelbar vorausgehenden Zwischenraums entspricht. Bei der Untersuchung irgendeines von dem ersten Strich eines Bar-Code-Symbols verschiedenen Strichs stellt ein Spitzenniveau allgemein ein Pixelstärkeniveau-Maximum mit Bezug auf benachbarte Pixel dar. Bei der Untersuchung des ersten Strichs ist das erste Spitzenniveau zweckmäßig ein helles Pixel in der Nähe des Endes der an den ersten Strich angrenzenden Ruhezone. Die Einrichtung 1404 lokalisiert dann ein der Mitte des dem zu untersuchenden Strich unmittelbar folgenden Zwischenraums entsprechendes zweites Spitzenniveau. Die zwei Spitzenniveaus sind benachbarte kritische Punkte längs einer eindimensionalen Signalkurve, die einen in der Mitte des zu untersuchenden Strichs gelegenen Abschnitt des momentanen Suchschritts darstellt.
- Die Einrichtung 1406 berechnet dann die Fläche über der Graustufen-Signalkurve zwischen den zwei Spitzenniveaus durch numerisches Integrieren unter Verwendung der Pixelstärkeniveaus. Diese Fläche ist der Signalenergiewert des gerade untersuchten Strichs. Bei der Ausführung dieser Integrationsberechnung verwendet die Einrichtung 1406 zweckmäßig das maximale Pixelstärkeniveau von dem durch die Einrichtung 102 des Erfassungssystems 100 nach Fig. 1 erzeugten Histogramm als die obere Grenze für die Berechnung der Fläche über der Kurve. Im allgemeinen ist der Signalenergiewert bi für einen Strich durch:
- bi = (Imax - Ispitze Nr.1)/2 + Σ (Imax - Ip) + (Imax - ISpitze Nr.2)/2 (7)
- gegeben, wobei Imax das maximale Pixelstärkeniveau von dem Histogramm, ISpitze Nr. 1 das Pixelstärkeniveau des dem ersten Spitzenniveau entsprechenden Pixels, ISpitze Nr. 2 das Pixelstärkeniveau des dem zweiten Spitzenniveau entsprechenden Pixels und Ip die Pixelstärkeniveaus der längs des momentanen Suchschritts zwischen dem ersten und dem zweiten Spitzenniveau gelegenen Pixel sind.
- In dem Beispiel nach den Fig. 12 und 13 realisiert das Schritt-Teilsystem 904 das Unterpixelinterpolations Teilsystem 1400 längs des Suchschritts 1228 zum Bestimmen des Signalenergiewerts für den Strich 1206. Da der Strich 1206 der erste Strich in dem Bar-Code-Symbol 1202 ist, wählt die Einrichtung 1402 als das erste Spitzenniveau zweckmäßig ein Pixel in der Nähe des Endes der Ruhezone 1204 wie etwa das Pixel 2 in Fig. 13 aus. Die Einrichtung 1404 lokalisiert dann das in der Mitte des Zwischenraums 1216, unmittelbar nach dem Strich 1206 gelegene zweite Spitzenniveau. Die Einrichtung 1404 kann das Pixel 7 in Fig. 13 als das zweite Spitzenniveau auswählen. Die Einrichtung 1406 berechnet dann unter Verwendung der Gleichung (7) den Signalenergiewert für den Strich 1206. Zum Beispiel wird angenommen, daß das Histogramm für das Pixelbild, das das Bar-Code-Symbol 1202 enthält, zeigt, daß das maximale Pixelstärkeniveau Imax 240 beträgt. Der Signalenergiewert b&sub1; für den Strich 1206 wird dann von der Einrichtung 1406 durch:
- bi = (240 - 230)/2 + (240 - 150) + (240 - 50) + (240 -60) + (240 - 100) + (240 - 190)/2 = 630 (8)
- gegeben.
- Ähnlich lokalisiert die Einrichtung 1502 des Unterpixelinterpolations-Teilsystems 1500 bei einem zu untersuchenden Zwischenraum ein der Mitte des dem zu untersuchenden Zwischenraum unmittelbar vorausgehenden Strichs entsprechendes erstes Tal. Allgemein stellt ein Tal ein Pixelstärkeniveau-Minimum in bezug auf benachbarte Pixel dar. Die Einrichtung 1504 lokalisiert dann ein der Mitte des dem zu untersuchenden Zwischenraum unmittelbar folgenden Strichs entsprechendes zweites Tal. Die zwei Täler sind benachbarte kritische Punkte längs einer eindimensionalen Signalkurve, die einen in der Mitte des zu untersuchenden Zwischenraums gelegenen Abschnitt des momentanen Suchschritts darstellt.
- Die Einrichtung 1506 berechnet dann die Fläche unter der Graustufen-Signalkurve zwischen den zwei Tälern durch numerisches Integrieren unter Verwendung der Pixelstärkeniveaus. Diese Fläche ist der Signalenergiewert des untersuchten Zwischenraums. Bei der Ausführung dieser Integrationsberechnung verwendet die Einrichtung 1506 zweckmäßig das minimale Pixelstärkeniveau von dem durch die Einrichtung 102 des Erfassungssystems 100 nach Fig. 1 erzeugten Histogramm als die untere Grenze für die Berechnung der Fläche unter der Kurve. Im allgemeinen ist der Signalenergiewert si für einen Zwischenraum durch:
- si = (ITal Nr. 1 - Imin)/2 + Σ (Ip + Imin) + (ITal Nr. 2 - Imin)/2 (9)
- gegeben, wobei Imin das minimale Pixelstärkeniveau von dem Histogramm, ITal Nr. 1 das Pixelstärkeniveau des dem ersten Tal entsprechenden Pixels, ITal Nr. 2 das Pixelstärkeniveau des dem zweiten Tal entsprechenden Pixels und Ip die Pixelstärkeniveaus der längs des momentanen Suchschritts zwischen dem ersten und dem zweiten Tal gelegenen Pixel sind.
- In dem Beispiel der Fig. 12 und 13 realisiert das Schritt-Teilsystem 904 zum Bestimmen der Signalenergiewerte für den Zwischenraum 1216 das Unterpixelinterpolations-Teilsystem 1500 längs des Suchschritts 1228. Die Einrichtung 1502 lokalisiert das in der Mitte des Strichs 1206, unmittelbar vor dem Zwischenraum 1216 befindliche erste Tal. Die Einrichtung 1502 kann das Pixel 4 in Fig. 13 als das erste Tal auswählen. Die Einrichtung 1504 lokalisiert dann das in der Mitte des Strichs 1208, unmittelbar nach dem Zwischenraum 1216 gelegene zweite Tal. Die Einrichtung 1504 kann das Pixel 9 in Fig. 13 als das zweite Tal auswählen. Die Einrichtung 1506 berechnet dann unter Verwendung der Gleichung (9) den Signalenergiewert für den Zwischenraum 1216. Zum Beispiel wird angenommen, daß das Histogramm für das Pixelbild, das das Bar-Code-Symbol 1202 enthält, zeigt, daß das minimale Pixelstärkeniveau Imin 50 beträgt. Der Signalenergiewert si für den Zwischenraum 1216 wird dann von der Einrichtung 1506 durch:
- si = (50 - 50) + (60 - 50) + (100 - 50) + (190 - 50) + (140 - 50) + (100 - 50)/2 = 315 (10)
- gegeben.
- Nachdem die Unterpixelinterpolation für alle Symbolelemente des erfaßten Bar-Code-Symbols ausgeführt wurde, ermittelt das Zeichenermittlungs-Teilsystem 1118 des Schritt-Teilsystems 904 die alphanumerischen Zeichenwahlen für jedes Symbolzeichen. Die Unterpixelinterpolation erzeugt für jeden Strich und für jeden Zwischenraum des erfaßten Bar-Code-Symbols einen Signalenergiewert. Die Kombination der Striche und Zwischenräume in dem Bar- Code-Symbol entspricht den Symbolzeichen. Das Zeichenermittlungs-Teilsystem 1118 verwendet die Signalenergiewerte zum Bestimmen einer oder mehrerer Wahlen der alphanumerischen Zeichen für jedes Symbolzeichen. Außerdem berechnet das Teilsystem 1118 für jede alphanumerische Zeichenwahl eine statistische Sicherheit. Diese Zeichenwahlen und statistischen Sicherheiten werden dann durch das Decodierteilsystem 114 zum Erzeugen und Aktualisieren der in der obenbeschriebenen Prüfsummenuntersuchung verwendeten Zeichentabelle verwendet.
- Jede Bar-Code-Symbologie besitzt ein besonderes Format zum Codieren der alphanumerischen Zeichen in. Strichen und Zwischenräumen. In dieser Beschreibung wird das Teilsystem 1118 im Kontext des Decodierens der Bar-Code-Symbole der Symbologie des Codes 128 beschrieben, obgleich für den Fachmann auf dem Gebiet selbstverständlich ist, daß zum Decodieren irgendeiner bekannten Symbologie eine ähnliche Verarbeitung verwendet werden kann. In der Symbologie des Codes 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 Minimalbreite für ein Symbolelement 1 Modul beträgt. Außerdem beträgt die Summe der Breiten der drei Striche immer eine gerade Anzahl von Modulen, während die Summe der Breiten der drei Zwischenräume immer eine ungerade Anzahl von Modulen beträgt. Das Zeichenermittlungs-Teilsystem 1118 erzeugt für jedes Symbolzeichen aus drei Strichen und drei Zwischenräumen eine oder mehrere Wahlen alphanumerischer Zeichen.
- In Fig. 16 ist nun eine graphische Darstellung des aus den drei Strichen 1602, 1604 und. 1606 und aus den drei Zwischenräumen 1608, 1610 und 1612 bestehenden Bar-Code- Symbolzeichens 1600 gezeigt. Die Breiten der Symbolelemente des Symbolzeichens 1600 können durch die Signalenergiewerte b&sub1;, b&sub2;, b&sub3; für die drei Striche und durch die Signalenergiewerte s&sub1;, s&sub2;, s&sub3; für die drei Zwischenräume dargestellt werden. Diese Signalenergiewerte werden durch die durch das Decodierteilsystem 114 ausgeführte Unterpixelinterpolation erzeugt. Das Zeichenermittlungs- Teilsystem 1118 ermittelt für das Symbolzeichen 1600 einen 1 Modul entsprechenden 1-Modulwert X, wobei:
- X = 1/11 (b&sub1; + s&sub1; + b&sub2; + s&sub2; + b&sub3; + s&sub3;) (11)
- ist. Das Teilsystem 1118 bildet dann aus den durch das Decodierteilsystem 114 erzeugten Signalenergiewerten und aus dem 1-Modulwert X vier gemessene Breiten t&sub1;, t&sub2;, t&sub3;, t&sub4; mit
- t&sub1; = 1/X (b&sub1; + s&sub1;)
- t&sub2; = 1/X (s&sub1; + b&sub2;)
- t&sub3; = 1/X (b&sub2; + s&sub2;) (12)
- t&sub4; = 1/X (s&sub2; + b&sub3;).
- Jede Breite t&sub1; entspricht der Breite von der Kante eines Symbolelements zur Kante des nächsten Symbolelements des gleichen Typs längs des Symbolzeichens 1600. Zum Beispiel entspricht die Breite t&sub1; der Anzahl der Module von der Vorderkante des Strichs 1602 zur Vorderkante des nächsten Strichs -- des Strichs 1604. Ähnlich entspricht die Breite t&sub2; der Anzahl der Module von der Vorderkante des Zwischenraums 1608 zur Vorderkante des nächsten Zwischenraums -- des Zwischenraums 1610. Da die Striche und Zwischenräume ganzzahlige Anzahlen von Modulen breit sind, sind die Breiten t&sub1; idealerweise ganze Zahlen von 2 bis 7. In der Praxis kann das Rauschen jedoch Abweichungen von diesen Idealbreiten bewirken.
- Um der gemessenen Breite eine oder mehrere Idealbreiten und Abweichungen von diesen Idealbreiten zuzuweisen, vergleicht das Teilsystem 1118 jede gemessene Breite t&sub1; mit den Idealbreiten. Zum Beispiel kann mit den gemessenen Breiten t&sub1; von 1,3 bis 2,7 eine Idealbreite von 2,0 verknüpft werden. Ähnlich kann mit den gemessenen Breiten t&sub1; von 2, 3 bis 3,7 eine Idealbreite von 3,0 verknüpft werden. Einige gemessene Breiten können mit mehr als einer Idealbreite verknüpft werden, wobei z. B. eine gemessene Breite von 2,5 sowohl mit der Idealbreite von 2,0 als auch mit der Idealbreite von 3,0 verknüpft würde. Für den Fachmann auf dem Gebiet ist selbstverständlich, daß diese Bereiche durch Prüfen verschiedener Bereiche mit bekannten Bar-Code-Symbolen empirisch ausgewählt werden können.
- Es wird angenommen, daß {2,45, 5,2, 4,9, 2,9} der durch die Unterpixelinterpolation des Zeichensymbols 1600 nach Fig. 16 abgeleitete Satz der gemessenen Breiten {t&sub1;, t&sub2;, t&sub3;, t&sub4;} ist. Das Teilsystem 1118 kann für diesen gemessenen Satz den Idealsatz {2,0, 5,0, 5,0, 3,0} auswählen. In diesem Fall ist ein Abstandsmaß, das die Abweichungen von dem Idealwert widerspiegelt, die Summe der Absolutwerte der Differenzen zwischen dem Idealsatz und dem gemessenen Satz, ( 2,45 - 2,0 + 5,2 - 5,0 + 4,9 - 5,0 + 2,9 - 3,0 ) oder 0,85. Das Decodierteilsystem 114 kann dieses Abstandsmaß als die statistische Sicherheit für das dem Idealsatz {2,0, 5,0, 5,0, 3,0} entsprechende alphanumerische Zeichen verwenden. Je enger der gemessene Satz bei dem Idealsatz liegt, desto kleiner ist das Abstandsmaß oder die statistische Sicherheit und desto größer ist die Sicherheit, daß der gemessene Satz der Idealsatz ist. Falls dem Idealsatz kein alphanumerisches Zeichen entspricht, wählt das Teilsystem 1118 diesen Idealsatz nicht als eine mögliche Wahl für das momentane Symbolzeichen aus.
- Wenn die gemessenen Breiten t&sub1; in den Bereich mehr als einer Idealbreite fallen, erzeugt das Teilsystem 1118 alternative Wahlen. Da die gemessene Breite t&sub1; in dem Zeichensymbol 1600 2,45 beträgt, fällt sie sowohl in den Bereich von 2,0, als auch in den von 3,0. Somit kann die gemessene Breite t&sub1; einem 3,0 anstelle eines 2,0 entsprechen, wobei eine mögliche alternative Wahl für den gemessenen Satz der Idealsatz {3,0, 5,0, 5,0, 3,0} ist. Die statistische Sicherheit für das mit diesem zweiten Idealsatz verknüpfte alphanumerische Zeichen ist 0,95. Da die vorausgehende Zeichenwahl eine niedrigere statistische .Sicherheit als diese Zeichenwahl besitzt, wäre das vorausgehende Zeichen die erste Wahl in der durch das Decodierteilsystem 114 erzeugten Zeichentabelle. Andere Zeichen sind ebenfalls möglich, wobei das Teilsystem 1118 unter der Voraussetzung, daß die anderen gemessenen Breiten t&sub1; jeweils innerhalb der Bereiche nur einer idealen Breite liegen, keine weiteren alternativen Wahlen auswählt.
- Das Teilsystem 1118 decodiert jedes Symbolzeichen in einem erfaßten Bar-Code-Symbol des Codes 128 durch Ausführen einer ähnlichen Untersuchung an jedem einem Symbolzeichen entsprechenden Satz von drei Strichen und drei Zwischenräumen. Die Einrichtung 906 des Decodierteilsystems 114 verwendet die resultierenden alphanumerischen Zeichenwahlen sowie die damit verknüpften statistischen Sicherheiten zum Erzeugen und zum Aktualisieren der zum Erzeugen der Zeichensätze für die Prüfsummenuntersuchung verwendeten Zeichentabelle.
- In Fig. 17 ist nun ein Prozeßablaufplan des Heft-Teilsystems 1700 zum Decodieren von Bar-Code-Symbolen durch Heften gezeigt. Mit Ausnahme dessen, daß das Heft-Teilsystem 1700 jeden Suchschritt zum Ausführen der Unterpixelinterpolation zweier oder mehrerer Symbolelemente des erfaßten Bar-Code-Symbols verwendet und daß jeder Suchschritt eines oder mehrere Symbolelemente mit wenigstens einem anderen Suchschritt gemeinsam hat, arbeitet das Heft-Teilsystem 1700 im wesentlichen gemäß dem Schritt- Teilsystem 904. Das heißt, daß sich die Symbolelemente zwischen aufeinanderfolgenden Suchschritten überschneiden. Das Heft-Teilsystem 1700 ermittelt die jedem Symbolelement zuzuweisenden Signalenergiewerte durch Vergleichen der möglicherweise für dieses Symbolelement existierenden redundanten Signalenergiewerte von zwei oder mehr verschiedenen Unterpixelinterpolationen.
- Die Einrichtung 1702 führt die Unterpixelinterpolation längs mehrerer Suchschritte aus, die ähnlich zu dem durch · das Schritt-Teilsystem 904 ausgeführten Projizieren durch Projizieren auf eine Referenzlinie ausgewählt werden können. Jeder Suchschritt wird zum Bestimmen des Signal energiewerts für zwei oder mehrere Symbolelemente verwendet. Im Gegensatz zum Schritt-Teilsystem 904, das den nächsten Suchschritt dort beginnt, wo der vorausgehende Suchschritt aufgehört hat, wiederholt das Heft-Teilsystem 1700 absichtlich die Unterpixelinterpolation für zuvor untersuchte Symbolelemente. Somit überschneiden sich die Suchschritte des Heft-Teilsystems 1700, während jene für das Schritt-Teilsystem 904 mit den Enden aneinander folgen.
- Dann vergleicht die Einrichtung 1704 die redundanten Ergebnisse für jedes Symbolelement des Bar-Code-Symbols, um für dieses Symbolelement einen einzelnen Signalenergiewert auszuwählen. Diese Auswahl kann durch Mitteln der redundanten Signalenergiewerte ausgeführt werden. In einer alternativen Anordnung können zum. Auswählen eines einzelnen Signalenergiewerts für jedes Symbolelement andere Arten statistischer Untersuchungen ausgeführt werden. Nachdem jedem Symbolelement ein Signalenergiewert zugeordnet wurde, kann das Zeichenermittlungs-Teilsystem 1118 nach Fig. 11, wie zuvor in dieser Beschreibung beschrieben wurde, Zeichenwahlen zur Verwendung durch das Decodierteilsystem 114 erzeugen.
- In Fig. 18 ist nun eine graphische Darstellung des Pixelbildes 1800 gezeigt, das ein weder auf die Pixelzeilen noch auf die Pixelspalten des Pixelbildes 1800 ausgerichtetes Bar-Code-Symbol 1802 enthält. Das Bar-Code-Symbol 1802 enthält die Striche 1806 bis 1822 und die Zwischenräume 1824 bis 1838. Das Heft-Teilsystem 1700 kann das Bar-Code-Symbol 1802 durch Voranschreiten längs der Referenzlinie 1804 zum Ausführen der Unterpixelinterpolation längs der Suchschritte 1840 bis 1864 decodieren. Bei jedem Suchschritt erzeugt die Einrichtung 1702 Energiesignalwerte für eines oder mehrere Elemente des Bar-Code- Symbols 1802. Zum Beispiel kann die Einrichtung 1702 zum Erzeugen der Energiesignalwerte für den Strich 1806 und für den Zwischenraum 1824 eine Unterpixelinterpolation längs des Suchschritts 1840 ausführen. Ähnlich kann die Einrichtung 1702 zum Erzeugen der Energiesignalwerte für die Striche 1806 und 1808 und für den Zwischenraum 1824 eine Unterpixelinterpolation längs des Suchschritts 1842 ausführen. Die Tabelle II enthält die Elemente des Bar- Code-Symbols 1802, die längs der Suchschritte 1840 bis 1864 gekennzeichnet werden können. TABELLE II SUCHSCHRITT ELEMENTE
- Jedes Element kann unter Verwendung eines oder mehrerer Suchschritte gekennzeichnet werden. Zum Beispiel kann der Strich 1808 unter Verwendung der Suchschritte 1842, 1844 und 1846 gekennzeichnet werden. Die Einrichtung 1704 kann die Symbolelemente dadurch verfolgen, daß sie jedem· Element einen seiner Lage längs des Bar-Code-Symbols entsprechenden Versatzwert zuweist, wobei der Versatzwert auf dem Gesamt-Energiesignalwert für die vorausgehenden Elemente beruht. Zum Beispiel ist der Strich 1806 des Bar-Code-Symbols 1802 der erste Strich in dem Symbol, wobei er einen Versatz von 0 besitzt. Falls die Einrichtung 1702 einen den 9 Modulen für den Strich 1806 längs des Suchschritts 1840 entsprechenden Energiesignalwert erzeugt, hat der Strich 1824 einen Versatz von 9. Die Tabelle III gibt die Versätze und die Energiesignalwerte, die durch die Einrichtung 1702 für die Suchschritte 1840 bis 1864 erzeugt werden können, an. Der Suchschritt 1844 beginnt mit dem Zwischenraum 1824, der auf der Grundlage der durch die Einrichtung 1702 längs der Suchschritte 1840 bzw. 1842 erzeugten Energiesignalwerte von 8 und 9 für den Strich 1806 den Versatz 8 besitzt. TABELLE III
- Da sich die durch die Einrichtung 1702 für jedes Symbolelement längs verschiedener Suchschritte erzeugten Energiesignalwerte voneinander unterscheiden können, kann die Einrichtung 1704 die Energiesignalwerte für jedes Element mitteln, um einen diesem Element zuzuweisenden mittleren Energiesignalwert, wie er in Tabelle IV für das Beispiel nach Fig. 18 angegeben ist, zu ermitteln. In alternativen Ausführungen kann die Einrichtung 1704 einen jedem Element zuzuweisenden Energiesignalwert unter Verwendung anderer Arten statistischer Untersuchungen einschließlich von Mehrheitssystemen bestimmen. TABELLE IV
- Für den Fachmann auf dem Gebiet ist selbstverständlich, daß Aspekte der vorliegenden Erfindung in Verbindung mit Systemen betrieben werden können, die Bar-Code-Symbole unter Verwendung von Laserabtastern erfassen. Der Fachmann auf dem Gebiet erkennt, daß die vorliegende Erfindung nicht auf die Verarbeitung von durch CCD-Vorrichtungen erzeugten Bildern beschränkt ist. Zum Beispiel kann die vorliegende Erfindung zum Verarbeiten von Bildern verwendet werden, die durch einen senkrecht zu einer Bandfortbewegungsvorrichtung bewegten Laserabtaster erzeugt wurden. Außerdem kann das Konzept der für jedes Symbolzeichen eine oder mehrere Wahlen alphanumerischer Zeichen enthaltenden Zeichentabellen beim Decodieren von Bar-Code-Symbolen durch Systeme mit Laserabtastern verwendet werden.
- Wie zuvor in Verbindung mit Fig. 1 beschrieben wurde, erzeugt die Einrichtung 102 in einer zweckmäßigen Ausführung des Erfassungssystems 100 ein Histogramm des gesamten Eingangspixelbildes. Das Histogramm wird dann zum Auswählen von Schwellwerten zum Erfassen von Zustandsübergängen zwischen Bar-Code-Symbol-Ruhezonen und Start/Stopp-Zeichen verwendet. Wie zuvor in Verbindung mit den Fig. 14 und 15 beschrieben wurde, wird das Histogramm außerdem zum Auswählen eines bei der Unterpixelinterpolation verwendeten minimalen Pixelstärkeniveaus und maximalen Pixelstärkeniveaus verwendet. Das Erfassungssystem 100 führt eine adaptive Schwellwertermittlung aus, in der der dynamische Bereich der Pixelstärkeniveaus für jeden Teil des Bildes getrennt ermittelt wird. Bei der adaptiven Schwellwertermittlung können die Schwellwerte während des Abtastens oder Durchsuchens des Bildes eingestellt werden. Das Erfassungssystem 100 kann Bilder verarbeiten, deren dynamische Bereiche sich über die Bildflächen z. B. infolge einer ungleichförmigen Beleuchtung verändern.
- Es ist weiter selbstverständlich, daß durch den Fachmann auf dem Gebiet verschiedene Änderungen an den zur Erläuterung des Wesens der Erfindung beschriebenen und gezeigten Einzelheiten, Materialien und Anordnungen der Teile vorgenommen werden können, ohne von dem Prinzip und von dem Umfang der in den folgenden Ansprüchen dargestellten Erfindung abzuweichen.
Claims (1)
1. Verfahren zum Erfassen eines Bar-Code-Symbols (202),
mit einem Bar-Code-Symbol-Leser, mit den Schritten:
(a) Empfangen eines zweidimensionalen Bildes (200), das
das. Symbol (202) enthält, wobei der Bar-Code-Symbol-
Leser kein Vorabwissen betreffend die Ausrichtung des
Symbols (202) im Bild (200) hat,
gekennzeichnet durch die Schritte
(b) Abtasten (104-108) des Bildes (200) in einer
Dimension, um eine potentielle Ruhezone für das Symbol
(202) zu lokalisieren; und
(c) Durchsuchen (110) des Bildes (200) in einer
Dimension, um ein Start/Stop-Zeichen des Symbols (202) zu
identifizieren, das der potentiellen Ruhezone folgt
oder ihr vorausgeht, um dadurch das Bar-Code-Symbol zu
erfassen.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
das Bild mehrere Bar-Code-Symbole mit unbekannter
Ausrichtung aufweist, wobei das Abtasten im Schritt (b)
und das Durchsuchen im Schritt (c) ein erstes der
Symbole lokalisiert und identifiziert, und mit den
weiteren Schritten:
(d) Abtasten des Bilds in einer Dimension, um eine
potentielle Ruhezone für ein zweites der Symbole zu
lokalisieren; und
(e) Durchsuchen des Bilds in einer Dimension, um ein
Start/Stop-Zeichen des zweiten Symbols zu
identifizieren, das der potentiellen Ruhezone des zweiten Symbols
folgt oder ihr vorausgeht.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß
das Abtasten im Schritt (d) das erste Symbol ignoriert
(108).
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
das Abtasten mit niedriger Auflösung und das
Durchsuchen mit hoher Auflösung vorgenommen wird.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
das Abtasten im Schritt (b) in einer ersten Richtung
erfolgt, und daß es den Schritt des Abtastens des Bilds
(200) in einer zweiten Richtung aufweist, um eine
potentielle Ruhezone für das Symbol (202) zu
lokalisieren.
6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
der Schritt (c) außerdem den Schritt einer
Unterpixelinterpolation aufweist, um das Start/Stop-Zeichen zu
identifizieren.
7. Verfahren nach Anspruch 1, weiter gekennzeichnet durch
die Schritte:
(d) Lokalisieren (402) einer ersten und einer zweiten
Ecke (214, 230) des Symbols (202);
(e) Abtasten (404) des Bilds, um eine zweite
potentielle Ruhezone des Symbols (202) zu lokalisieren;
(f) Durchsuchen (408-418) des Bilds (200), um ein
Start/Stop-Zeichen des Symbols (202) zu identifizieren,
das der zweiten potentiellen Ruhezone folgt oder ihr
vorausgeht; und
(g) Lokalisieren (420) einer dritten und einer vierten
Ecke (246, 260) des Symbols.
8. Verfahren nach Anspruch 1, weiter gekennzeichnet durch
den Schritt des Decodierens des Symbols unter
Verwendung von Unterpixelinterpolation.
(a) einer Einrichtung zum Empfangen eines
zweidimensionalen Bilds (200), das das Symbol enthält, wobei die
Vorrichtung kein Vorabwissen betreffend die Ausrichtung
des Symbols (202) im Bild hat;
weiter gekennzeichnet durch
(b) eine Abtasteinrichtung (104, 106, 108) zum Abtasten
des Bilds (200) in einer Dimension, um eine potentielle
Ruhezone für das Symbol (202) zu lokalisieren; und
(c) eine Durchsuchungseinrichtung (110) zum Durchsuchen
des Bilds (200) in einer Richtung, um ein Start/Stop-
Zeichen des Symbols zu identifizieren, das der
potentiellen Ruhezone folgt oder ihr vorausgeht, um dadurch
das Bar-Code-Symbol zu erfassen.
10. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet,
daß das Bild mehrere Bar-Code-Symbole mit unbekannter
Ausrichtung aufweist, wobei die Abtasteinrichtung (104,
106, 108) ein erstes der Symbole lokalisiert und wobei
die Durchsuchungseinrichtung (110) das erste Symbol
identifiziert, wobei die Abtasteinrichtung (104, 106,
108) außerdem das Bild in einer Dimension abtastet, um
eine potentielle Ruhezone für ein zweites der Symbole
zu lokalisieren, und wobei die Durchsuchungseinrichtung
(110) das Bild in einer Dimension durchsucht, um ein
Start/Stop-Zeichen des zweiten Symbols zu
identifizieren, das der potentiellen Ruhezone des zweiten Symbols
folgt oder ihr vorausgeht.
11. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet,
daß die Abtasteinrichtung (108) das erste Symbol
ignoriert, wenn die Abtastung für das zweite Symbol
vorgenommen wird.
12. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet,
daß die Abtasteinrichtung (104, 106, 108) mit niedriger
Auflösung abtastet und daß die Durchsuchungseinrichtung
(110) mit hoher Auflösung durchsucht.
13. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet,
daß die Abtasteinrichtung (104) das Bild in einer
ersten Richtung abtastet und dann die Abtasteinrichtung
(104) das Bild in eine zweite Richtung abtastet.
14. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet,
daß die Durchsuchungseinrichtung (110) eine
Unterpixelinterpolation vornimmt, um das Start/Stop-Zeichen zu
identifizieren.
15. Vorrichtung nach Anspruch 9, weiter gekennzeichnet
durch:
(d) eine Einrichtung (402, 600) zum Lokalisieren einer
ersten und einer zweiten Ecke (214, 230) des Symbols
(202);
(e) eine Einrichtung (404, 406) zum Abtasten des Bilds,
um eine zweite potentielle Ruhezone für das Symbol
(202) zu lokalisieren;
(f) eine Einrichtung (410, 414, 418) zum Durchsuchen
des Bilds, um ein zweites Start/Stop-Zeichen des
Symbols zu identifizieren, das der zweiten potentiellen
Ruhezone folgt oder ihr vorausgeht; und
(g) eine Einrichtung (420, 600) zum Lokalisieren einer
dritten und einer vierten Ecke (246, 260) des Symbols.
16. Vorrichtung nach Anspruch 9, weiter gekennzeichnet
durch eine Einrichtung (408, 412, 416) zum Decodieren
des Symbols (202) unter Verwendung von
Unterpixelinterpolation.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/927,910 US5343028A (en) | 1992-08-10 | 1992-08-10 | Method and apparatus for detecting and decoding bar code symbols using two-dimensional digital pixel images |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69324079D1 DE69324079D1 (de) | 1999-04-29 |
DE69324079T2 true DE69324079T2 (de) | 1999-09-30 |
Family
ID=25455441
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69324079T Expired - Lifetime DE69324079T2 (de) | 1992-08-10 | 1993-07-29 | Verfahren und Vorrichtung zur Erfassung von Strichkoden |
DE69334290T Expired - Lifetime DE69334290D1 (de) | 1992-08-10 | 1993-07-29 | Verfahren und Vorrichtung zur Erkennung und Dekodierung von Streifenkodes |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69334290T Expired - Lifetime DE69334290D1 (de) | 1992-08-10 | 1993-07-29 | Verfahren und Vorrichtung zur Erkennung und Dekodierung von Streifenkodes |
Country Status (7)
Country | Link |
---|---|
US (2) | US5343028A (de) |
EP (2) | EP0582911B1 (de) |
AT (1) | ATE178150T1 (de) |
DE (2) | DE69324079T2 (de) |
DK (1) | DK0582911T3 (de) |
ES (1) | ES2132156T3 (de) |
GR (1) | GR3030103T3 (de) |
Families Citing this family (140)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3077616B2 (ja) * | 1997-01-31 | 2000-08-14 | 富士通株式会社 | バーコード読取方法 |
US5979768A (en) * | 1988-01-14 | 1999-11-09 | Intermec I.P. Corp. | Enhanced bar code resolution through relative movement of sensor and object |
US6688523B1 (en) | 1988-08-31 | 2004-02-10 | Intermec Ip Corp. | System for reading optical indicia |
JP3191999B2 (ja) * | 1992-09-10 | 2001-07-23 | オリンパス光学工業株式会社 | バーコードシンボル読取装置 |
US5352878A (en) * | 1993-01-29 | 1994-10-04 | United Parcel Service Of America, Inc. | Method and apparatus for decoding bar code symbols using independent bar and space analysis |
US5446271A (en) * | 1993-08-06 | 1995-08-29 | Spectra-Physics Scanning Systems, Inc. | Omnidirectional scanning method and apparatus |
US7387253B1 (en) | 1996-09-03 | 2008-06-17 | Hand Held Products, Inc. | Optical reader system comprising local host processor and optical reader |
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 |
US5557091A (en) * | 1994-04-15 | 1996-09-17 | Krummel; Larry | Method and system for bar code image processing |
US5814803A (en) * | 1994-12-23 | 1998-09-29 | Spectra-Physics Scanning Systems, Inc. | Image reader with multi-focus lens |
US5770847A (en) * | 1994-12-23 | 1998-06-23 | Spectra-Physics Scanning Systems, Inc. | Bar code reader with multi-focus lens |
JPH11501572A (ja) | 1995-04-10 | 1999-02-09 | ユナイテッド パーセル サービス オブ アメリカ,インコーポレイテッド | 運搬される物品上の指標の位置を検出し記憶する2カメラシステム |
US5642442A (en) * | 1995-04-10 | 1997-06-24 | United Parcel Services Of America, Inc. | Method for locating the position and orientation of a fiduciary mark |
US5773807A (en) * | 1995-07-28 | 1998-06-30 | Symbol Technologies, Inc. | Arrangement for and method of minimizing reading errors in bar code symbol readers |
US5777308A (en) * | 1995-08-14 | 1998-07-07 | Intermec Corporation | Resolution gain on width modulated bar codes by use of angled sampling in two dimensions |
US5777310A (en) * | 1995-11-06 | 1998-07-07 | Intermec Corporation | Problem reduction with low level information integration in bar code decoding |
US5862270A (en) * | 1995-12-08 | 1999-01-19 | Matsushita Electric Industrial Co., Ltd. | Clock free two-dimensional barcode and method for printing and reading the same |
JP2958396B2 (ja) * | 1995-12-20 | 1999-10-06 | 富士ゼロックス株式会社 | 画像形成装置 |
US5804802A (en) * | 1996-02-14 | 1998-09-08 | United Parcel Service Of America, Inc. | Two-way data communication manager |
US5764798A (en) * | 1996-03-18 | 1998-06-09 | Intermec Corporation | Prioritized searching methods for finding a coded symbol in a digitized image |
US5969325A (en) | 1996-06-03 | 1999-10-19 | Accu-Sort Systems, Inc. | High speed image acquisition system and method of processing and decoding barcode symbol |
US20040004128A1 (en) * | 1996-09-03 | 2004-01-08 | Hand Held Products, Inc. | Optical reader system comprising digital conversion circuit |
US6015088A (en) * | 1996-11-05 | 2000-01-18 | Welch Allyn, Inc. | Decoding of real time video imaging |
US5767497A (en) * | 1996-12-04 | 1998-06-16 | United Parcel Service Of America, Inc. | Method and apparatus for decoding bar code symbols using ratio analysis of module size |
CA2282392A1 (en) | 1997-03-07 | 1998-09-11 | Kurt Hecht | Symbology scanning system for efficiently locating coded symbologies |
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 |
US5923022A (en) * | 1997-04-14 | 1999-07-13 | Intermec Ip Corp. | Method and apparatus for identifying bar code symbols using reading gates |
DE19716886C2 (de) * | 1997-04-22 | 2001-02-01 | Sick Ag | Verfahren und Vorrichtung zum Lesen eines Strichcodes |
DE69838714T2 (de) * | 1997-05-05 | 2008-10-30 | Symbol Technologies, Inc. | Optische abtastvorrichtung und bildleser zum bildlesen und dekodieren optischer informationen mit ein- und zweidimensionalen symbolen bei veränderlicher tiefenschärfe |
US5912448A (en) * | 1997-05-16 | 1999-06-15 | Hewlett-Packard Company | Method and apparatus for detecting paper skew in image and document scanning devices |
DE19724711B4 (de) * | 1997-06-11 | 2004-09-16 | Sick Ag | Verfahren und Vorrichtung zum Erkennen und Lesen eines an einem Objekt vorgesehenen Strichcodes |
US5984078A (en) | 1997-08-04 | 1999-11-16 | United Parcel Service Of America, Inc. | Automated shuttle sorter for conveyors |
JP3576356B2 (ja) * | 1997-08-08 | 2004-10-13 | 富士通株式会社 | バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体 |
JPH1153465A (ja) * | 1997-08-08 | 1999-02-26 | Fujitsu Ltd | バーコード読取装置 |
US5949052A (en) * | 1997-10-17 | 1999-09-07 | Welch Allyn, Inc. | Object sensor system for stationary position optical reader |
US6758391B1 (en) | 1997-11-18 | 2004-07-06 | The Code Corporation | Internet access of goods and services using graphical codes |
US6411734B1 (en) | 1998-04-03 | 2002-06-25 | Cognex Corporation | Object image search using validated sub-model poses |
US6252986B1 (en) | 1998-04-03 | 2001-06-26 | Cognex Corporation | Locating an image of an object having a concentric profile |
US6424734B1 (en) | 1998-04-03 | 2002-07-23 | Cognex Corporation | Fiducial mark search using sub-models |
US6324299B1 (en) | 1998-04-03 | 2001-11-27 | Cognex Corporation | Object image search using sub-models |
US6516092B1 (en) | 1998-05-29 | 2003-02-04 | Cognex Corporation | Robust sub-model shape-finder |
US7016539B1 (en) | 1998-07-13 | 2006-03-21 | Cognex Corporation | Method for fast, robust, multi-dimensional pattern recognition |
US6963338B1 (en) | 1998-07-31 | 2005-11-08 | Cognex Corporation | Method for refining geometric description models using images |
US6459820B1 (en) | 1998-08-25 | 2002-10-01 | Cognex Corporation | Gauging using sub-model poses |
DE69834918T2 (de) | 1998-11-02 | 2007-02-01 | Datalogic S.P.A., Lippo Di Calderara Di Reno | Anordnung zur automatischen Erfassung und Verarbeitung von optischen Codes |
US6189702B1 (en) | 1998-11-25 | 2001-02-20 | United Parcel Service Of America, Inc. | Overhead mounted sorter for conveyors |
US6571006B1 (en) | 1998-11-30 | 2003-05-27 | Cognex Corporation | Methods and apparatuses for measuring an extent of a group of objects within an image |
US6526165B1 (en) | 1998-11-30 | 2003-02-25 | Cognex Corporation | Methods and apparatuses for refining a geometric description of an object having a plurality of extensions |
US6460848B1 (en) | 1999-04-21 | 2002-10-08 | Mindplay Llc | Method and apparatus for monitoring casinos and gaming |
US6371373B1 (en) * | 1999-05-25 | 2002-04-16 | Matsushita Electric Industrial Co., Ltd. | Method for reading a two-dimensional barcode |
US6614926B1 (en) | 1999-06-29 | 2003-09-02 | Cognex Corporation | Methods and apparatuses for generating from an image a model of an object |
US6898333B1 (en) | 1999-08-06 | 2005-05-24 | Cognex Corporation | Methods and apparatus for determining the orientation of an object in an image |
US6813377B1 (en) | 1999-08-06 | 2004-11-02 | Cognex Corporation | Methods and apparatuses for generating a model of an object from an image of the object |
US6950548B1 (en) | 2000-05-17 | 2005-09-27 | Cognex Corporation | Creating geometric model descriptions for use in machine vision inspection systems |
US6700997B1 (en) | 2000-06-05 | 2004-03-02 | Glenn Steven Spitz | Method of evaluating the print quality of 2-dimensional data carrying graphical symbols |
US7257545B1 (en) | 2000-07-26 | 2007-08-14 | Hung Patrick Siu-Ying | Configurable electronic redeemable coupon |
US8682077B1 (en) | 2000-11-28 | 2014-03-25 | Hand Held Products, Inc. | Method for omnidirectional processing of 2D images including recognizable characters |
US6652379B2 (en) | 2001-01-04 | 2003-11-25 | Mindplay Llc | Method, apparatus and article for verifying card games, such as blackjack |
DE60213559T2 (de) | 2001-01-22 | 2007-10-18 | Hand Held Products, Inc. | Optischer leser mit teilbild-ausschnitt-funktion |
US7270273B2 (en) | 2001-01-22 | 2007-09-18 | Hand Held Products, Inc. | Optical reader having partial frame operating mode |
US7268924B2 (en) | 2001-01-22 | 2007-09-11 | Hand Held Products, Inc. | Optical reader having reduced parameter determination delay |
US6857961B2 (en) | 2001-02-21 | 2005-02-22 | Bally Gaming International, Inc. | Method, apparatus and article for evaluating card games, such as blackjack |
US6685568B2 (en) | 2001-02-21 | 2004-02-03 | Mindplay Llc | Method, apparatus and article for evaluating card games, such as blackjack |
US7203361B1 (en) | 2001-03-16 | 2007-04-10 | Hand Held Products, Inc. | Adaptive digitizer for optical reader |
US6804416B1 (en) | 2001-03-16 | 2004-10-12 | Cognex Corporation | Method and system for aligning geometric object models with images |
US7072974B2 (en) | 2001-03-27 | 2006-07-04 | The Code Corporation | Extensible application interface using machine-readable graphical codes |
US20020143814A1 (en) * | 2001-03-27 | 2002-10-03 | The Code Corporation | Systems and methods for automatic insertion of machine-readable graphical codes into printable documents |
US6978038B2 (en) * | 2001-04-13 | 2005-12-20 | The Code Corporation | Systems and methods for pixel gain compensation in machine-readable graphical codes |
US7185824B2 (en) * | 2001-04-13 | 2007-03-06 | The Code Corporation | System and method for associating pre-printed machine-readable graphical codes with electronically-accessible data |
WO2002084879A2 (en) * | 2001-04-13 | 2002-10-24 | The Code Coproration | System and method for encoding and decoding data and references to data in machine-readable graphical codes |
US7331523B2 (en) | 2001-07-13 | 2008-02-19 | Hand Held Products, Inc. | Adaptive optical image reader |
KR100339691B1 (ko) * | 2001-11-03 | 2002-06-07 | 한탁돈 | 코드인식을 위한 장치 및 그 방법 |
WO2003066182A2 (en) | 2002-02-05 | 2003-08-14 | Mindplay Llc | Determining gaming information |
US7222852B2 (en) | 2002-02-06 | 2007-05-29 | Ball Gaming International, Inc. | Method, apparatus and article employing multiple machine-readable indicia on playing cards |
US20030163800A1 (en) * | 2002-02-27 | 2003-08-28 | Weiyang Zhou | System and method for generating graphical codes containing a plurality of data fields |
US20030163396A1 (en) * | 2002-02-27 | 2003-08-28 | John Blankevoort | Systems and methods for tracking products as they move through a supply chain |
WO2003096218A1 (en) * | 2002-04-22 | 2003-11-20 | The Code Corporation | Systems and methods for facilitating automatic completion of an electronic form |
US6651887B1 (en) | 2002-07-26 | 2003-11-25 | Storage Technology Corporation | Reading and interpreting barcodes using low resolution line scan cameras |
US7070091B2 (en) * | 2002-07-29 | 2006-07-04 | The Code Corporation | Systems and methods for interfacing object identifier readers to multiple types of applications |
US7392933B2 (en) * | 2002-07-29 | 2008-07-01 | The Code Corporation | Systems and methods for interfacing multiple types of object identifiers and object identifier readers to multiple types of applications |
US7621453B2 (en) * | 2002-07-29 | 2009-11-24 | The Code Corporation | System and method for controlling the distribution of data translation components to portable data collection devices |
US7097099B2 (en) * | 2002-07-29 | 2006-08-29 | The Code Corporation | Data collection device with integrated data translation |
WO2004042620A1 (en) * | 2002-11-04 | 2004-05-21 | Deepq Technologies, A General Partnership | Document processing based on a digital document image input with a confirmatory receipt output |
WO2004055713A1 (ja) | 2002-12-17 | 2004-07-01 | Sharp Kabushiki Kaisha | バーコード認識装置 |
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 |
US7212682B2 (en) | 2003-03-06 | 2007-05-01 | Sick Auto Ident, Inc. | Method and system for enhancing measurement |
US6880759B2 (en) * | 2003-05-23 | 2005-04-19 | Symagery Microsystems Inc. | Optical reader station |
US7190834B2 (en) | 2003-07-22 | 2007-03-13 | Cognex Technology And Investment Corporation | Methods for finding and characterizing a deformed pattern in an image |
US8081820B2 (en) * | 2003-07-22 | 2011-12-20 | Cognex Technology And Investment Corporation | Method for partitioning a pattern into optimized sub-patterns |
AU2004261176B2 (en) * | 2003-07-25 | 2010-05-20 | Bally Gaming International, Inc. | Uniquely identifiable casino gaming chips |
US7736236B2 (en) | 2003-11-07 | 2010-06-15 | Bally Gaming International, Inc. | Method, apparatus and article for evaluating card games, such as blackjack |
US6942152B1 (en) | 2004-01-21 | 2005-09-13 | The Code Corporation | Versatile graphical code reader that is configured for efficient decoding |
US7519239B2 (en) * | 2004-02-11 | 2009-04-14 | The Code Corporation | Systems and methods for concurrent image capture and decoding of graphical codes |
KR100560330B1 (ko) * | 2004-04-21 | 2006-03-30 | 에이디정보통신 주식회사 | 색상 보정이 가능한 대용량 2차원 칼라 바코드인코딩/디코딩 시스템 및 그 방법 |
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 |
US8437502B1 (en) | 2004-09-25 | 2013-05-07 | Cognex Technology And Investment Corporation | General pose refinement and tracking tool |
US7204417B2 (en) * | 2004-11-03 | 2007-04-17 | The Code Corporation | Graphical code reader that is configured for efficient decoder management |
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 |
US8074987B2 (en) * | 2005-02-10 | 2011-12-13 | Bally Gaming, Inc. | Systems and methods for processing playing cards collected from a gaming table |
US7568628B2 (en) | 2005-03-11 | 2009-08-04 | Hand Held Products, Inc. | Bar code reading device with global electronic shutter control |
US7770799B2 (en) | 2005-06-03 | 2010-08-10 | Hand Held Products, Inc. | Optical reader having reduced specular reflection read failures |
US8550464B2 (en) | 2005-09-12 | 2013-10-08 | Bally Gaming, Inc. | Systems, methods and articles to facilitate playing card games with selectable odds |
US7967682B2 (en) | 2006-04-12 | 2011-06-28 | Bally Gaming, Inc. | Wireless gaming environment |
US7523937B2 (en) | 2006-04-18 | 2009-04-28 | Bally Gaming, Inc. | Device for use in playing card handling system |
US8100753B2 (en) | 2006-05-23 | 2012-01-24 | Bally Gaming, Inc. | Systems, methods and articles to facilitate playing card games with selectable odds |
US8038153B2 (en) | 2006-05-23 | 2011-10-18 | Bally Gaming, Inc. | Systems, methods and articles to facilitate playing card games |
US8052519B2 (en) | 2006-06-08 | 2011-11-08 | Bally Gaming, Inc. | Systems, methods and articles to facilitate lockout of selectable odds/advantage in playing card games |
US8108176B2 (en) * | 2006-06-29 | 2012-01-31 | Cognex Corporation | Method and apparatus for verifying two dimensional mark quality |
AU2007205809B2 (en) | 2006-08-17 | 2012-05-17 | Bally Gaming, Inc. | Systems, methods and articles to enhance play at gaming tables with bonuses |
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 |
US8496177B2 (en) * | 2007-06-28 | 2013-07-30 | Hand Held Products, Inc. | Bar code reading terminal with video capturing mode |
US8335341B2 (en) * | 2007-09-07 | 2012-12-18 | Datalogic ADC, Inc. | Compensated virtual scan lines |
US8920236B2 (en) | 2007-11-02 | 2014-12-30 | Bally Gaming, Inc. | Game related systems, methods, and articles that combine virtual and physical elements |
US9563898B2 (en) | 2008-04-30 | 2017-02-07 | Bally Gaming, Inc. | System and method for automated customer account creation and management |
US9734376B2 (en) | 2007-11-13 | 2017-08-15 | Cognex Corporation | System and method for reading patterns using multiple image frames |
US8597107B2 (en) | 2007-12-28 | 2013-12-03 | Bally Gaming, Inc. | Systems, methods, and devices for providing purchases of instances of game play at a hybrid ticket/currency game machine |
US8308562B2 (en) | 2008-04-29 | 2012-11-13 | Bally Gaming, Inc. | Biofeedback for a gaming device, such as an electronic gaming machine (EGM) |
US8613655B2 (en) | 2008-04-30 | 2013-12-24 | Bally Gaming, Inc. | Facilitating group play with multiple game devices |
US20090275407A1 (en) * | 2008-04-30 | 2009-11-05 | Bally Gaming, Inc. | Virtualization for gaming devices |
US9092944B2 (en) | 2008-04-30 | 2015-07-28 | Bally Gaming, Inc. | Coordinating group play events for multiple game devices |
US8251808B2 (en) | 2008-04-30 | 2012-08-28 | Bally Gaming, Inc. | Game transaction module interface to single port printer |
US8382584B2 (en) | 2008-05-24 | 2013-02-26 | Bally Gaming, Inc. | Networked gaming system with enterprise accounting methods and apparatus |
US9443377B2 (en) | 2008-05-30 | 2016-09-13 | Bally Gaming, Inc. | Web pages for gaming devices |
US20100098291A1 (en) * | 2008-10-16 | 2010-04-22 | Lockheed Martin Corporation | Methods and systems for object type identification |
US8628015B2 (en) | 2008-10-31 | 2014-01-14 | Hand Held Products, Inc. | Indicia reading terminal including frame quality evaluation processing |
US8886684B2 (en) * | 2009-07-14 | 2014-11-11 | DPiO Pty Ltd | Apparatus and method for managing register of unique identifiers |
CN102034074B (zh) * | 2009-09-25 | 2014-05-14 | 神基科技股份有限公司 | 在图像中定位并撷取条形码区域的图像处理方法及装置 |
US8587595B2 (en) | 2009-10-01 | 2013-11-19 | Hand Held Products, Inc. | Low power multi-core decoder system and method |
DE102010014937B4 (de) | 2010-04-14 | 2013-10-17 | Ioss Intelligente Optische Sensoren & Systeme Gmbh | Verfahren zum Lesen eines Codes auf einem Substrat durch Zusammensetzen von Code-Fragmenten unter Verwendung eines bildgebenden Codelesers |
US9679224B2 (en) | 2013-06-28 | 2017-06-13 | Cognex Corporation | Semi-supervised method for training multiple pattern recognition and registration tool models |
US9607200B2 (en) | 2014-10-09 | 2017-03-28 | Cognex Corporation | Decoding barcodes |
US10599902B2 (en) * | 2014-10-09 | 2020-03-24 | Cognex Corporation | Methods and apparatus for decoding under-resolved symbols |
CN105654019B (zh) * | 2016-02-23 | 2018-09-04 | 海信集团有限公司 | 二维码快速解码方法和装置 |
US10140497B1 (en) * | 2017-09-12 | 2018-11-27 | Symbol Technologies, Llc | Methods and system for reading barcodes captured on multiple images |
CN113312937A (zh) * | 2021-06-25 | 2021-08-27 | 展讯通信(上海)有限公司 | 条形码识别方法及装置、存储介质、计算机设备 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949955A (en) * | 1988-07-19 | 1990-08-21 | Robert Keen | Exercise weight device for varying force during exercise motion |
CA1310417C (en) * | 1987-09-28 | 1992-11-17 | Hideki Okamura | Combining bar code read data |
JPH01216491A (ja) * | 1988-02-25 | 1989-08-30 | Alps Electric Co Ltd | 符号読取装置 |
JP2677806B2 (ja) * | 1987-11-30 | 1997-11-17 | アルプス電気株式会社 | 符号読取装置 |
JPH01136286A (ja) * | 1987-11-24 | 1989-05-29 | Mitsubishi Heavy Ind Ltd | バーコード幅計測方法 |
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 |
EP0350933B1 (de) * | 1988-07-13 | 1994-04-13 | Matsushita Electric Industrial Co., Ltd. | Bildsignalverarbeitungsvorrichtung für Strichkodebildsignale |
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 |
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 |
CA1334218C (en) * | 1989-03-01 | 1995-01-31 | Jerome Swartz | Hand-held laser scanning for reading two dimensional bar codes |
CA1329263C (en) * | 1989-03-01 | 1994-05-03 | Mark Krichever | Bar code scanner |
JP2886545B2 (ja) * | 1989-03-03 | 1999-04-26 | 富士通株式会社 | マージン認識方法及びバーコード読取り装置 |
US5081689A (en) * | 1989-03-27 | 1992-01-14 | Hughes Aircraft Company | Apparatus and method for extracting edges and lines |
JP2957726B2 (ja) * | 1990-03-28 | 1999-10-06 | オムニプラナー,インコーポレーテッド | 高速・全方向型バーコードリーダのための改良された方法及び装置 |
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 |
EP0450878B1 (de) * | 1990-03-28 | 1997-05-28 | 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 |
JPH0415774A (ja) * | 1990-05-02 | 1992-01-21 | Eastman Kodak Japan Kk | バーコードリーダ |
US5120940A (en) * | 1990-08-10 | 1992-06-09 | The Boeing Company | Detection of barcodes in binary images with arbitrary orientation |
-
1992
- 1992-08-10 US US07/927,910 patent/US5343028A/en not_active Expired - Lifetime
-
1993
- 1993-07-29 AT AT93112172T patent/ATE178150T1/de not_active IP Right Cessation
- 1993-07-29 EP EP93112172A patent/EP0582911B1/de not_active Expired - Lifetime
- 1993-07-29 DK DK93112172T patent/DK0582911T3/da active
- 1993-07-29 DE DE69324079T patent/DE69324079T2/de not_active Expired - Lifetime
- 1993-07-29 ES ES93112172T patent/ES2132156T3/es not_active Expired - Lifetime
- 1993-07-29 EP EP98114811A patent/EP0880103B1/de not_active Expired - Lifetime
- 1993-07-29 DE DE69334290T patent/DE69334290D1/de not_active Expired - Lifetime
-
1994
- 1994-05-27 US US08/250,663 patent/US5478999A/en not_active Expired - Lifetime
-
1999
- 1999-04-30 GR GR990401185T patent/GR3030103T3/el unknown
Also Published As
Publication number | Publication date |
---|---|
EP0880103A3 (de) | 2002-10-23 |
DE69324079D1 (de) | 1999-04-29 |
EP0880103B1 (de) | 2009-07-15 |
DK0582911T3 (da) | 1999-10-11 |
US5478999A (en) | 1995-12-26 |
DE69334290D1 (de) | 2009-08-27 |
ATE178150T1 (de) | 1999-04-15 |
EP0582911A3 (de) | 1995-04-19 |
EP0582911B1 (de) | 1999-03-24 |
ES2132156T3 (es) | 1999-08-16 |
EP0582911A2 (de) | 1994-02-16 |
US5343028A (en) | 1994-08-30 |
GR3030103T3 (en) | 1999-07-30 |
EP0880103A2 (de) | 1998-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69324079T2 (de) | Verfahren und Vorrichtung zur Erfassung von Strichkoden | |
DE69310049T2 (de) | Verfahren und Vorrichtung zum Auffinden einer Ecke einer Struktur in zweidimensionalen Bildern | |
DE69324095T2 (de) | Verfahren und Vorrichtung zum Dedektieren von strichkodierten Symbolen mit Unterpixel-Interpolation | |
DE69716087T2 (de) | System und verfahren zur bilderfassung mit hoher geschwindigkeit | |
DE69131006T2 (de) | Gerät und Verfahren zur optischen Zeichenerkennung | |
DE69433492T2 (de) | Verfahren und Vorrichtung zum Dekodieren von Streifencodes durch unabhängige Analyse von Streifen und Zwischenräumen | |
DE69728482T2 (de) | Zweidimensionaler Codeleser | |
DE69515481T2 (de) | Verfahren und Vorrichtung zur Dekodierung eines zweidimensionalen Symboles im Raumbereich | |
DE69131216T2 (de) | Lagebestimmung von Strichkodierungen | |
DE10036110B4 (de) | Verfahren zur Bestimmung des Schrägwinkels eines zweidimensionalen Barcodes | |
DE69521040T2 (de) | Verfahren und vorrichtung zum dekodieren von balkencodebildern mittels informationen aus vorhergehenden abtastzeilen | |
DE69028899T2 (de) | Verfahren und Vorrichtung zum Dekodieren von Strichkodes mit Mehrfachabtastung | |
DE69131394T2 (de) | Maschinenlesbares Zeichen mit Mehrfachauflösung | |
EP1260933B1 (de) | Verfahren zum Erfassen von zweidimensionalen Codes | |
DE3854885T2 (de) | Kombinieren von gelesenen Strichcode-Daten | |
DE69126231T2 (de) | Leser für Strichkodierungen | |
DE69027757T2 (de) | Verfahren zur Dekodierung von strichkodierten Symbolen aus Teilabtastungen | |
DE69523965T2 (de) | Erkennungsverfahren für eine zweidimensionale Kodierung | |
EP3428834B1 (de) | Optoelektronischer codeleser und verfahren zum lesen von optischen codes | |
DE69810581T2 (de) | Merkmalkorrelator für Fingerabdrücke | |
DE69709165T2 (de) | Vorrichtung und verfahren zur dekodierung von streifencode-symbolen durch quotenanalyse der modulformate | |
DE69518098T2 (de) | Verfahren und Vorrichtung zum Lesen eines optischen zweidimensionalen Kodes | |
DE3633743C2 (de) | ||
DE69835358T2 (de) | Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes | |
DE69126811T2 (de) | Streifenkodeleser für alle Richtungen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |