-
HINTERGRUND
-
Es ist üblich, Strichcode-Lesegeräte zu finden, die in einer Vielzahl von Umgebungen wie Einzelhandelsumgebungen, Lagern, Produkttransporteinrichtungen, Fabriken und so weiter verwendet werden. In vielen Fällen wird von diesen Strichcode-Lesegeräten erwartet, dass sie über einen weiten Entfernungsbereich betrieben werden, was dem Bediener die Möglichkeit gibt, Strichcodes von nur wenigen Zoll bis zu zehn Fuß Entfernung zu lesen. Obwohl es möglich ist, solche Lesegeräte mit einer einzigen Bildgebungsanordnung zu konstruieren, ist dieses Design nicht kosteneffektiv, da es komplexe optische Komponenten erfordert, die zur Erfassung von Bilddaten über den großen Arbeitsbereich eingesetzt werden können. Stattdessen basiert ein üblicherer Ansatz auf mehreren (oft zwei) Bildgebungsanordnungen, wobei jede Anordnung konfiguriert ist, um Bilddaten über einen Teilbereich des gesamten Arbeitsbereichs zu erfassen. Dieses Verfahren ist vorteilhaft, da es einfachere optische Komponenten verwendet, die sowohl robuster als auch kostengünstiger sein können. Es gibt aber auch Nachteile. Durch die Verwendung mehrerer Bildgebungsanordnungen kann das Strichcodelesegerät beispielsweise mit der Aufgabe betraut werden, zu versuchen, einen Strichcode in mehreren entsprechenden Bildern zu dekodieren. Dies kann die der Bildanalyse zugewiesenen Rechenressourcen erhöhen, den gesamten Scanvorgang verzögern und/oder den Stromverbrauch erhöhen, was bei kabellosen Lesegeräten zu einem schnelleren Batterieverbrauch führt. Daher ist es notwendig, die Dekodierungsvorgänge in Strichcodelesegeräten mit mehreren Bildgebungsanordnungen zu optimieren.
-
BESCHREIBUNG
-
Dementsprechend sind zumindest einige Ausführungsformen der vorliegenden Erfindung auf Vorrichtungen, Systeme und Verfahren zum Optimieren von Dekodierungsvorgängen in Strichcodelesegeräten mit mehreren Bildgebungsanordnungen gerichtet.
-
In einer Ausführungsform ist die vorliegende Erfindung ein Strichcodelesegerät, das umfasst: eine erste Bildgebungsanordnung, die konfiguriert ist, um ein erstes Bild über einem ersten Sichtfeld (FOV) aufzunehmen; eine zweite Bildgebungsanordnung, die relativ zu der ersten Bildgebungsanordnung positioniert und konfiguriert ist, um ein zweites Bild über einem zweiten FOV aufzunehmen; und eine Steuerung, die kommunizierend mit der ersten Bildgebungsanordnung und der zweiten Bildgebungsanordnung gekoppelt ist. Die Steuerung ist konfiguriert, um: ein erstes Kontrastlevel innerhalb eines ersten Bereichs zu berechnen, wobei der erste Bereich innerhalb des ersten Bildes liegt; ein zweites Kontrastlevel innerhalb eines zweiten Bereichs zu berechnen, wobei der zweite Bereich innerhalb des zweiten Bildes liegt; einen ersten Strichcode-Dekodierungsvorgang auf dem ersten Bild auszuführen, wenn das erste Kontrastlevel größer als das zweite Kontrastlevel ist; und den ersten Strichcode-Dekodierungsvorgang auf dem zweiten Bild auszuführen, wenn das zweite Kontrastlevel größer als das erste Kontrastlevel ist.
-
In einer weiteren Ausführungsform ist die vorliegende Erfindung eine Bildgebungsmaschine zur Verwendung in einem Strichcodelesegerät. Die Bildgebungsmaschine umfasst: eine erste Bildgebungsanordnung, die konfiguriert ist, um ein erstes Bild über einem ersten FOV aufzunehmen; eine zweite Bildgebungsanordnung, die relativ zu der ersten Abbildungsanordnung positioniert und konfiguriert ist, um ein zweites Bild über einem zweiten FOV aufzunehmen; und eine Steuerung, die kommunizierend mit der ersten Bildgebungsanordnung und der zweiten Bildgebungsanordnung gekoppelt ist. Die Steuerung ist konfiguriert, um: ein erstes Kontrastlevel innerhalb eines ersten Bereichs zu berechnen, wobei der erste Bereich innerhalb des ersten Bildes liegt; ein zweites Kontrastlevel innerhalb eines zweiten Bereichs zu berechnen, wobei der zweite Bereich innerhalb des zweiten Bildes liegt; einen ersten Strichcode-Dekodierungsvorgang auf dem ersten Bild auszuführen, wenn das erste Kontrastlevel größer als das zweite Kontrastlevel ist; und den ersten Strichcode-Dekodierungsvorgang auf dem zweiten Bild auszuführen, wenn das zweite Kontrastlevel größer als das erste Kontrastlevel ist.
-
In noch einer weiteren Ausführungsform ist die vorliegende Erfindung ein Verfahren zum Dekodieren eines Strichcodes mit einem Strichcodelesegerät, das eine Steuerung aufweist, die kommunizierend mit einer ersten Bildgebungsanordnung und einer zweiten Bildgebungsanordnung gekoppelt ist, wobei das Verfahren umfasst: Erfassen eines ersten Bildes mittels der ersten Bildgebungsanordnung über ein erstes FOV; Erfassen eines zweiten Bildes mittels der zweiten Bildgebungsanordnung über ein zweites FOV; Berechnen, mittels der Steuerung, eines ersten Kontrastlevels innerhalb eines ersten Bereichs, wobei der erste Bereich innerhalb des ersten Bildes liegt; Berechnen, mittels der Steuerung, eines zweiten Kontrastlevels innerhalb eines zweiten Bereichs, wobei der zweite Bereich innerhalb des zweiten Bildes liegt; Ausführen eines ersten Strichcode-Dekodierungsvorgangs auf dem ersten Bild, wenn das erste Kontrastlevel größer als das zweite Kontrastlevel ist; und Ausführen des ersten Strichcode-Dekodierungsvorgangs auf dem zweiten Bild, wenn das zweite Kontrastlevel größer als das erste Kontrastlevel ist.
-
Diese und andere Merkmale, Aspekte und Vorteile der vorliegenden Offenbarung werden mit Bezug auf die folgenden Zeichnungen, Beschreibungen und etwaige nachfolgende Ansprüche besser verstanden.
-
Figurenliste
-
- 1 veranschaulicht die perspektivische Vorder- und Rückansicht eines Strichcode-Lesegerätes gemäß einer Ausführungsform der vorliegenden Erfindung.
- 2 veranschaulicht ein schematisches Blockschaltbild eines Teils eines Strichcode-Lesegerätes gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3A veranschaulicht eine perspektivische Ansicht einiger Komponenten eines Strichcode-Lesegerätes gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3B veranschaulicht eine obere Schnittansicht der Komponenten von 3A.
- 4A ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Dekodieren eines Strichcodes mit einem Strichcode-Lesegerät gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
- 4B ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Dekodieren eines Strichcodes mit einem Strichcode-Lesegerät gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
- 5A veranschaulicht ein beispielhaftes Bild, das von einer Bildgebungsanordnung aufgenommen wurde.
- BILD 5B veranschaulicht ein Histogramm des Bildes von 5A.
- BILD 6A veranschaulicht ein beispielhaftes Bild, das von einer Bildgebungsanordnung aufgenommen wurde.
- BILD 6B veranschaulicht ein Histogramm des Bildes von 6A.
-
DETAILLIERTE BESCHREIBUNG
-
Unter Bezugnahme auf 1 ist darin ein beispielhaftes Strichcode-Lesegerät 100 mit einem Gehäuse 102 mit einem Hohlraum zur Aufnahme interner Komponenten, einem Auslöser 104 und einem Fenster 106 dargestellt. Das Strichcode-Lesegerät 100 kann im Freihandmodus als stationärer Arbeitsplatz verwendet werden, wenn es auf die Arbeitsplatte in eine Halterung (nicht dargestellt) gestellt wird. Das Strichcode-Lesegerät 100 kann auch im handgehaltenen Modus verwendet werden, wenn es von der Arbeitsplatte (oder einer anderen Oberfläche) aufgenommen und in der Hand eines Bedieners gehalten wird. Im Freihandmodus können Produkte verschoben, an dem Fenster 106 vorbeigezogen oder diesen präsentiert werden. Im handgehaltenen Modus kann das Strichcode-Lesegerät 100 auf einen Strichcode auf einem Produkt ausgerichtet werden, und der Auslöser 104 kann manuell gedrückt werden, um die Abbildung des Strichcodes zu starten. In einigen Ausführungsformen kann auf die Halterung verzichtet werden, und das Gehäuse 102 kann auch in anderen handgehaltenen oder nicht-handgehaltenen Formen ausgeführt sein.
-
2 veranschaulicht ein schematisches Blockschaltbild eines Teils eines Strichcode-Lesegerätes 100 gemäß einigen Ausführungsformen. Es sei versanden, dass 2 nicht maßstabsgetreu gezeichnet ist. Das Strichcode-Lesegerät 100 in 2 umfasst die folgenden Komponenten: (1) eine erste Bildgebungsanordnung 110, die einen ersten linearen Bildgebungssensor 112 und eine erste Linsenanordnung 114 umfasst; (2) eine zweite Bildgebungsanordnung 116, die einen zweiten linearen Bildgebungssensor 118 und eine zweite Linsenanordnung 120 umfasst; (3) eine Beleuchtungsquelle 122; (4) eine Ziellichtanordnung 123 mit einer Ziellichtquelle 125 und einer Ziellinsenanordnung 127 (auch als Zielstrahlformer bezeichnet); (5) eine Leiterplatte (PCB) 124, die die ersten und zweiten linearen Bildgebungssensoren 112, 118 und die Beleuchtungsquelle 122 trägt; (6) eine Steuerung 126, die auf der Leiterplatte 124 positioniert und kommunizierend mit den ersten und zweiten linearen Bildgebungssensoren 112, 118 und der Beleuchtungsquelle 124 gekoppelt ist; (7) einen mit der Steuerung 126 verbundenen Speicher 128; und (8) eine Beleuchtungslinsenanordnung 130, die vor der Beleuchtungsquelle 122 positioniert ist. Beim Verweisen auf Teile des Strichcode-Lesegerätes kann gruppiert und als „Bildgebungsmaschine“ bezeichnet werden. In einigen Fällen kann man sagen, dass die Bildgebungsmaschine Komponenten zur Bilderfassung wie den/die Bildsensor(en) umfasst. In anderen Fällen kann man sagen, dass die Bildgebungsmaschine zusätzliche Elemente wie z.B. eine Ziellichtanordnung umfasst. In noch weiteren Fällen kann man sagen, dass eine Bildgebungsmaschine Bilderfassungskomponenten wie den/die Bildsensor(en) zusammen mit der Steuerung, mit der sie gekoppelt sind, umfasst. Zusätzlich ist zu beachten, dass Verweise auf eine Steuerung mehrere integrierte Schaltungen umfassen können, die zusammenwirken, um verschiedene Lesegerätkomponenten zu steuern und/oder verschiedene Berechnungen und/oder Schritte zu analysieren/durchzuführen. Diese Funktionen können durch Programmierung der Steuerung mit bestimmten Anweisungen in Form von Computercode und/oder durch Konfiguration einer bestimmten auszuführenden Aktion als Hardware-Antwort auf ein Eingangssignal ausgeführt werden.
-
Die ersten und zweiten linearen Bildsensoren 112, 118 können entweder CCD- oder CMOS-Linearbildgebungssensoren sein, die im Allgemeinen mehrere lichtempfindliche Pixelelemente umfassen, die in einer eindimensionalen Anordnung angeordnet sind. Die ersten und zweiten linearen Bildgebungssensoren 112, 118 sind ausgeführt, um Licht zu erfassen, das jeweils von der ersten und zweiten Linsenanordnung 114, 120 entlang eines jeweiligen optischen Pfades oder der Achse 132, 134 durch das Fenster 106 aufgenommen wurde. Im Allgemeinen ist jedes jeweilige Paar von linearem Bildgebungssensor und Bildgebungslinsenanordnung so ausgelegt, dass sie zusammen arbeiten, um gestreutes, reflektiertes oder von einem Strichcode emittiertes Licht als Pixeldaten über ein eindimensionales Sichtfeld (FOV) zu erfassen, das sich entlang einer jeweiligen linearen FOV-Ebene erstreckt. Allerdings ist jedes Linsen/Bildgebungssensorpaar (auch als optische Baugruppe bezeichnet) mit unterschiedlichen Parametern konfiguriert.
-
In der derzeit beschriebenen Ausführungsform ist die erste Bildgebungsanordnung 110 so ausgeführt, dass sie Strichcodes über einen relativ weiten Arbeitsabstand liest, der sich zwischen FWD1 und FWD2 erstreckt. In einigen Ausführungsformen ist FWD1 etwa 24 Zoll vom Fenster 106 und FWD2 etwa 600 bis 680 Zoll vom Fenster 106 entfernt. In einigen Ausführungsformen erstreckt sich FWD2 über 680 Zoll hinaus. Zusätzlich erfasst die Bildgebungsanordnung 110 Licht von einem relativ schmalen FOV 136. Andererseits ist die zweite optische Anordnung 116 so ausgeführt, dass sie Strichcodes über einen relativ nahen Arbeitsabstand liest, der sich zwischen NWD1 und NWD2 erstreckt. In einigen Ausführungsformen ist NWD1 etwa 0 Zoll vom Fenster 106 und NWD2 etwa 28 bis 32 Zoll vom Fenster 106 entfernt. Zusätzlich erfasst die Bildgebungsanordnung 116 Licht von einem relativ breiteren FOV 138.
-
Ein Beispiel für die Komponentenanordnung von 2 ist veranschaulichend in einer perspektivischen Ansicht von 3A und der oberen Schnittansicht von 3B gezeigt, die einige Komponenten des Lesegeräts 100 in teilweise zusammengebauter Form darstellen. In dieser Ausführungsform ist die Zielanordnung zwischen der ersten Bildgebungsanordnung und der zweiten Bildgebungsanordnung positioniert. In einer bevorzugten Konfiguration ist die Zielanordnung näher an der zweiten (nahen) Bildgebungsanordnung positioniert als die erste (ferne) Bildgebungsanordnung. Dies kann von Vorteil sein, da die Verschiebung des Ziellichtmusters relativ zum FOV der zweiten (nahen) Bildgebungsanordnung durch Parallaxe reduziert wird. Zusätzlich sind in der in den 3A und 3B gezeigten Ausführungsform der erste lineare Bildgebungssensor 112 und der zweite lineare Bildgebungssensor 118 auf einem Substrat (wie beispielsweise einer Leiterplatte 124) so positioniert, dass sich ein Abstand zwischen dem ersten linearen Bildgebungssensor 112 und der ersten Linsenanordnung 114 von einem Abstand zwischen dem zweiten linearen Bildgebungssensor 118 und der zweiten Linsenanordnung 120 unterscheidet. Darüber hinaus können die Bildgebungsanordnungen und die Zielanordnung so angeordnet sein, dass ihre jeweiligen Sichtfelder (die in den 4 und 5 koplanar dargestellt sind) und die jeweiligen Ebenen, auf denen sie sich erstrecken, einen schrägen Winkel relativ zu einer Leiterplattenebene bilden, die durch die Längs- und Breitenrichtungen der Leiterplatte 124 definiert ist.
-
Um den Betrieb des Strichcode-Lesegerätes 100 zu optimieren, kann eine Vorverarbeitung der von jeder Bildgebungsanordnung erfassten Bilddaten vor der Ausführung von Dekodierungsvorgängen durchgeführt werden. Vorzugsweise wird die Vorverarbeitung in kürzerer Zeit als ein vollständiger Dekodierungsvorgang ausgeführt und gibt einen Hinweis darauf, welches Bild (zumindest anfänglich) bei dem vollständigen Dekodierungsvorgang verwendet werden sollte. Ein Beispiel für solche Vorverarbeitungsvorgänge kann mit der Hilfe von jeweiligen Bildkontrastlevels realisiert werden, wie im Folgenden näher beschrieben.
-
Unter Bezugnahme auf 4A ist darin ein Flussdiagramm dargestellt, das ein beispielhaftes Verfahren 400 zum Dekodieren eines Strichcodes mit einem Strichcode-Lesegerät darstellt. Das Strichcode-Lesegerät kann das Lesegerät 100 sein, der eine Steuerung 126 umfasst, die kommunizierend mit einer ersten Bildgebungsanordnung 110 und einer zweiten Bildgebungsanordnung 116 gekoppelt ist. Das Verfahren umfasst die Schritte 402 und 404, wobei das Lesegerät mittels den jeweiligen ersten und zweiten Bildgebungsanordnungen jeweils erste und zweite Bilder einer Umgebung aufnimmt. Bei Verwendung mit dem Lesegerät 100 mit einer in 2 dargestellten Konfiguration wird das erste Bild von der ersten Bildgebungsanordnung 110 über ein erstes Sichtfeld (FOV) 136 und das zweite Bild von der zweiten Bildgebungsanordnung 116 über ein zweites FOV 138 erfasst. Vorzugsweise, aber nicht notwendigerweise, werden die Bilder gleichzeitig aufgenommen. Da beide Sichtfelder 136, 138 im Allgemeinen in die gleiche Richtung zeigen, erscheint in beiden von diesen Sichtfeldern mindestens ein Teil eines Ziels (gewöhnlicherweise aufweisend einen Strichcode, der gelesen werden soll). Da jedoch ein FOV (z.B. FOV 136) konfiguriert sein kann, um Bilddaten über einen weiter entfernten Arbeitsbereich als das andere FOV (z.B. FOV 138) zu erfassen, wird eines der aufgenommenen Bilder wahrscheinlich mehr im Fokus sein als das andere Bild. Darüber hinaus wird die tatsächliche Zusammensetzung der jeweiligen Bilder durch den Einsatz unterschiedlicher Optiken in den Bildgebungsanordnungen variieren. Ein Beispiel für ein erstes Bild, das von der ersten Bildgebungsanordnung 110 von einem Ziel aufgenommen wird, das in einem vorbestimmten Abstand weg von dem Lesegerät 100 positioniert ist, ist in 5A dargestellt und ein Beispiel für ein zweites Bild, das von der zweiten Bildgebungsanordnung 116 von dem gleichen Ziel aufgenommen wird, das in dem gleichen vorbestimmten Abstand weg von dem Lesegerät 100 positioniert ist, ist in 6A dargestellt. Die Durchschnittsfachleute werden erkennen, dass, da die Bildgebungsanordnungen 110, 116 beispielhaft als lineare Bildgeber aufweisend beschrieben sind, ursprünglich aufgenommene erste und zweite Bilder 500, 600 eine Höhe von einem Pixel haben. Zur Veranschaulichung wurde jedoch die Höhe dieser Pixel (und damit die Bilder insgesamt) erhöht, was zu einer gewissen Verzerrung des Seitenverhältnisses der Bilder führt. Mit anderen Worten wurden Bilder in vertikaler Richtung gedehnt.
-
Beim Aufnehmen der Bilder 500, 600 in den Schritten 402, 404 werden die Bilder von der Steuerung vorverarbeitet, um zu bestimmen, welches der Bilder (zumindest zuerst) verwendet werden sollte, um einen Dekodierungsvorgang durchzuführen. Wie in Schritt 406 dargestellt, umfasst dies den Vorgang des Berechnens eines ersten Kontrastlevels innerhalb eines ersten Bereichs des ersten Bildes. Während es möglich sein kann, das gesamte erste Bild 500 als ersten Bereich zu verwenden, um notwendige Berechnungen durchzuführen, ist der erste Bereich in einer bevorzugten Ausführungsform eine Teilmenge des ersten Bildes 500. Das Beschränken des ersten Bereichs auf einen Teil des Gesamtbildes 500 kann zu einer reduzierten Rechenlast für die Steuerung und die unterstützenden Komponenten führen, was die Verarbeitungszeiten potenziell erhöhen und den Stromverbrauch senken kann. Darüber hinaus kann die Konzentration auf einen Zielbereich eines Bildes zu konsistenteren und besseren Ergebnissen führen, da Bereiche, die sich wahrscheinlich außerhalb des angestrebten Ziels befinden, bei der Bildanalyse unberücksichtigt bleiben können. Somit kann der erste Bereich als eine Teilmenge (d.h. ein Teil) des ersten Bildes nach beliebigen Kriterien ausgewählt werden, die sich als anwendbar und/oder wünschenswert erweisen. So kann beispielsweise der erste Bereich einen vorbestimmten Prozentsatz (z.B. 5%, 15%, 20%, 25%, 30%, 33%, 35%, 40% oder einem anderen geeigneten Prozentsatz) des ersten Bildes aufweisen, wo der erste Bereich beispielsweise um die Mitte des ersten Bildes zentriert ist. Wenn man also dieses Beispiel auf ein lineares Bild wie das Bild 500 anwendet, das 2500 Pixel breit ist, würde ein Bereich, der einem Abschnitt entspricht, der 20% des Gesamtbildes abdeckt und um die Mitte des Bildes zentriert ist, die Pixel 1001 -1500 abdecken, wenn die Pixel fortlaufend mit 1 bis 2500 nummeriert sind. Mit anderen Worten würde der Bereich die zentralen 500 Pixel abdecken. Darüber hinaus kann der spezifische Teil des Bildes, der von dem Bereich von Interesse abgedeckt wird, durch eine beliebige Anzahl von zugrunde liegenden Faktoren bestimmt werden, die selbst eine zusätzliche Analyse erfordern können, aber nicht müssen. So kann beispielsweise ein Bereich von Interesse nicht um die Mitte eines Bildes zentriert sein, sondern stattdessen um einen kalibrierten Punkt, der einen Null-Parallaxenpunkt bei einem bestimmten Arbeitsabstand anzeigen soll. Dementsprechend kann ein Bereich eines Bildes letztendlich eine beliebige Menge oder Teilmenge von Pixeln dieses Bildes sein, wobei die Menge/Teilmenge von einigen zugrunde liegenden Faktoren bestimmt wird. Das gleiche Konzept könnte auch auf einen zweidimensionalen Sensor angewendet werden, bei dem der gewünschte Bereich aus einem beliebigen anwendbaren/gewünschten Teil des Gesamtbildes gebildet wird.
-
In der aktuell beschriebenen Ausführungsform ist der erste Bereich 502 als ein Satz von 166 aufeinanderfolgenden horizontalen Pixeln ausgewählt, die um einen vorbestimmten, Null-Parallaxenpunkt (Pixel) 504 zentriert sind. In einigen Ausführungsformen kann das Kontrastlevel innerhalb dieses Bereichs berechnet werden, indem ein Weißlevel und ein Schwarzlevel bestimmt und das Kontrastlevel mit einer Differenz zwischen Weißlevel und Schwarzlevel verknüpft wird. Das Weißlevel kann als niedrigster Helligkeitswert einer Teilmenge der hellsten Pixel eines jeweiligen Bereichs und ein Schwarzlevel kann als höchster Helligkeitswert einer Teilmenge der dunkelsten Pixel des jeweiligen Bereichs definiert werden. Eine Möglichkeit, diese Werte zu erhalten, besteht darin, ein Histogramm des Bereichs von Interesse abzuleiten und zu analysieren. 5B veranschaulicht ein Histogramm des beispielhaften Bereichs 502, das die Pixelanzahl innerhalb des Bereichs gegen eine 8-Bit-Helligkeitsskala im Bereich von 0 bis 255 plottet. Um das Weißlevel aus diesem Histogramm zu berechnen, kann die Teilmenge der hellsten Pixel des Bereichs auf einen vorgegebenen Wert eingestellt werden, wie z.B. 5%, 10%, 12%, 12,5%, 13%, 15%, 20%, etc. der Gesamtmenge der Pixel in dem Bereich. Unter der Annahme, dass für die Zwecke dieses Beispiels die Teilmenge der hellsten Pixel des Bereichs 502 12,5% des Bereichs 502 beträgt, würde dies bedeuten, dass die Teilmenge 21 hellste Pixel 506 (12,5% von 166 Pixeln des Bereichs 502 aufgerundet auf eine vollständige Pixelanzahl) in diesem Bereich aufweist, die in 5B in einfarbiger schwarzer Farbe dargestellt sind. Wenn dies mit den Histogrammdaten kombiniert wird, ist es möglich, den niedrigsten Helligkeitswert innerhalb der 21 hellsten Pixel 506 zu erhalten. Eine andere Möglichkeit, es zu betrachten, wäre, sich von rechts im Diagramm (Helligkeitswert 255) ausgehend und nach links zu bewegen, die Pixelanzahl hinzuzufügen, bis 21 Pixel erreicht sind. Der Helligkeitswert, bei dem 21 Pixel erreicht werden, bedeutet den niedrigsten Helligkeitswert innerhalb der 21 hellsten Pixel und damit das Weißlevel für den Bereich 502. In 5B wird das Weißlevel mit einem Helligkeitswert von 125 dargestellt.
-
Ähnlich wie das Weißlevel kann auch das Schwarzlevel aus dem Histogramm abgeleitet werden. Anstatt jedoch eine Teilmenge der hellsten Pixel zu evaluieren, konzentriert sich die Schwarzlevel-Berechnung auf den höchsten Helligkeitswert einer Teilmenge der dunkelsten Pixel des jeweiligen Bereichs. Wie bei der Teilmenge der hellsten Pixel kann die Teilmenge der dunkelsten Pixel des Bereichs auf einen vorgegebenen Wert eingestellt werden, wie z.B. 5%, 10%, 12%, 12,5%, 13%, 15%, 20%, etc. der Gesamtzahl der Pixel in dem Bereich. Zusätzlich kann, muss jedoch nicht, die Größe der Teilmenge der dunkelsten Pixel gleich der Größe der Teilmenge der hellsten Pixel sein. Unter der Annahme, dass für die Zwecke dieses Beispiels die Teilmenge der dunkelsten Pixel des Bereichs 502 12,5% des Bereichs 502 beträgt, würde dies bedeuten, dass die Teilmenge 21 dunkelste Pixel 508 (12,5% von 166 Pixeln des Bereichs 502 aufgerundet auf eine vollständige Pixelanzahl) in diesem Bereich aufweist, die in 5B in einfarbiger schwarzer Farbe angegeben ist. Wenn dies mit den Histogrammdaten kombiniert wird, ist es möglich, den höchsten Helligkeitswert innerhalb der 21 dunkelsten Pixel 508 zu erhalten. Eine andere Möglichkeit, es zu betrachten, wäre, sich von links im Diagramm (Helligkeitswert 0) ausgehend und nach rechts zu bewegen, die Pixelanzahl hinzuzufügen, bis 21 Pixel erreicht sind. Der Helligkeitswert, bei dem 21 Pixel erreicht werden, bedeutet den höchsten Helligkeitswert innerhalb der 21 dunkelsten Pixel und damit das Schwarzlevel für den Bereich 502. In 5B wird das Schwarzlevel mit einem Helligkeitswert von 100 dargestellt. Sobald das Weiß- und das Schwarzlevel bestimmt sind, kann das Kontrastlevel für den Bereich 502 berechnet werden, indem die Differenz zwischen dem Weißlevel und dem Schwarzlevel ermittelt wird. Im Falle des Bereichs 502 ist das Kontrastlevel 25 (=125 [Weißlevel] - 100 [Schwarzlevel]).
-
Ähnlich wie beim Berechnen des ersten Kontrastlevels wird in Schritt 408 für einen Bereich im zweiten Bild 600 ein zweiter Kontrastlevel berechnet. Es ist zu beachten, dass die vorstehend mit Bezug zum ersten Bild 500 beschriebenen Techniken zur Bereichsauswahl, Weißlevelberechnung und Schwarzlevelberechnung auch für das zweite Bild 600 anwendbar sind. So werden die Durchschnittsfachleute verstehen, dass es nicht notwendig ist, sie wörtlich wiederzugeben, wenn sie sich auf das zweite Bild 600 beziehen. Unter Berücksichtigung des Vorstehenden wird der zweite Bereich 602 als ein Satz von 166 aufeinanderfolgenden Pixeln ausgewählt, die um einen vorbestimmten Null-Parallaxenpunkt (Pixel) 604 zentriert sind. Um den Kontrast dieses Bereichs zu bestimmen, werden zunächst das Weiß- und das Schwarzlevel aus dem in 6B dargestellten Histogramm berechnet. Für die Zwecke dieser Ausführungsform ist das Weißlevel dem niedrigsten Helligkeitswert einer Teilmenge 606 von hellsten Pixeln des Bereichs 604 zugeordnet, wobei die Teilmenge 12,5% der Gesamtmenge der Pixel im Bereich 604 entspricht. Ebenso wird für die Zwecke dieser Ausführungsform das Schwarzlevel dem höchsten Helligkeitswert einer Teilmenge 608 von dunkelsten Pixeln der Region 604 zugeordnet, wobei die Teilmenge 12,5% der Gesamtmenge der Pixel in der Region entspricht. Basierend auf dem Histogramm von 6B kann man bestimmen, dass das Weißlevel einen Wert von 127 und das Schwarzlevel einen Wert von 36 hat. Daraus ergibt sich für den Bereich 604 ein Kontrastlevel von 91 (=127 [Weißlevel] - 36 [Schwarzlevel]).
-
Sobald das erste und zweite Kontrastlevel erreicht sind, kann ein Vergleich 410 zwischen einem Kontrastlevel und dem anderen Kontrastlevel durchgeführt werden, um festzustellen, ob das erste Bild 500 oder das zweite Bild 600 Gegenstand einer Strichcode-Dekodierung sein sollte. Wenn bestimmt wird, dass das erste Kontrastlevel C1 größer als das zweite Kontrastlevel C2 ist, kann die Steuerung angewiesen (d.h. konfiguriert) werden, einen Dekodierungsvorgang 412 auf dem ersten Bild 500 auszuführen. Andernfalls, wenn bestimmt wird, dass das zweite Kontrastlevel C2 größer als das erste Kontrastlevel C1 ist, kann die Steuerung angewiesen werden, einen Dekodierungsvorgang 414 auf dem zweiten Bild 600 auszuführen. Für den unwahrscheinlichen Fall, dass das erste Kontrastlevel C1 gleich dem zweiten Kontrastpegel C2 ist, kann die Steuerung programmiert (d.h. konfiguriert) werden, einen Dekodierungsvorgang eines der beiden Bilder auszuführen, das entweder durch Zufallsauswahl, auf einem der Bilder, das als Standardbild betrachtet wird, oder durch weitere Analyse der Bilder aufgenommen wurden.
-
Im Idealfall führen die oben genannten Schritte dazu, dass das entsprechende Bild für den Strichcode-Dekodierungsvorgang ausgewählt wird, was dazu führt, dass die Steuerung erfolgreich eine Strichcode-Decodierungsanalyse nur an einem der beiden Bilder durchführt. Dies kann unter anderem die Gesamtlesezeiten von Strichcodes verkürzen und die notwendigen Rechenressourcen reduzieren. Es kann jedoch Fälle geben, bei denen das Bild mit einem höheren Kontrastlevel keinen lesbaren Strichcode erfasst. Dementsprechend kann das Verfahren 400 durch zusätzliche Schritte ergänzt werden, die dem Lesegerät helfen, das entsprechende Bild für eine erfolgreiche Strichcode-Dekodierung zu erfassen.
-
So kann beispielsweise in der in 4A dargestellten Ausführungsform nach dem Bestimmen, dass der in Schritt 412/414 ausgeführte anfängliche Dekodierungsvorgang erfolglos ist, die Steuerung so programmiert sein, dass sie zu Schritt 402 zurückkehrt, um einen neuen Satz von Bildern aufzunehmen und die entsprechende Analyse an dem neuen Satz von Bildern durchzuführen. In einer weiteren Ausführungsform, die in 4B dargestellt ist, kann die Steuerung nach dem Bestimmen, dass der in Schritt 412/414 ausgeführte anfängliche Dekodierungsvorgang erfolglos ist, programmiert sein, um einen Dekodierungsvorgang an dem anderen der Bilder durchzuführen, das noch nicht für den Dekodierungsvorgang verwendet wurde. Wenn die Steuerung also einen erfolglosen Dekodierungsvorgang 412 auf dem ersten Bild ausgeführt hat, kann sie weiterhin angewiesen werden, einen Dekodierungsvorgang 416 auf dem zweiten Bild 600 auszuführen. Umgekehrt, wenn die Steuerung einen erfolglosen Dekodierungsvorgang 414 auf dem zweiten Bild ausgeführt hat, kann sie weiterhin angewiesen werden, einen Dekodierungsvorgang 418 auf dem ersten Bild 500 auszuführen. Von da an, wenn der Dekodierungsvorgang erfolgreich war, wird die letztere Routine beendet. Andernfalls kann die Steuerung programmiert sein, um zu Schritt 402 zurückzukehren, um einen neuen Satz von Bildern aufzunehmen und die entsprechende Analyse des neuen Satzes von Bildern durchzuführen. Darüber hinaus kann die Steuerung in einigen Ausführungsformen so programmiert sein, dass sie aufeinanderfolgende erfolglose Dekodierungen, die auf einem vom gleichen Bildgeber aufgenommenen Bild basieren, zählt und manuell einen Dekodierungsvorgang auf dem von dem anderen der Bildgeber aufgenommenen Bild versucht, wenn die Anzahl der erfolglosen Dekodierungen einen vorgegebenen Grenzwert überschreitet. Wenn das Lesegerät beispielsweise versucht, einen Strichcode aus dem vom ersten Bildgeber aufgenommenen Bild erfolglos zu dekodieren, und dies geschieht X-mal hintereinander (wobei X die Grenzwertzahl ist), wie durch die berechneten Kontrastlevels vorgegeben, kann beim X+1-Versuch, einen Lesevorgang auszuführen, die Steuerung so programmiert sein, dass sie ungeachtet der berechneten Kontrastlevels einen Dekodierungsvorgang für das vom zweiten Bildgeber aufgenommene Bild ausführt.
-
Es ist zu beachten, dass in einigen Ausführungsformen einzelne, wie vorstehend beschrieben, für die Kontrastanalyse ausgewählte Bereiche das Ergebnis einer zusätzlichen Kontrastlevelanalyse sein können, die zunächst auf einem größeren anfänglichen Bereich eingeleitet wurde. Wenn man sich beispielsweise auf das Bild von 5A bezieht, kann ein anfänglicher Bereich von 600 Pixeln, der um den Punkt 504 zentriert ist, analysiert werden, wobei dieser Bereich beispielsweise in drei Teilbereiche mit gleicher Pixelanzahl von 200 unterteilt wird. Die Kontrastlevels jeder dieser Bereiche können weiter gegeneinander ausgewertet werden, wobei der Teilbereich mit dem höchsten Kontrastlevel unter den drei ausgewählt wird als der Gesamtbereich, dessen Kontrast mit einem Bereich eines anderen Bildes verglichen wird. Es sei verstanden, dass dieser Ansatz gleichermaßen für alle zu evaluierenden Bilder gelten kann.
-
In der vorstehenden Beschreibung wurden spezifische Ausführungsformen beschrieben. Ein Durchschnittsfachmann erkennt jedoch, dass verschiedene Modifikationen und Änderungen vorgenommen werden können, ohne den Schutzumfang der Erfindung, wie sie in den Ansprüchen fortgeschrieben ist, zu verlassen. Dementsprechend sind die Beschreibung und die Figuren vielmehr in einem illustrativen als in einem einschränkenden Sinne zu betrachten, und alle derartigen Modifikationen sollen im Umfang der vorliegenden Lehren eingeschlossen sein. Darüber hinaus sollten die beschriebenen Ausführungsformen/Beispiele/Implementierungen nicht als sich gegenseitig ausschließend interpretiert werden, sondern als potenziell kombinierbar verstanden werden, wenn solche Kombinationen in irgendeiner Weise permissiv sind. Mit anderen Worten, jedes Merkmal, das in einer der zuvor genannten Ausführungsformen/Beispiele/Implementierungen offenbart wird, kann in jede der anderen oben genannten Ausführungsformen/Beispiele/Implementierungen aufgenommen werden. Darüber hinaus ist keiner der Schritte eines hierin offenbarten Verfahrens so zu verstehen, als hätten sie eine bestimmte Reihenfolge, es sei denn, es wird ausdrücklich darauf hingewiesen, dass keine andere Reihenfolge durch die übrigen Schritte des jeweiligen Verfahrens möglich oder erforderlich ist. Außerdem können zumindest einige der Figuren maßstabsgetreu gezeichnet sein oder auch nicht.
-
Die Nutzen, Vorteile, Lösungen für Probleme und alle Elemente, die zum Auftreten oder einer Verstärkung eines Nutzens, eines Vorteils, oder einer Lösung führen können, sind nicht als kritische, erforderliche oder wesentliche Merkmale oder Elemente in einigen oder sämtlichen Ansprüchen zu verstehen. Die Erfindung ist allein durch die angehängten Ansprüche definiert, einschließlich jeglicher Änderungen, die während der Anhängigkeit dieser Anmeldung gemacht werden und aller Äquivalente der erteilten Ansprüche.
-
Darüber hinaus können in diesem Dokument relationale Begriffe wie erster und zweiter, oberer und unterer und dergleichen lediglich verwendet sein, um eine Entität oder Aktion von einer anderen Entität oder Aktion zu unterscheiden, ohne notwendigerweise eine tatsächliche derartige Beziehung oder Reihenfolge zwischen solchen Entitäten oder Aktionen zu erfordern oder zu implizieren. Die Ausdrücke „umfasst“, „umfassend“, „hat“, „haben“, „aufweist“, „aufweisen“, „enthält“, „enthalten“ oder jede andere Variation davon sollen eine nicht-ausschließliche Einbeziehung abdecken, derart, dass ein Prozess, Verfahren, Produkt oder Vorrichtung, das eine Liste von Elementen umfasst, hat, aufweist, enthält, nicht nur diese Elemente aufweist, sondern auch andere Elemente aufweisen kann, die nicht ausdrücklich aufgelistet sind oder einem solchen Prozess, Verfahren, Produkt oder Vorrichtung inhärent sind. Ein Element, dem „umfasst ... ein“, „hat ... ein“, „aufweist ... ein“ oder „enthält ...ein“ vorausgeht, schließt ohne weitere Einschränkungen die Existenz zusätzlicher identischer Elemente in dem Prozess, dem Verfahren, dem Produkt oder der Vorrichtung, die das Element umfasst, hat, aufweist oder enthält, nicht aus. Die Begriffe „ein“ und „eine“ sind als eine oder mehrere definiert, sofern es hierin nicht ausdrücklich anders angegeben wird. Die Begriffe „im Wesentlichen“, „im Allgemeinen“, „ungefähr“, „etwa“ oder jede andere Version davon sind so definiert, dass sie von einem Fachmann auf diesem Gebiet nahekommend verstanden werden, und in einer nicht-einschränkenden Ausführungsform ist der Ausdruck definiert als innerhalb von 10%, in einer weiteren Ausführungsform als innerhalb von 5%, in einer weiteren Ausführungsform als innerhalb von 1% und in einer weiteren Ausführungsform als innerhalb von 0,5%. Der Ausdruck „gekoppelt“, wie er hierin verwendet wird, ist als verbunden definiert, jedoch nicht notwendigerweise direkt und nicht notwendigerweise mechanisch. Eine Vorrichtung oder eine Struktur, die auf eine bestimmte Art „ausgeführt“ ist, ist zumindest auch so ausgeführt, kann aber auch auf Arten ausgeführt sein, die nicht aufgeführt sind.
-
Es versteht sich, dass einige Ausführungsformen von einem oder mehreren generischen oder spezialisierten Prozessoren (oder „Verarbeitungsgeräten“) wie Mikroprozessoren, digitale Signalprozessoren, kundenspezifische Prozessoren und Field-Programmable-Gate-Arrays (FPGAs) und einmalig gespeicherten Programmanweisungen (einschließlich sowohl Software als auch Firmware) umfasst sein können, die den einen oder die mehreren Prozessoren steuern, um in Verbindung mit bestimmten Nicht Prozessorschaltungen einige, die meisten oder alle der hierin beschriebenen Funktionen des Verfahrens und/oder der Vorrichtung zu implementieren. Alternativ können einige oder alle Funktionen durch eine Zustandsmaschine implementiert sein, die keine gespeicherten Programmanweisungen aufweist, oder in einer oder mehreren anwendungsspezifischen integrierten Schaltungen (ASICs), in denen jede Funktion oder einige Kombinationen von bestimmten Funktionen als benutzerdefinierte Logik implementiert sind. Natürlich kann eine Kombination der beiden Ansätze verwendet werden.
-
Darüber hinaus kann eine Ausführungsform als ein computerlesbares Speichermedium implementiert sein, auf dem computerlesbarer Code gespeichert ist, um einen Computer (der zum Beispiel einen Prozessor umfasst) zu programmieren, um ein Verfahren auszuführen, wie es hierin beschrieben und beansprucht ist. Beispiele solcher computerlesbaren Speichermedien weisen eine Festplatte, eine CD-ROM, eine optische Speichervorrichtung, eine magnetische Speichervorrichtung, einen ROM (Nur-Lese-Speicher), einen PROM (programmierbarer Nur-Lese-Speicher), einen EPROM (löschbarer programmierbarer Nur-Lese-Speicher), einen EEPROM (elektrisch löschbarer programmierbarer Nur-Lese-Speicher) und einen Flash-Speicher auf, sind aber nicht hierauf beschränkt auf. Ferner wird davon ausgegangen, dass ein Durchschnittsfachmann, ungeachtet möglicher signifikanter Anstrengungen und vieler Designwahlen, die zum Beispiel durch verfügbare Zeit, aktuelle Technologie und wirtschaftliche Überlegungen motiviert sind, ohne Weiteres in der Lage ist, solche Softwareanweisungen und - programme und ICs mit minimalem Experimentieren zu generieren, wenn er durch die hierin offenbarten Konzepte und Prinzipien angeleitet wird.
-
Die Zusammenfassung der Offenbarung wird bereitgestellt, um es dem Leser zu ermöglichen, schnell das Wesen der technischen Offenbarung zu ermitteln. Sie wird mit dem Verständnis bereitgestellt, dass sie nicht zur Auslegung oder Einschränkung des Umfangs oder der Bedeutung der Ansprüche verwendet wird. Ferner kann der vorangehenden detaillierten Beschreibung entnommen werden, dass verschiedene Merkmale in verschiedenen Ausführungsformen zum Zwecke der Verschlankung der Offenbarung zusammengefasst sind. Diese Art der Offenbarung ist nicht so auszulegen, dass es die Absicht widerspiegelt, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern, als ausdrücklich in jedem Anspruch angegeben sind. Vielmehr ist es so, wie die folgenden Ansprüche zeigen, dass der erfinderische Gegenstand in weniger als allen Merkmalen einer einzigen offenbarten Ausführungsform liegt. Somit werden die folgenden Ansprüche hiermit in die detaillierte Beschreibung inkorporiert, wobei jeder Anspruch für sich als ein separat beanspruchter Gegenstand steht.