DE102015219541A1 - Dekodieren von strichcodes - Google Patents

Dekodieren von strichcodes Download PDF

Info

Publication number
DE102015219541A1
DE102015219541A1 DE102015219541.4A DE102015219541A DE102015219541A1 DE 102015219541 A1 DE102015219541 A1 DE 102015219541A1 DE 102015219541 A DE102015219541 A DE 102015219541A DE 102015219541 A1 DE102015219541 A1 DE 102015219541A1
Authority
DE
Germany
Prior art keywords
scan
bar code
unit
character
pattern
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.)
Pending
Application number
DE102015219541.4A
Other languages
English (en)
Inventor
James A. Negro
Ivan Bachelder
Shekhar SASTRY
Yael STEINSALTZ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cognex Corp
Original Assignee
Cognex Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cognex Corp filed Critical Cognex Corp
Publication of DE102015219541A1 publication Critical patent/DE102015219541A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1452Methods for optical code recognition including a method step for retrieval of the optical code detecting bar code edges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14131D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Character Input (AREA)
  • Character Discrimination (AREA)

Abstract

Systeme und Verfahren zum Dekodieren von Strichcodes werden bereitgestellt. Ein Scansignal wird entlang eines Scans durch den Strichcode aufgenommen. Ein erstes Charaktereinheitsgitter für ein Einheitsbreitenmuster innerhalb des Strichcodes entlang des Scans wird bestimmt. Mindestens ein Satz von Abtastkoeffizienten, die das Einheitsbreitenmuster zu einem Bereich des Scansignals in Beziehung setzen, wird basierend auf dem ersten Charaktereinheitsgitter bestimmt. Das Elementbreitenmuster für das Einheitsbreitenmuster wird basierend auf dem mindestens einen Satz von Abtastkoeffizienten und dem Bereich des Scansignals bestimmt.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der Erfindung betreffen im Allgemeinen das Dekodieren von Strichcodes.
  • HINTERGRUND
  • Strichcodes werden oft verwendet, um Informationen für verschiedene Zwecke zu kodieren, wie etwa automatisierte Identifizierung von Teilen. Ein Strichcode kann ein zweidimensionales (z. B. gewöhnlich rechteckiges) Identifikationssymbol sein, das eine oder mehr räumlich zusammenhängende Sequenzen von abwechselnden parallelen Strichen und Abständen umfasst. Jedes der Striche und Abstände wird oft als ein Element bezeichnet. Eine Sequenz von einem oder mehr zusammenhängenden Elementen bildet eine Elementsequenz. Ein Element in einer Strichcodeelementsequenz kann durch ihre relative Breite Information kodieren.
  • Typischerweise werden Strichcodes durch Drucken (z. B. mit Tinte) oder Markieren (z. B. mit Ätzen) von Strichelementen auf einem Substrat mit gleichförmiger Reflexion (z. B. Papier oder Metall) erzeugt. Die Striche haben typischerweise eine niedrigere Reflexion als das Substrat und erscheinen daher dunkler als die Abstände zwischen ihnen (z. B. wie wenn ein Strichcode mit schwarzer Tinte auf weißes Papier gedruckt wird). Aber Strichcodes können auf jede Weise gedruckt sein, wie etwa wenn ein Strichcode mit weißer Farbe auf ein schwarzes Objekt gedruckt wird. Um einen Strichcode einfacher vom Hintergrund zu differenzieren, werden die Striche typischerweise relativ weit entfernt von anderen Druck- oder sichtbaren Strukturen platziert. Eine solche Entfernung erzeugt einen Raum, oft als die Ruhezone bezeichnet, sowohl vor dem ersten Strich als auch nach dem letzten Strich. Alternativ können die Abstände und Ruhezonen gedruckt oder markiert sein, und die Striche werden implizit durch das Substrat gebildet.
  • Jedoch haben Lesegeräte oft Schwierigkeiten, Strichcodes zu dekodieren, die unter-aufgelöst sind, wie etwa Strichcodes die unterabgetastet (z. B. auf Grund niedriger Abtastraten oder Sensoren niedriger Auflösung) und/oder verschwommen (z. B. auf Grund von schlechter Fokussierung des Lesegeräts oder der Effekte von Bewegung) sind.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die hierin beschriebenen Techniken stellen die Dekodierung von unter-aufgelösten Strichcodes bereit, wie etwa Strichcodes, die unterausgelesen und/oder verschwommen sind. Die örtliche Reflexion für eine Scanprobe kann modelliert werden, indem man annimmt, dass die örtliche Reflexion ein Ergebnis des Integrierens des Gebiets unter dem tatsächlichen Strichcodereflexionsprofil ist, das innerhalb eines entsprechenden Scanabtastkastens fällt. Andere Modellierungstechniken können auch verwendet werden, wie etwa gewichtete Summierung, wo Profilwerte näher zur Mitte des Scanabtastkastens mehr zur Gesamtreflexion beitragen können.
  • Unter manchen Gesichtspunkten wird ein computergestütztes Verfahren zum Dekodieren eines Strichcodes bereitgestellt. Das Verfahren umfasst Empfangen, durch eine Rechnervorrichtung, von Daten von einem Sensor, die auf ein Scansignal entlang eines Scans durch einen Strichcode hinweisen. Das Verfahren umfasst Bestimmen, durch die Rechnervorrichtung, eines ersten Charaktereinheitsgitters für ein Einheitsbreitenmuster innerhalb des Strichcodes entlang des Scans. Das Verfahren umfasst Bestimmen, durch die Rechnervorrichtung, basierend auf dem ersten Charaktereinheitsgitter, mindestens eines Satzes von Abtastkoeffizienten, die das Einheitsbreitenmuster zu einem Bereich des Scansignals in Beziehung setzen. Das Verfahren umfasst Bestimmen, durch die Rechnervorrichtung, eines Elementbreitenmusters für das Einheitsbreitenmuster basierend auf dem mindestens einen Satz von Abtastkoeffizienten und dem Bereich des Scansignals.
  • Unter manchen Gesichtspunkten wird ein Strichcodelesegerät zum Dekodieren eines Strichcodes bereitgestellt. Das Strichcodelesegerät umfasst einen Prozessor, der konfiguriert ist, ein in Speicher gespeichertes Modul laufen zu lassen, das konfiguriert ist, den Prozessor zu veranlassen, Daten von einem Sensor zu empfangen, die auf ein Scansignal entlang eines Scans durch einen Strichcode hinweisen. Das in Speicher gespeicherte Modul ist konfiguriert, den Prozessor zu veranlassen, ein erstes Charaktereinheitsgitter für ein Einheitsbreitenmuster innerhalb des Strichcodes entlang des Scans zu bestimmen. Das in Speicher gespeicherte Modul ist konfiguriert, den Prozessor zu veranlassen, basierend auf dem ersten Charaktereinheitsgitter mindestens einen Satz von Abtastkoeffizienten, die das Einheitsbreitenmuster zu einem Bereich des Scansignals in Beziehung setzen, zu bestimmen. Das in Speicher gespeicherte Modul ist konfiguriert, den Prozessor zu veranlassen, ein Elementbreitenmuster für das Einheitsbreitenmuster basierend auf dem mindestens einen Satz von Abtastkoeffizienten und dem Bereich des Scansignals zu bestimmen.
  • Unter manchen Gesichtspunkten wird ein nicht-vergängliches computerlesbares Medium bereitgestellt. Das nicht-vergängliche computerlesbare Medium hat ausführbare Anweisungen, die operabel sind, einen Apparat zu veranlassen, Daten von einem Sensor zu empfangen, die auf ein Scansignal entlang eines Scans durch einen Strichcode hinweisen. Die ausführbaren Anweisungen sind operabel, einen Apparat zu veranlassen, ein erstes Charaktereinheitsgitter für ein Einheitsbreitenmuster innerhalb des Strichcodes entlang des Scans zu bestimmen. Die ausführbaren Anweisungen sind operabel, einen Apparat zu veranlassen, basierend auf dem ersten Charaktereinheitsgitter mindestens einen Satz von Abtastkoeffizienten, die das Einheitsbreitenmuster zu einem Bereich des Scansignals in Beziehung setzen, zu bestimmen. Die ausführbaren Anweisungen sind operabel, einen Apparat zu veranlassen, ein Elementbreitenmuster für das Einheitsbreitenmuster basierend auf dem mindestens einen Satz von Abtastkoeffizienten und dem Bereich des Scansignals zu bestimmen.
  • Diese und andere Fähigkeiten des offenbarten Gegenstands werden nach einer Durchsicht der folgenden Figuren, ausführlichen Beschreibung und Ansprüche vollständiger verstanden werden. Es versteht sich, dass die hierin verwendete Phraseologie und Terminologie nur dem Zweck der Beschreibung dient und nicht als beschränkend angesehen werden sollte.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Verschiedene Ziele, Merkmale und Vorteile des offenbarten Gegenstands können mit Bezug auf die folgende ausführliche Beschreibung des offenbarten Gegenstands vollständiger eingeschätzt werden, in Zusammenhang mit den folgenden Zeichnungen betrachtet, in denen gleiche Bezugsnummern gleiche Elemente identifizieren.
  • 1A veranschaulicht einen Strichcode, der unter Verwendung einer Zwei-Breiten-Symbologie erzeugt wurde;
  • 1B veranschaulicht die Dimensionen der Zwei-Breiten-Symbologie;
  • 2 veranschaulicht einen Strichcode, der unter Verwendung einer Mehr-Breiten-Symbologie erzeugt wurde;
  • 3 veranschaulicht ein beispielhaftes Scansignal;
  • 4 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1 SPM und 0 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 5 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1 SPM und 0 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 6 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1 SPM und 0,5 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 7 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1 SPM und –0,25 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 8 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1,33 SPM und 0,33 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 9 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 0,75 SPM und –0,25 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 10 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 0,84 SPM, 2,1 Breite (W) und –0,16 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 11 veranschaulicht ein beispielhaftes computergestütztes Verfahren zum Erzeugen eines bildbasierten Dekodierungsalgorithmus zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 12 veranschaulicht ein beispielhaftes computergestütztes Verfahren eines Laserscanner-Dekodieralgorithmus zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 13A–B veranschaulichen ein beispielhaftes computergestütztes Verfahren zum Dekodieren eines Strichcodes aus einem Scansignal, in Übereinstimmung mit manchen Ausführungsformen;
  • 14A–C veranschaulichen ein beispielhaftes computergestütztes Verfahren zum Orten und Dekodieren eines ersten Begrenzungscharakters zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 15 veranschaulicht ein beispielhaftes computergestütztes Verfahren zum Bestimmen eines Einheitsabtastkoeffizienten zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 16 veranschaulicht ein beispielhaftes computergestütztes Verfahren zum Bewerten eines Charakters aus einem Scansignal zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen;
  • 17 veranschaulicht ein beispielhaftes computergestütztes Verfahren zum Dekodieren eines Charakters aus einem Scansignal eines Mehr-Breiten-Strichcodes zum Dekodieren des Strichcodes, in Übereinstimmung mit manchen Ausführungsformen; und
  • 18 veranschaulicht ein beispielhaftes computergestütztes Verfahren zum Dekodieren eines Charakters aus einem Scansignal eines Zwei-Breiten- oder Mehr-Breiten-Strichcodes zum Dekodieren des Strichcodes, in Übereinstimmung mit manchen Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die hierin beschriebenen Techniken verwenden ein Modell der Quantisierungseffekte von Abtasten (z. B. einschließlich dramatischen Unter-Abtastens), um unter-aufgelöste Strichcodes zu dekodieren. In manchen Ausführungsformen kann das Modell durch Annähern der effektiven Scanabtastgebietbreite entlang des Scans für eine bestimmte Scanabtastung durch einen Scanabtastkasten erzeugt werden. Ein Scanabtastkasten kann ein Bereich von Positionen entlang des Scans sein, über den angenommen wird, dass Reflexionsinformation für jene Scanabtastung integriert wurde. In manchen Ausführungsformen hat der Scanabtastkasten eine Breite gleich dem Scanabtastabstand und ist auf der Scanabtastposition zentriert, so dass alle Scanabtastkasten kollektiv das Gebiet des Scans ohne Überlappung bedecken. Ein Fachmann wird verstehen, dass andere Abtastkastenbreiten auch möglich sind.
  • In manchen Ausführungsformen kann die lokale Reflexion für eine Scanabtastung modelliert werden, indem angenommen wird, dass die lokale Reflexion das Ergebnis des Integrierens des Gebiets unter dem tatsächlichen Strichcodereflexionsprofil ist, das innerhalb entsprechendem Scanabtastkasten fällt. Andere Modellierungstechniken können auch verwendet werden, wie etwa gewichtete Summierung, wo Profilwerte näher zur Mitte des Scanabtastkastens mehr zur Gesamtreflexion beitragen können.
  • Jegliches einer Anzahl von Strichcodedesigns, genannt Symbologien, können für einen Strichcode verwendet werden. Jede Symbologie kann Dimensionsbeschränkungen für Strich, Abstand und Ruhezone angeben, sowie wie genau Informationen kodiert werden. Beispiele für Strichcodesymbologien umfassen Code 128, Code 93, Code 39, Codabar, I2of5, MSI, Code 2 of 5, und UPC-EAN. Strichcodes können traditionelle „lineare” Symbologien (z. B. Code 128 und Code 39) umfassen, wo die gesamte Information entlang einer Dimension kodiert wird. Strichcodes können auch einzelne Reihen von „gestapelten” 2D-Symbolen umfassen (z. B. DataBar, PDF417, MicroPDF und die 2D-Komponenten von manchen zusammengesetzten Symbolen), von denen alle im Wesentlichen erlauben, Strichcodes aufeinanderzustapeln, um mehr Information zu kodieren.
  • Viele Strichcodesymbologien fallen in zwei Kategorien: Zwei-Breiten- und Mehr-Breiten-Symbologien. Beispiele für Zwei-Breiten-Symbologien umfassen zum Beispiel Code 39, Interleaved 2 of 5, Codabar, MSI, Code 2 of 5, und Pharmacode. Jedes Element einer Zwei-Breiten-Symbologie ist entweder schmal oder breit. Ein schmales Element hat eine Breite gleich der minimalen Merkmalgröße, X. Ein breites Element hat eine Breite gleich der Breitelementgröße, W. Die Breitelementgröße W ist typischerweise ein festes reales Vielfaches der minimalen Merkmalgröße. Zwei-Ebenen-Symbologien erlauben dabei jedem Element, einen von zwei möglichen Werten darzustellen, Z oder W.
  • Mehr-Breiten-Symbologien umfassen zum Beispiel Code 128, Code 93, UPC-EAN, PDF417, MicroPDF und DataBar. Jedes Element einer Mehr-Breiten-Symbologie ist ein ganzes Vielfaches, n, der minimalen Merkmalgröße (z. B. wo n eine ganze Zahl ist zwischen 1 und der maximalen Breite eines Elements, die von der Symbologie abhängen kann). Der Ausdruck Modul wird oft verwendet, um die minimale Merkmalgröße eines Mehr-Ebenen-Strichcodes zu bezeichnen, so dass jedes Element eines Mehr-Ebenen-Strichcodes aus einer ganzzahligen Anzahl von Modulen gebildet wird. Für viele Mehr-Breiten-Symbologien (z. B. wie etwa Code 128, Code 93 und UPC-EAN) liegt n im Bereich zwischen 1 und 4, kann aber viel größer sein (z. B. wie bei DataBar, wo n im Bereich zwischen 1 und 9 liegen kann).
  • Die Daten für jegliche Elementsequenz in einem Zwei- oder Mehr-Breiten-Strichcode werden durch eine entsprechende Sequenz von quantisierten Elementbreiten kodiert. Die Sequenz von Elementbreiten wird oft als das Elementbreitenmuster einer Elementsequenz bezeichnet. Das Elementbreitenmuster einer Zwei-Breiten-Elementsequenz ist ein binäres Muster, das aus schmalen (,X') und breiten (,W') Elementen besteht. Zum Beispiel wird das Elementmuster für einen Strich (W), Abstand (X), Strich (X), Abstand (Y), Strich (X), Abstand (W), Strich (X), Abstand (X) und Strich (W), wo X die minimale Merkmalgröße und W die Breitelementgröße ist, als WXXXXWXXW dargestellt. Das Elementbreitenmuster einer Mehr-Breiten-Elementsequenz ist ein Muster von ganzen Zahlen, die die Breite in Modulen für jedes entsprechende Element in der Sequenz angeben. Zum Beispiel wird das Elementbreitenmuster für einen Strich (n = 1), Abstand (n = 1), Strich (n = 1), Abstand (n = 3), Strich (n = 2), Abstand (n = 3) als 111323 dargestellt.
  • Strichcodeelemente werden oft zu aufeinanderfolgenden Charakteren (z. B. Buchstaben und Zahlen) gruppiert, die aus ihren jeweiligen Elementen in alphanumerische Werte dekodiert werden können. In manchen Ausführungsformen werden die Daten direkt aus der gesamten Sequenz von Elementbreiten (z. B. Pharmacode-Strichcodes) bestimmt. Die möglichen Charaktere, die für jede bestimmte Symbologie kodiert werden können, wird als ihr Charaktersatz bezeichnet. Abhängig von der Symbologie gibt es mehrere verschiedene Typen von Charakteren in einem Charaktersatz, einschließlich Begrenzer und Datencharaktere. Typischerweise gibt es nur wenige verschiedene mögliche Begrenzungscharaktermuster, aber eine große Anzahl möglicher Datencharakterelement-Breitenmustern. Es ist der Strang von Datencharakterwerten, dargestellt von einem Ende des Strichcodes zum anderen, die größtenteils den kodierten Strang für den gesamten Strichcode definieren.
  • Begrenzungscharaktere, manchmal Wächtermuster genannt, kommen oft am Anfang und Ende des Strichcodes vor. Begrenzungscharaktere können verwendet werden, um es Lesegeräten zu erlauben, zum Beispiel das Symbol zu detektieren, zu bestimmen, wo zu lesen begonnen und aufgehört werden soll, und/oder den Symbologietyp zu bestimmen. Am Anfang und Ende eines Strichcodes platzierte Begrenzungscharaktere werden oft Start- bzw. Stoppcharaktere genannt. Manche Symbologien (z. B. UPC-A und DataBar) haben auch Begrenzungscharaktere innerhalb des Symbols, die Abschnitte von Datencharakteren markieren. Schließlich haben manche Symbologien (z. B. Code 128) verschiedene Startbegrenzer, die bestimmen, wie die Datencharaktere interpretiert werden.
  • Datencharaktere sind die Charaktere, die die eigentliche Information in dem Strichcode kodieren. Das Elementbreitenmuster für einen Datencharakter ist mit einem alphanumerischen Wert assoziiert. Ein spezieller Datencharakter, Prüfsummencharakter genannt, ist oft auch spezifiziert. Der Wert dieses Charakters ist im Wesentlichen eine Summe der Werte aller anderen Datencharaktere, was es einem Lesegerät erlaubt, einen falsch ausgelesenen Strang zu entdecken. Die Sequenz von alphanumerischen Werten für alle Datencharaktere bildet einen Rohstrang, der dann, manchmal unter Verwendung spezieller Formatierungsregeln, in den eigentlichen kodierten Satz von Elementen für den Strichcode umgewandelt wird.
  • Unabhängig vom Typ ist jeder Charakterwert eines Charaktersatzes mit einem einzigartigen Elementbreitenmuster assoziiert. Zum Beispiel sind die Elementbreitenmuster für ein ,A' und ,B' im Code 39-Charaktersatz WXXXXWXXW bzw. XXWXXWXXW. Wie oben erklärt, ist das Elementbreitenmuster WXXXXWXXW für ,A' daher ein Strich (W), Abstand (X), Strich (X), Abstand (X), Strich (X), Abstand (W), Strich (X), Abstand (X) und Strich (W), wo X die minimale Merkmalgröße und W die Breitelementgröße ist. Die Elementbreitenmuster für ,A' und ,B' im Code 128-Charaktersatz sind 111323 bzw. 131123.
  • Es ist wichtig, anzumerken, dass für die meisten Symbologien alle Charaktere eines bestimmten Typs dieselbe physische Breite im Strichcode haben. Zum Beispiel haben Charaktere von Zwei-Breiten-Symbologien gewöhnlich eine konstante Anzahl von schmalen Strichen, schmalen Abständen, breiten Strichen und breiten Abständen, und beginnen typischerweise mit einem Strichelement. Charaktere von bestimmten Zwei-Breiten-Symbologien (z. B. Code 39) enden auch mit einem Strich und trennen einzelne Charaktere mittels eines speziellen Abstands namens Zwischencharakterlücke von konsistenter aber willkürlicher Breite. Solche Symbologien mit Zwischencharakterlücken zwischen Charakteren werden im Allgemeinen als diskrete Symbologien bezeichnet, während Symbologien ohne solche Lücken als kontinuierliche Symbologien bezeichnet werden. Im Gegensatz dazu haben Charaktere von Mehr-Breiten-Symbologien oft eine feste Anzahl von Gesamtmodulen, die jedes genau ein Modul breit sind, haben eine feste Anzahl von Strichen und Abständen und beginnen typischerweise mit einem Strich und enden mit einem Abstand (und haben daher keine Zwischencharakterlücke).
  • 1A veranschaulicht einen Strichcode 100, erzeugt mittels der Zwei-Breiten-Symbologie Code 39. Strichcode 100 enthält einen Satz von Elementsequenzen 102A, 102B, 102C bis 102N (kollektiv hierin als Elementsequenz 102 bezeichnet). Der Satz von Elementsequenzen kodiert den Strang PATENT 104, Jeder Buchstabe im Strang PATENT 104 wird mittels eines Datencharakters kodiert, wie etwa Elementsequenz 102B, die den Datencharakter P kodiert, und Elementsequenz 102C, die den Datencharakter A kodiert. Elementsequenzen 102A und 102N kodieren den Begrenzungscharakter, angedeutet mit *. Daher markieren Elementsequenzen 102A und 102N den Anfang und das Ende des Strichcodes 100. Wie in 1A gezeigt, hat jede Elementsequenz 102 im Strichcode 100 dieselbe physische Breite.
  • 1B ist eine vergrößerte Ansicht von Elementsequenz 102A. Elementsequenz 102A umfasst Element 154, welches ein Abstand mit der minimalen Merkmalbreite X ist. Elementsequenz 102A umfasst Element 152, welches ein Abstand mit der Breitelementgröße W ist. Elementsequenz 102A umfasst Element 156, welches ein Strich mit der minimalen Merkmalbreite X ist. Elementsequenz 102A umfasst Element 158, welches ein Strich mit der Breitelementgröße W ist.
  • 2 veranschaulicht Strichcode 200, erzeugt mittels Mehr-Breiten-Symbologie Code 128. Strichcode 200 enthält einen Satz von Elementsequenzen 202A, 202B, 202C, 202D bis 202E (kollektiv hierin als Elementsequenz 202 bezeichnet). Der Satz von Elementsequenzen kodiert den Strang PATENT 204. Wie in 1A wird jeder Buchstabe im Strang PATENT 204 mittels eines Datencharakters kodiert, wie etwa Elementsequenz 202B, die den Datencharakter P kodiert, und Elementsequenz 202C, die den Datencharakter A kodiert. Elementsequenz 202A kodiert die Startbegrenzungssequenz für den Strichcode 200. Elementsequenz 202E kodiert die Stoppbegrenzungssequenz für den Strichcode 200. Daher markieren Begrenzungselementsequenzen 202A und 202E den Anfang und das Ende des Strichcodes 200.
  • Wie in 2 gezeigt, hat jede Elementsequenz 202A–E im Strichcode 200 dieselbe physische Breite. 2 zeigt das Elementbreitenmuster für Charaktersequenz 202. Das Elementbreitenmuster für die Startbegrenzungscharakter-Elementsequenz 202A ist 11010010000. Das Elementbreitenmuster für die Elementsequenz 202B des Datencharakters P ist 11101110110. Das Elementbreitenmuster für die Elementsequenz 202C des Datencharakters A ist 10100011000. Das Elementbreitenmuster für die Elementsequenz 202D des Datencharakters T ist 11011100010. Das Elementbreitenmuster für die Stoppbegrenzungscharakter-Elementsequenz 202E ist 1100011101011.
  • Strichcodelesegeräte, die Vorrichtungen zum automatischen Dekodieren von Strichcodes sind, fallen im Allgemeinen in zwei Kategorien: Laserscanner oder bildbasierte Lesegeräte. In beiden Typen von Lesegerät wird Dekodieren typischerweise durch Messen der eindimensionalen (1D) Positionen der Kanten der Strichcodeelemente entlang eines oder mehr Scans durchgeführt, die entweder den physischen Strichcode oder ein diskretes Bild des Strichcodes von einem Ende zum anderen passieren. Jeder Scan ist typischerweise ein Liniensegment, kann aber jede kontinuierliche lineare Kontur sein.
  • Für jeden Strichcodelesegerätscan eines Strichcodes wird zuerst ein diskretes Signal (z. B. oft als ein Scansignal bezeichnet) extrahiert. Ein Scansignal besteht typischerweise aus nacheinander aufgenommenen Intensitätsmessungen entlang des Scans, hierin Scanabtastungen genannt. Jede Scanabtastung kann die gemessene Reflexion (relative Dunkelheit oder Helligkeit, gemessen durch reflektiertes Licht) über ein kleines Gebiet, oder Scanabtastgebiet, des Strichcodes darstellen, zentriert an der entsprechenden Position entlang des Scans. Das Muster von Scanabtastpositionen entlang des Scans wird hier als Scanabtastgitter bezeichnet. Das Gitter ist oft beinahe gleichförmig, was bedeutet, dass die Entfernung oder Scanabtastabstand zwischen Abtastpositionen entlang des Scans effektiv konstant ist. Der Scanabtastabstand bestimmt im Wesentlichen die Scanabtastauflösung des aufgenommenen Signals, typischerweise gemessen als die Zahl von Scanabtastungen pro Modul (wo ein Modul wie hier verwendet mit der minimalen Merkmalgröße für Zwei-Breiten-Symbologien synonym ist). Jedoch ist es möglich, dass der effektive Scanabtastabstand sich tatsächlich wesentlich aber kontinuierlich von einem Ende des Scans zum anderen Ende ändert, auf Grund von Perspektiveffekten, die dadurch verursacht werden, dass der Strichcode unter einem Winkel betrachtet wird oder um ein Objekt gewickelt ist, das nicht flach ist (z. B. eine Flasche).
  • Die Breite des Scanabtastgebiets für jede Aufnahme, relativ zum Scanabtastabstand, kann das Maß an Überlappung zwischen den Aufnahmen entlang des Scans bestimmen. Eine Erhöhung der Überlappung unter Aufnahmen kann die Unschärfe des Signals erhöhen. Eine Verringerung der Überlappung unter Aufnahmen kann die Wahrscheinlichkeit erhöhen, dass wichtige Merkmale des Signals nicht gemessen werden. Die Höhe jedes Scanabtastgebiets bestimmt, wieviel Information senkrecht zum Scan integriert wird. Eine größere Höhe einer Scanabtastung kann zu schärferen Elementkanten im Signal führen, wenn der Scan senkrecht zu den Strichen ist (z. B. so dass der Scan die redundante Information in den Strichen in der senkrechten Richtung ausnutzen kann). Jedoch können mit Zunahme des Scanwinkels relativ zum Strich, so dass er nicht mehr senkrecht zum Strich ist, diese Kanten umso unschärfer werden.
  • Für Laserscanner wird ein Scansignal extrahiert, indem die reflektierte Intensität des Lasers über die Zeit aufgenommen wird, während er entlang der Scankontur durch den physischen Strichcode schwenkt (z. B. während der Laser entlang einer Linie durch den Strichcode schwenkt). Jedes Abtastgebiet ist im Wesentlichen der Laser-„Spot” zu einem Zeitpunkt. Die Form des Laserspots ist typischerweise elliptisch, mit einer großen Achse, die senkrecht zum Scan orientiert ist, was den vorher erwähnten Ausgleich in der Breite und Höhe des Abtastgebiets ermöglichen kann. Da das aufgenommene Signal analog ist, kann die Abtastrate über die Zeit die Auflösung oder den Abtastabstand beeinflussen. Die Abtastrate über die Zeit kann für einen Laser zum Beispiel durch das Auflösungsvermögen des Lasers (z. B. wie gut ein kleiner Spot des Lasers fokussiert werden kann), die maximale temporale Abtastrate und/oder die Druckqualität des Strichcodes beschränkt sein.
  • Für bildbasierte Lesegeräte wird ein diskretes Bild des Strichcodes aufgenommen, wie etwa mittels Kameraoptiken und einem Bildsensor (z. B. einem CCD-Array). Das resultierende Bild kann eine 2D-Aufnahme des gesamten Strichcodes sein. Jede Bildaufnahme, oder Pixel, jenes Bildes ist selbst eine Messung der durchschnittlichen Reflexion eines kleinen Gebiets des Strichcodes, zentriert am entsprechenden Punkt in einem Bildabtastgitter. Dieses Gitter ist oft gleichförmig oder fast gleichförmig, was bedeutet, dass die Entfernung zwischen Bildabtastpositionen, oder der Bildabtastabstand, konstant ist. Dieser Abtastabstand bestimmt im Wesentlichen die Bildauflösung, typischerweise gemessen als die Anzahl von Pixeln pro Modul („PPM”). Jedoch ist es wie beim Laserscannen möglich, dass der effektive Bildabtastabstand sich tatsächlich wesentlich aber kontinuierlich von einem Ende des Strichcodes zum anderen auf Grund von Perspektiveffekten ändert.
  • Ein Scansignal kann dann für jeden Scan über ein Bild des Strichcodes durch Subabtasten des Bildes (z. B. Abtasten des bereits abgetasteten Signals) entlang des Scans aufgenommen werden. Der Scanabtastabstand wird durch die Abtastrate über den Raum (z. B. nicht Zeit, wie bei Laserscannern) bestimmt. Ein Fachmann kann einschätzen, dass es viele Wege gibt, diese Subabtastoperation durchzuführen. Zum Beispiel kann die Bildverarbeitungstechnik Projektion für ein Scanliniensegment genutzt werden. Bei der Projektion bestimmt die Höhe der Projektion im Wesentlichen die Höhe des Scanabtastgebiets für jede Abtastung, wodurch Information senkrecht zum Scan integriert wird. Als ein anders Beispiel kann die in U.S.-Patentanmeldung Nr. 13/336,275 mit dem Titel „Methods and Apparatus for One-Dimensional Signal Extraction”, eingereicht am 23. Dezember 2011, beschriebene Technik verwendet werden, die hiermit in ihrer Gänze hierin eingegliedert ist. Zum Beispiel kann das effektive Scanabtastgebiet für jede Scanabtastung elliptisch sein, analog zum elliptischen Spot, der in Laserscannern verwendet wird.
  • 3 veranschaulicht ein beispielhaftes Scansignal für eine Elementsequenz 302, die aus Strichcodeelementen 302A302K, kollektiv Strichcodeelemente, besteht. Der Scan 304 ist senkrecht zu den Strichcodeelementen 302. 3 zeigt das Scansignal 306, abgeleitet vom Scan 304. Das Scansignal 306 umfasst Scanabtastungen 308A, 308B bis 308N, kollektiv hierin als Scanabtastungen 308 bezeichnet. Jede Scanabtastung 308 stellt die gemessene Reflexion über einem entsprechenden elliptischen Scanabtastgebiet s0 311A bis sn 311N dar, innerhalb eines 1D-Bereichs entlang der Scanlinie 304 entsprechend den Scanabtastkasten s0 310A bis sn 310N. Zum Beispiel stellt Scanabtastung 308A die gemessene Reflexion über ein Scanabtastgebiet 311A dar, entsprechend Scanabtastkasten 310A, Scanabtastung 308B stellt die gemessene Reflexion über ein Scanabtastgebiet 311E dar, entsprechend Scanabtastkasten 310B, und Scanabtastung 308N stellt die gemessene Reflexion über ein Scanabtastgebiet 311N dar, entsprechend Scanabtastkasten 310N. Die Scanabtastung 308A hat eine hohe Reflexion, angegeben als „h”, weil die Aufnahme 310A durch Scanabtastgebiet 311A extrahiert wird, das ganz innerhalb Abstandselement 302A liegt. Die Scanabtastung 308B hat eine niedrigere Reflexion, weil das Abtastgebiet 308B nicht ganz innerhalb eines Abstandselements 302A liegt und auch Information aus Strichelement 302B integriert.
  • Ein wichtiger Unterschied zu Laserscannern ist jedoch, dass die Abtastauflösung eines Scansignals, das mittels eines bildbasierten Lesegeräts extrahiert wurde, inhärent durch die zu Grunde liegende Aufnahmeauflösung des aufgenommenen Bildes (z. B. die Pixel) beschränkt ist. Das heißt, es gibt keine Möglichkeit, dass das subabgetastete Scansignal irgendwelche zusätzlichen feineren Details erlangt, außer jenen, die in jedem Pixel enthalten sind. Wie in U.S.-Patentanmeldung Nr. 13/336,275 beschrieben, ist diese Beschränkung oft am schlimmsten, wenn der 1D-Scan ein Liniensegment ist, das am Pixelgitter ausgerichtet ist (z. B. perfekt horizontal oder vertikal zum Pixelgitter des aufgenommenen Bildes). Im Gegensatz dazu kann der bestmögliche Scanabtastabstand gleich dem zu Grunde liegenden Bildabtastabstand sein. Diese Beschränkung kann sich daher mit einem größeren Scanlinienwinkel abseits der Achse verbessern. In manchen Ausführungsformen kann der bestmögliche Scanabtastabstand von (1/sqrt(2)) mal der Bildabtastabstand erreicht werden, wenn der Scan ein Liniensegment ist, das in 45 Grad zum Pixelgitter orientiert ist und die größere Information reflektiert, die oft gefunden wird, wenn Strichcodes diagonal orientiert sind. Daher kann ein allgemeiner Nachteil dieser Auflösungsbeschränkung oft durch die Möglichkeit, ein viel größeres Gebiet abzudecken und zu analysieren, als dies mit einem Laserscanner möglich wäre, aufgewogen werden. Eine solche Auflösungsbeschränkung muss dennoch oft angegangen werden.
  • Sowohl bildbasierte Lesegeräte als auch Laserscanner müssen sich oft mit Problemen auseinandersetzen, wenn ein scharfes Signal (z. B. eines, das nicht unscharf ist), nicht aufgenommen werden kann. Sowohl bildbasierte Lesegeräte als auch Laserscanner haben oft eine beschränkte Tiefenschärfe, was im Wesentlichen der Bereich des Abstands vom Lesegerät ist, über den das aufgenommene Bild oder Laserscan fokussiert sein wird. Zusätzlich zu Tiefenschärfebeschränkungen können bildbasierte Lesegeräte unscharf sein. Unschärfe bezieht sich auf das Ausmaß, zu dem ein 1D-Signal auf Grund fehlender Fokussierung oder anderer Effekte verschmiert ist. Zum Beispiel kann ein 1D-Scansignal auf Grund des Prozesses unscharf sein, mit dem es aus einem Bild niedriger Auflösung extrahiert wird. Als ein anderes Beispiel kann Unschärfe durch Bewegung verursacht sein abhängig von der Geschwindigkeit des Objekts, an dem die Strichcodes befestigt sind, relativ zur Belichtungszeit, die nötig ist, Bilder mit vernünftigem Kontrast unter den verfügbaren Beleuchtungsbedingungen zu erhalten.
  • Unabhängig von Lesegerättyp oder Scansignalextraktionsverfahren ist ein typischer Weg, einen Strichcode zu dekodieren, die 1D-Positionen aller Elementkanten (auch als Grenzen bezeichnet) entlang einem oder mehr dieser Scansignale zu detektieren und zu messen. Die Position jeder detektierten Kante entlang eines Scans ist ein Produkt ihrer fraktionalen Position innerhalb des Scansignals und des Scanabtastabstands. Solche Kanten können verwendet werden, um direkt die Breite der Strichcodeelemente abzuleiten, die dann weiter in ihre diskreten Elementgrößen klassifiziert werden können (z. B. schmal, breit, 1X, 2X, usw., abhängig vom Typ der verwendeten Symbologie). Für Mehr-Breiten-Symbologien typischer werden jedoch die aufeinanderfolgenden Entfernungen zwischen benachbarten Kanten derselben Polarität (hell-zu-dunkel- oder dunkel-zu-hell-Übergänge) berechnet und klassifiziert (z. B. in 1X, 2X, usw.), und dann verwendet, um den Charakter aus seinem „Kante-zu-ähnliche-Kante”-Muster abzuleiten, wie im Stand der Technik bekannt. Diese indirekte Berechnung kann durchgeführt werden, um Fehlklassifizierungen oder Fehlauslesungen) auf Grund von ausgeprägtem Druckwachstum zu vermeiden, was das Ausmaß ist, zu dem auf Grund des Druckverfahrens Striche breiter und Abstände schmaler erscheinen, oder umgekehrt, typischerweise wegen Tintenausbreitung. Für Zwei-Breiten-Symbologien kann Druckwachstum durch getrenntes Klassifizieren der Striche und Abstände vermieden werden.
  • Elementkanten können mittels einer Anzahl verschiedener im Stand der Technik bekannter Techniken detektiert werden, einschließlich zum Beispiel diskrete Verfahren zum Orten der Positionen der maximalen ersten Ableitung, oder Nullstellen in der zweiten Ableitung und/oder Wellenformungstechniken zum Orten der Grenzen von aufgelösten Elementen.
  • Jedoch kann das Detektieren von Kanten durch Bildaufnahmerauschen und Druckdefekte kompliziert werden. Bildaufnahmerauschen und/oder Druckdefekte können zum Detektieren falscher Kanten führen wie auch Probleme mit niedrigem Kontrast (z. B. wegen schlechter Beleuchtung, Laserintensität usw.) oder Unschärfe (z. B. wegen Bewegung oder schlechter Fokussierung) verursachen, die dazu führen, dass manche Kanten gar nicht detektiert werden. Verschiedene Verfahren zur Vorfilterung (z. B. Glättung) oder Verbesserung (z. B. Entschmierung oder Schärfung) des Signals, Herausfiltern von falschen Kanten oder Gipfeln und Tälern und so weiter sind in einem Versuch ersonnen worden, die Messempfindlichkeit für echte Kanten zu erhöhen. Jedoch wird es selbst bei Einsatz solcher Verfahren mit abfallender Signalauflösung schwieriger, den Bedarf nach größerer Messempfindlichkeit gegen das wachsende Problem der Unterscheidung von falschen Kanten von echten abzuwägen, wie auch, die Positionen von solchen Kanten mit der erforderlichen Genauigkeit zu messen.
  • Hinzufügen der Möglichkeit, dekodierte Charakter- oder Kanteninformation aus multiplen Scans über denselben Strichcode zu kombinieren oder zu integrieren, kann helfen (z. B. wenn es lokalen Schaden am Strichcode gibt). Jedoch tendieren selbst mit solcher Integrierung bildbasierte Dekodierer, die kantenbasierte Techniken verwenden, oft dazu, zwischen 1,3 und 1,5 Pixeln pro Modul (PPM) für die Scanlinie zu versagen zu beginnen, abhängig von Bildqualität, Fokussierung und Orientierung des Strichcodes relativ zum Pixelgitter.
  • Im Wesentlichen wird es mit abnehmender effektiver Auflösung des Scansignals, sowohl mit Scanabtastauflösung und Unschärfe, schwieriger, individuelle Elemente des Strichcodes aufzulösen. Schmale Elemente sind besonders schwer aufzulösen, und bei einer gewissen Auflösung verschmelzen solche schmalen Elemente schließlich in dem Maße miteinander, dass die Übergänge zwischen ihnen vollständig unsichtbar sind. Schwierigkeiten bei der Auflösung sind besonders problematisch für ein unter-abgetastetes Signal. Während sich zum Beispiel der Übergang zwischen zwei Elementen (z. B. zwischen einem Strich und einem Abstand) zur Mitte einer Scanabtastung bewegt (z. B. exakt ½ Abtastung außer Phase), führt die Scanabtastung effektiv zu einem Abtastwert, der die durchschnittliche Reflexion der beiden Elemente statt einem Maß für die Reflexion der hohen oder niedrigen Reflexion der individuellen Striche und Abstände ist. Als ein beispielhafter problematischer Fall ist die Auflösung beinahe eine Abtastung pro Modul und multiple schmale Elemente reihen sich mit aufeinanderfolgenden Abtastungen mit einer halben Phase Verschiebung auf, so dass das Scansignal einen gleichförmigen Reflexionswert hat, völlig ohne sichtbare Kanten.
  • Zusätzlich zu den Problemen beim Detektieren von Kanten und Unterscheiden von Rauschen kann auch die Genauigkeit, mit der die Scanpositionen von solchen Übergängen gemessen werden können, auch mit der Scanauflösung (z. B. auf Grund der Tatsache, dass jeder Kantenübergang weniger Abtastungen hat, über die der Ort, wo der Übergang stattfindet, zu interpolieren ist) und/oder Unschärfe (z. B. weil der graduelle Übergang entlang einer unscharfen Kante in der Gegenwart von Rauschen schwieriger zu messen wird) abnehmen. Dies kann dazu führen, dass es unmöglich wird, zum Beispiel den Unterschied zwischen einem schmalen und breiten Strich aus den Kanten zu bestimmen. Techniken sind ersonnen worden, um zu versuchen, mit der Ungenauigkeit auf Grund von Unschärfe umzugehen, wie etwa durch Konzentrieren auf die Verwendung der Positionen von Kantenpaaren, um die Mitten jedes Elements zu bestimmen, die wenigstens gegenüber den Effekten der Unschärfe stabiler sind, und Verwendung der relativen Positionen zwischen diesen Mittenpositionen, statt der Entfernungen zwischen den Kanten, um das Symbol zu dekodieren. Jedoch sind die Mitten von gemessenen Elementkantengrenzen typischerweise nur stabiler, wenn die scheinbaren Kantenpositionen Fehler in entgegengesetzte Richtungen haben. Zum Beispiel können scheinbaren Kantenpositionen Fehler in entgegengesetzte Richtungen haben bei unscharfen Elementen mit ausreichend Auflösung (z. B. sagen wir mehr als 1,5 PPM), aber nicht notwendiger Weise, wenn das Signal unter-abgetastet ist, wo Kantenfehler auf Grund von Quantisierungseffekten oft dominanter eine Funktion der lokalen Phase (relative Position) des Scanabtastgitters relativ zum Pixelgitter und den Elementgrenzen sind.
  • Im Bemühen, die Auflösungsbeschränkungen zu verringern, sind mehrere Verfahren ersonnen worden, um zu versuchen, die Positionen der fehlenden schmalen Elemente nach Bestimmung der Mitten und Breiten der breiten Elemente abzuleiten. Diese Verfahren können Beschränkungen für die Anzahl von schmalen Elementen zwischen breiten Elementen verwenden, die für Zwei-Breiten- und Mehr-Breiten-Strichcodes verschieden aber allgemein sind. Verfahren sind auch ersonnen worden, um zu versuchen, Charaktere aus Kanten zu erkennen, aber undetektierte Kanten zuzulassen. Zum Beispiel können probabilistische Techniken verwendet werden, um Charaktere durch Abgleichen von kantenbasierten (geometrischen) deformierbaren Vorlagen zu dekodieren. Jedoch werden solche Verfahren typischerweise für unscharfe Strichcodes mit ausreichender Abtastauflösung entwickelt, nicht für unter-abgetastete Strichcodes. Tatsächlich können solche Techniken spezifizieren, dass die kantenbasierten Standard-Dekodierungstechniken verwendet werden sollen, wenn das Signal als im Fokus liegend erachtet wird. Orten und Messen der Breiten selbst der breiten Elemente, was weiterhin von der Bestimmung der Kanten (Grenzen) abhängt, wird schwierig, wenn die SPM abnimmt, wie etwa unter 1,1 Abtastungen pro Modul. Des Weiteren können manche der Algorithmen nicht effizient genug für praktische Verwendung auf industriellen Lesegeräten implementiert werden.
  • Weiter erschwert werden diese Probleme durch Trends zur Annahme von bildbasierten Lesegräten an Stelle von Laserscannern (z. B. wegen der Vorteile der breiten Abdeckung) und zur Verringerung der Kosten von bildbasierten Lesesystemen durch Kleinhalten der Größen und Minimieren der Anzahl von Lesegeräten. Zum Beispiel ist dies der Fall in Logistikanwendungen, wo Strichcodes gelesen werden müssen, die an oft zufällig orientierten Schachteln oder Taschen auf breiten Förderbändern befestigt sind. Minimieren der Anzahl von Lesegräten erfordert Maximieren der Menge an Volumen (z. B. Gebiet und Tiefe), die jedes Lesegerät abdecken muss, was wiederum sowohl die relative Bildauflösung (PPM) verringert als auch Unschärfe erhöht (wegen Tiefenschärfebeschränkungen), was beides die effektive Bildabtastauflösung verringert.
  • Es gibt einen Bedarf, die unter-aufgelösten Dekodierfähigkeiten von Strichcodelesegeräten jenseits von einfach unscharfen Strichcodes zu verbessern (z. B. insbesondere für bildbasierte Lesegeräte). Auf Grund der Schwierigkeiten mit kantenbasierten Verfahren bei niedrigen Auflösungen (z. B. unter 1,1 PPM) gibt es zusätzlich einen Bedarf für Verfahren, die Strichcodes durch direktes Analysieren der Scansignalwerte dekodieren können. Eine Technik, die versucht hat, diese Beschränkungen zu überwinden, ist, Musterabgleichungstechniken zu verwenden. Manche Musterabgleichungstechniken versuchen einen Strichcode durch Moderneren jedes Charakters in einem Strichcode als eine 1D-deformierbare Vorlage zu dekodieren. Der 1D-deformierbaren Vorlage ist es erlaubt, in der horizontalen Dimension zu skalieren (z. B. um einer unbekannten Modulgröße Rechnung zu tragen), in der horizontalen Richtung zu translatieren (z. B. um einer unsicheren Position entlang der Scanlinie Rechnung zu tragen), sich in der vertikalen Dimension auszudehnen (z. B. um unbekanntem Kontrast Rechnung zu tragen) und in der vertikalen Richtung zu translatieren (z. B. um einer unbekannten Hintergrundbeleuchtungsintensität Rechnung zu tragen). Jedoch können solche Musterabgleichungstechniken den Quantisierungseffekten von dramatischem Unter-Abtasten des Strichcodes nicht Rechnung tragen, wie etwa bei 1,0 PPM oder darunter. Zum Beispiel kann Unter-Abtasten dazu führen, dass Muster sich relativ zur Vorlage unerkennbar verformen.
  • Strichcodes können als aus einer Sequenz von Strichcodeeinheiten zusammengesetzt betrachtet werden, wobei jede Einheit eine assoziierte Breite und einen binären Kodierwert hat. Zum Beispiel kann bei Zwei-Breiten-Strichcodes die Strichcodeeinheit eine von zwei Breiten haben: schmal, ,X' oder breit, ,W'. Als ein weiteres Beispiel kann bei einem Mehr-Breiten-Strichcode die Strichcodeeinheit eine Breite haben, die irgendein Vielfaches, n, von X ist. Der binäre Kodierwert kann angeben, ob die Strichcodeeinheit Teil eines Strichs oder Abstands ist. Zum Beispiel kann B verwendet werden, um anzugeben, dass die Strichcodeeinheit für einen Strich ist, und S für einen Abstand. In manchen Ausführungsformen können numerische Werte verwendet werden, z. B. B = 0 und S = 1, oder B = –1 und S = 1. Daher kann jedes Elementbreitenmuster mit einem Einheitsbreitenmuster und einem Einheitskodiermuster assoziiert werden.
  • In manchen Beispielen können die Strichcodeeinheiten Elemente sein, in welchem Fall ein Einheitsbreitenmuster das Elementbreitenmuster ist und das assoziierte Einheitskodiermuster ein abwechselndes Muster von Strich- und Abstandswerten ist (z. B. BSBSBSBSB) mit dem passenden Startwert für entweder einen Strich oder einen Abstand (z. B. da die Elemente sich immer zwischen Strichen und Abständen abwechseln, außer über eine Zwischencharakterlücke hinweg).
  • In manchen Beispielen wird jede Strichcodeeinheit ausgewählt, um das Einheitsbreitenmuster gleichförmig zu machen. Für Zwei-Breiten-Strichcodes zum Beispiel können die Strichcodeeinheiten nicht kleiner als ein Element gemacht werden, da ein breites Element im Allgemeinen nicht weiter auf eine ganzzahlige Anzahl von schmalen Elementen reduziert werden kann. Für Mehr-Breiten-Strichcodes zum Beispiel kann eine Einheit so klein wie ein Modul sein, da jede Elementbreite als eine ganzzahlige Anzahl von Modulbreiten bezeichnet wird. Das Verwenden von Moduleinheiten kann zu einem gleichförmigen Einheitsbreitenmuster von schmalen Breiten führen. In manchen Ausführungsformen besteht ein bestimmtes Mehr-Breiten-Einheitsbreitenmuster aus irgendeiner Sequenz von gleichförmigen Modulen und das assoziierte Einheitskodiermuster besteht aus Strich- und Abstandswerten, die zusammen die kodierten Daten für jene Sequenz darstellen. Zum Beispiel ist XXXXXXXXXXX das Einheitsbreitenmuster für alle Einheitsbreitenmuster von der Länge von elf Modulen, aber das Einheitskodiermuster wird für jedes Elementbreitenmuster variieren. Zum Beispiel ist BSBSSSBBSSS das einzigartige Einheitskodiermuster für das 1X-Elementbreitenmuster 111323.
  • In manchen Ausführungsformen ist für Zwei-Breiten-Symbologien die Information im Elementbreitenmuster direkt durch das Einheitsbreitenmuster kodiert, während das Einheitskodiermuster alterniert. Zum Beispiel ist wie vorher beschrieben das Einheitskodiermuster ein abwechselndes Muster von Strich- und Abstandswerten (z. B. BSBSBSBSB). In manchen Ausführungsformen ist für Mehr-Breiten-Symbologien die Information im Elementbreitenmuster indirekt durch das Einheitskodiermuster kodiert, während das Elementbreitenmuster aus gleichförmigen Minimalmerkmalen besteht. Zum Beispiel ist XXXXXXXXXXX das Einheitsbreitenmuster für alle Einheitsbreitenmuster von der Länge von elf Modulen, also kodiert es indirekt das Elementbreitenmuster, weil ohne weitere Information das Elementbreitenmuster nicht abgeleitet werden kann. Aber das Einheitsbreitenmuster (z. B. BSBSSSBBSSS für das 11X-Elementbreitenmuster 111323) wird elf Merkmale umfassen (z. B. elf Bs und Ss).
  • Vorteilhafterweise kann bei der Analyse einer Zwei-Breiten-Symbologie oder einer Mehr-Breiten-Symbologie mittels Elementeinheiten jeder einzigartige Datencharakter in der Symbologie mit einer einzigartigen Einheits-(z. B. Element-)Sequenz assoziiert sein. Das Einheitskodiermuster kann ein abwechselndes binäres Muster sein, das für alle Charaktere dieselbe Größe hat. Bei der Analyse einer Mehr-Breiten-Symbologie mittels Moduleinheiten kann jeder einzigartige Datencharakter in der Symbologie mit einem einzigartigen Einheits-(z. B. Modul-)Muster assoziiert sein, und die Einheits-(z. B. Modul-)Sequenz kann für alle Charaktere dieselbe sein.
  • Zum Beispiel ist bei der Verwendung von Moduleinheiten für die Zwei-Breiten-Symbologie Code39 das einzigartige Einheitsbreitenmuster für ,A' sein Elementbreitenmuster WXXXXWXXW, und das einzigartige Einheitsbreitenmuster für ,B' ist sein Elementbreitenmuster XXWXXWXXW. Aber alle Code39-Datencharaktere sind mit demselben binären Einheitskodiermuster der Länge neun assoziiert, BSBSBSBSB. Ähnlich ist für Code128, wenn Elementeinheiten verwendet werden, das einzigartige Einheitsbreitenmuster für ,A' sein Elementbreitenmuster 111323, und das Einheitsbreitenmuster für ,B' ist sein Elementbreitenmuster 131123. Aber alle Code128-Charaktere sind mit demselben binären Einheitskodiermuster der Länge 6 assoziiert, BSBSBS.
  • Als ein weiteres Beispiel ist bei Verwendung von Moduleinheiten für die Mehr-Breiten-Symbologie Code128 das Einheitsbreitenmuster für alle Charaktere dieselbe gleichförmige Sequenz der Länge elf, XXXXXXXXXXX, aber das einzigartige Ein heitskodiermuster für ein ,A' ist BSBSSSBBSSS (z. B. entsprechend dem Elementbreitenmuster 111323), und das einzigartige Einheitskodiermuster für ein ,B' ist BSSSBWBBSSS (z. B. entsprechend dem Elementbreitenmuster 131123).
  • Durch die Darstellung von Strichcodes und Strichcodeelementen als aus Einheiten zusammengesetzt können Abtastquantisierungseffekte mathematisch modelliert werden. Zum Beispiel kann das Modell erzeugt werden basierend auf:
    • (1) (a) einer zusammenhängenden Sequenzen von Strichcodeelementen (z. B. ohne jegliche Zwischencharakterlücken) und (b) assoziierten quantisierten Breiten für jedes der Strichcodeelemente, ausgedrückt als ein Elementbreitenmuster;
    • (2) der Startposition des ersten Elements der Strichcodeelementsequenz, in Abtastkoordinaten (z. B. in Bruchzahlen von Abtastabständen, wobei der gebrochene Teil im Wesentlichen die anfängliche „Phase” relativ zum Abtastgitter ist); und
    • (3) der minimalen Merkmalgröße (X) und Breitelementgröße (W), falls vorhanden (oder, äquivalent, dem Breit-zu-schmal-Verhältnis), gemessen in Bruchzahlen von Abtastungen.
  • Mittels solcher Informationen kann die Beziehung zwischen jenen Strichcodeelementen und dem Rohsignal mittels einer einzigen Matrixgleichung ausgedrückt werden, A·b = s Gleichung 1
  • Wobei:
    • • A eine Einheitsabtastkoeffizientenmatrix ist, eine dünnbesetzte Matrix von Abtastkoeffizienten, die von einem Einheitsgitter abhängt, das die Positionen von Einheitengrenzen entlang des Scans definiert, bestehend aus:
    • – Der Einheit-Untersequenz, die sich über die Strichcodeelementsequenz erstreckt;
    • – Der minimalen Merkmalgröße, X;
    • – Der Breitelementgröße, W (falls vorhanden);
    • – Der Startposition des ersten Strichcodeelements in der Sequenz;
    • • b das binäre Einheitskodiermuster von Strich- und Abstandswerten ist; und
    • • s der Vektor ist, der normalisierte Scanabtastungen repräsentiert.
  • Jede Zeile der Abtastkoeffizientenmatrix A kann einer Abtastung entsprechen, und jede Spalte kann einer Einheit entsprechen (z. B. Modul für Mehr-Breiten-Strichcodes oder Element für Zwei-Breiten-Strichcodes). Die Werte in jeder Zeile können ausgewählt sein, um sich zu 1,0 aufzusummieren, und die Werte jeder Spalte können ausgewählt sein, um sich zur jeweiligen Einheits-(Modul- oder Element-)Breite (z. B. X oder W) aufzusummieren.
  • Die i-te normalisierte Abtastung für den Vektor s, s(i), kann durch die folgende Gleichung angegeben werden: s(i) = B + [(r(i) – l(i)) × (S – B)]/(h(i) – l(i)) Gleichung 2
  • Wobei:
    • • r der Vektor ist, der einen zusammenhängenden Teil des Scansignals über die Abtastkästen repräsentiert; und
    • • h und l Vektoren von Werten sind, die die diskrete Annäherung an die Signalhülle von r repräsentieren, so dass:
    • – h(i) die Abschätzung der Reflexion eines Abstands bei Abtastung i ist; und
    • – l(i) die Abschätzung der Reflexion eines Strichs bei Abtastung i ist.
  • Vom Vektor r kann angenommen werden, dass er den Bereich von Positionen für die gesamte Einheits-Untersequenz abdeckt. In manchen Ausführungsformen können die Werte für r die gemessenen Reflexionswerte sein. Jede Zeile i von A kann ein Vektor der jeweiligen Proportionen der Strichcodeeinheiten im Einheitsbreitenmuster sein, die kastenweise für Abtastung i integriert werden, um ein Maß der Reflexion für jene Scanabtastung zu erhalten. In manchen Ausführungsformen hängen die Einheitskoeffizienten vom Einheitsgitter ab, das die Positionen der Übergänge zwischen den Einheiten darstellen kann. Das Einheitsgitter kann durch die Phase (z. B. Startpunkt), die minimale Merkmalgröße, das Druckwachstum, das Breit-zu-schmal-Verhältnis (falls vorhanden) und/oder dergleichen beeinflusst sein.
  • 4 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1 Abtastung pro Modul („SPM”) und 0 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. 4 zeigt die A-Datencharaktermodule 400, welches aus Strichcodemodulen b1 402B, b2 402C, b3 402D, b4 402E, b5 402F, b6 402G, b7 402H, b8 402I, b9 402J, b10 402K und b11 402L besteht. Die Charaktereinheiten 402 umfassen diese Module sowie das letzte Modul des vorhergehenden Charakters b0 402A (einen Abstand) und das erste Modul des vorhergehenden Charakters b12 402M (einen Strich).
  • 4 zeigt das Scansignal 406, abgeleitet vom Scan 404. Das Scansignal 406 umfasst Scanabtastungen 408A, 408B bis 408N, kollektiv hierin als Scanabtastungen 408 bezeichnet. Die Scanabtastungen 408 repräsentieren Abtastungen für einen entsprechende Scanabtastkasten s0 410A, s1 410B bis s12 410N, kollektiv hierein als Scanabtastkasten 410 bezeichnet. Zum Beispiel repräsentiert Scanabtastung 408A die Scanabtastung für Scanabtastkasten s0 410A. Weil jeder Scanabtastkasten 410 am Beginn der Charaktereinheiten 402 ausgerichtet ist, haben Scanabtastkasten 410 null (0) Phase relativ zu den Charaktereinheiten 402. 4 zeigt auch die Einheitsabtastkoeffizientenmatrix 420. Jede Zeile der Einheitsabtastkoeffizientenmatrix 420 s1 412A bis s11 412N (kollektiv hierin als Zeilen 412 bezeichnet) entspricht einer Abtastung und ist ein Vektor der Abtastkoeffizienten für Charaktereinheiten im Einheitsbreitenmuster. Jede Spalte 422A bis 422N (kollektiv Spalten 422) der Einheitsabtastkoeffizientenmatrix 420 entspricht einer Einheit (z. B. einem Modul). Wie in 4 gezeigt entspricht die Breite jedes Scanabtastkastens 410 der Breite eines Moduls des Strichcodecharakters 400, weil der Abtastabstand genau die Modulbreite ist. Die Einheitsabtastkoeffizientenmatrix 420 umfasst Nullen an allen Positionen außer an denen, von denen gezeigt wird, dass sie eine Eins umfassen (der Einfachheit halber sind nicht alle Nullen gezeigt). Zeile s1 412A umfasst eine Eins in Spalte zwei 422B, weil Scanabtastkasten s1 410B mit dem gesamten Modul b1 402B zusammenfällt, Zeile s2 412B umfasst eine Eins in Spalte drei 422C, weil Scanabtastkasten s2 410B mit dem gesamten Modul b2 402C zusammenfällt, und so weiter.
  • 5 veranschaulicht eine beispielhafte Scanlinie Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1 SPM und 0 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. 5 zeigt die B-Datencharakter-Elementsequenz 500, welches aus Strichcodemodulen b1 502B, b2 502C, b3 502D, b4 502E, b5 502F, b6 502G, b7 502H, b8 502I, b9 502J, b10 502K und b11 502L besteht. Die Charaktereinheiten 502 umfassen diese Module sowie das letzte Modul des vorhergehenden Charakters b0 502A (einen Abstand) und das erste Modul des vorhergehenden Charakters b12 502M (einen Strich).
  • 5 zeigt das Scansignal 506, abgeleitet vom Scan 504. Das Scansignal 506 umfasst Scanabtastungen 508A, 508B bis 508N, kollektiv hierin als Scanabtastungen 508 bezeichnet. Die Scanabtastungen 508 repräsentieren Abtastungen für einen entsprechenden Scanabtastkasten s0 510A, s1 510B bis s12 510N. Zum Beispiel repräsentiert Scanabtastung 508A die Scanabtastung für Scanabtastkasten s0 510A. 5 zeigt auch die Einheitsabtastkoeffizientenmatrix 520. Weil jede Scanabtastung 510 am Start der Strichcodemodule 502 ausgerichtet ist, haben die Einheiten null (0) Phase relativ zu den Scanabtastkasten 510. Jede Zeile der Einheitsabtastkoeffizientenmatrix 520 s1 512A bis s11 512N (kollektiv hierin als Zeilen 512 bezeichnet) entspricht einer Abtastung und ist ein Vektor der Abtastkoeffizienten für Charaktereinheiten im Einheitsbreitenmuster. Jede Spalte 522A bis 522N (kollektiv Spalten 522) der Einheitsabtastkoeffizientenmatrix 520 entspricht einer Einheit (z. B. einem Modul). Wie in 4 entspricht die Breite jedes Scanabtastkastens 510 der Breite eines Moduls des Strichcodecharakters 500. Die Einheitsabtastkoeffizientenmatrix 520 umfasst Nullen an allen Positionen außer an denen, von denen gezeigt wird, dass sie eine Eins umfassen (der Einfachheit halber sind nicht alle Nullen gezeigt). Zeile s1 512A umfasst eine Eins in der zweiten Spalte 522B, weil Scanabtastkasten s1 510B mit dem gesamten Modul b1 502B zusammenfällt, Zeile s2 512B umfasst eine Eins in der dritten Spalte 522C, weil Scanabtastkasten s2 510B mit dem gesamten Modul b2 502C zusammenfällt, und so weiter. Beachte, dass die resultierende Einheitsabtastkoeffizientenmatrix 520 dieselbe ist wie Einheitsabtastkoeffizientenmatrix 420 in 4, weil, wie in 4, die Einheiten 502 bei null Phase relativ zu den Scanabtastkasten 510 liegen und die Modulgröße genau gleich der Modulgröße ist.
  • 6 veranschaulicht eine beispielhafte Scanlinien Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1 SPM und 0,5 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. 6 zeigt die A-Datencharakter-Modulsequenz 400 aus 4. 6 zeigt das Scansignal 606, abgeleitet vom Scan 604. Das Scansignal 606 umfasst Scanabtastungen 608A, 608B bis 608N, kollektiv hierin als Scanabtastungen 608 bezeichnet. Die Scanabtastungen 608 repräsentieren Abtastungen für ein entsprechende Scanabtastkasten s0 610A, s1 610B bis s12 610N. Zum Beispiel repräsentiert Scanabtastung 608A die Scanabtastung für Scanabtastkasten s0 610A, die zwischen hoch und niedrig ist, weil die Hälfte ihrer Fläche von b0 bedeckt ist und die Hälfte ihrer Fläche von b1 bedeckt ist. Weil jede Einheit 402 gegenüber dem Beginn jedes Scanabtastkastens 610 um die Hälfte der Breite eines Scanabtastabstandkastens versetzt ist, und weil der Scanabtastabstand genau gleich der Modulgröße ist, sind die Einheiten 402 bei (0,5) Phase relativ zu den Scanabtastkasten 610.
  • 6 zeigt auch die Einheitsabtastkoeffizientenmatrix 620. Jede Zeile der Einheitsabtastkoeffizientenmatrix 620 s0 612A bis s11 612N (kollektiv hierin als Zeilen 612 bezeichnet) entspricht einer Abtastung und ist ein Vektor der Abtastkoeffizienten für Charaktereinheiten im Einheitsbreitenmuster. Jede Spalte 622A bis 622N (kollektiv Spalten 622) der Einheitsabtastkoeffizientenmatrix 620 entspricht einer Einheit (z. B. einem Modul). Während die Breite jedes Scanabtastkastens 610 gleich der Breite jedes Strichcodemoduls ist, ist jeder Scanabtastkasten 610 halb von jedem von zwei aufeinanderfolgenden Strichcodeelementen 402 bedeckt. Die Einheitsabtastkoeffizientenmatrix 620 umfasst Nullen an allen Positionen außer an denen, von denen gezeigt wird, dass sie ein Halb (1/2) umfassen (der Einfachheit halber sind nicht alle Nullen gezeigt). Zeile s0 612A umfasst eine 0,5 in Spalte eins 622A, weil Scanabtastkasten s0 610A halb von Strich b0 402A bedeckt ist, und umfasst eine 0,5 in Spalte zwei 622B, weil Scanabtastkasten s0 610A halb von Strich b1 402B bedeckt ist. Zeile s1 612B umfasst eine 0,5 in Spalte zwei 622B, weil Scanabtastkasten s1 610B halb von Strich b1 402B bedeckt ist, und umfasst eine 0,5 in Spalte drei 622C, weil Scanabtastkasten s1 610B halb von Strich b2 402C bedeckt ist.
  • 7 veranschaulicht eine beispielhafte Scanlinien Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1 SPM und –0,25 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. 7 zeigt die A-Datencharaktermodulsequenz 400 aus 4. 7 zeigt das Scansignal 706, abgeleitet vom Scan 704. Das Scansignal 706 umfasst Scanabtastungen 708A, 708B bis 708N, kollektiv hierin als Scanabtastungen 708 bezeichnet. Die Scanabtastungen 708 repräsentieren Abtastungen für ein entsprechende Scanabtastkasten s0 710A, s1 710B bis s12 710N. Zum Beispiel repräsentiert Scanabtastung 708A die Scanabtastung für Scanabtastkasten s0 710A, die drei Viertel in Richtung hoch von niedrig ist, weil Scanabtastkasten s0 zu 0,75% von Modul b0 mit Reflexion h bedeckt ist und zu 0,25% von Modul b1 mit Reflexion 1 bedeckt ist. Weil jede Einheit 402 gegenüber dem Beginn jedes Scanabtastkastens 410 um ein Viertel der Breite eines Moduls versetzt ist, sind die Einheiten 402 bei (–0,25) Phase relativ zu den Scanabtastkästen 710.
  • 7 zeigt auch die Einheitsabtastkoeffizientenmatrix 720. Jede Zeile der Einheitsabtastkoeffizientenmatrix 720 s0 712A bis s11 712N (kollektiv hierin als Zeilen 712 bezeichnet) entspricht einer Abtastung und ist ein Vektor der Abtastkoeffizienten für Charaktereinheiten im Einheitsbreitenmuster. Jede Spalte 722A bis 722N (kollektiv Spalten 722) der Einheitsabtastkoeffizientenmatrix 720 entspricht einer Einheit (z. B. einem Modul). Während die Breite jedes Scanabtastkastens 710 gleich der Breite jedes Strichcodemoduls ist, ist jeder Scanabtastkasten 710 zu 0,75% bzw. 0,25% von zwei aufeinanderfolgenden Strichcodeelementen 402 bedeckt, auf Grund der Phase –0,25. Die Einheitsabtastkoeffizientenmatrix 720 umfasst Nullen an allen Positionen außer an denen, von denen gezeigt wird, dass sie Werte ungleich null umfassen (der Einfachheit halber sind nicht alle Nullen gezeigt). Zeile s0 712A umfasst eine 0,75 in der ersten Spalte 722A, weil Scanabtastkasten s0 710A zu ¾ von Modul b0 402A bedeckt ist, und umfasst eine 0,25 in der zweiten Spalte 722B, weil Scanabtastkasten s0 710A zu von Modul b1 402B bedeckt ist. Zeile s1 712B umfasst eine 0,75 in der zweiten Spalte 722B, weil Scanabtastkasten s1 710B zu ¾ von Modul b1 402B bedeckt ist, und umfasst eine 0,25 in der dritten Spalte 722C, weil Scanabtastkasten s1 710B zu ¼ von Modul b2 402C bedeckt ist.
  • 8 veranschaulicht eine beispielhafte Scanlinien Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 1,33 SPM und 1/3 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. 8 zeigt die A-Datencharaktermodulsequenz 400 aus 4. 8 zeigt das Scansignal 806, abgeleitet vom Scan 804. Das Scansignal 806 umfasst Scanabtastungen 808A, 808B bis 808N, kollektiv hierin als Scanabtastungen 808 bezeichnet. Die Scanabtastungen 808 repräsentieren Abtastungen für ein entsprechende Scanabtastkasten s0 810A, s1 810B bis s12 810N. Zum Beispiel repräsentiert Scanabtastung 808A die Scanabtastung für Scanabtastkasten s0 810A, welche ein hoher Wert ist, weil Scanabtastkasten s0 ganz von b0 bedeckt ist. Als ein weiteres Beispiel repräsentiert Scanabtastung 808B die Scanabtastung für Scanabtastkasten s1 810B, die 2/3 in Richtung niedrig von hoch ist, weil Scanabtastkasten s1 zu 1/3 von Reflexion b0 und zu 2/3 von Reflexion b1 bedeckt ist. Weil Einheit 402B (der Anfang der Charaktermodule) rechts von s1 810B beginnt, sind die Einheiten 402 bei ein Drittel (1/3) Phase relativ zu den Scanabtastkästen 810.
  • 8 zeigt auch die Einheitsabtastkoeffizientenmatrix 820. Jede Zeile der Einheitsabtastkoeffizientenmatrix 820 s0 812A bis s16 812N (kollektiv hierin als Zeilen 812 bezeichnet) entspricht einer Abtastung und ist ein Vektor der Abtastkoeffizienten für Charaktereinheiten im Einheitsbreitenmuster. Jede Spalte 822A bis 822N (kollektiv Spalten 822) der Einheitsabtastkoeffizientenmatrix 820 entspricht einer Einheit (z. B. einem Modul). Die Breite jedes Scanabtastkastens 810 ist gleich 2/3 eines Strichcodemoduls wegen der SPM 1,33. Die Einheitsabtastkoeffizientenmatrix 820 umfasst Nullen an allen Positionen außer an denen, von denen gezeigt wird, dass sie Werte ungleich null umfassen (der Einfachheit halber sind nicht alle Nullen gezeigt). Zum Beispiel umfasst Zeile s0 812A eine 1,0 in der ersten Spalte 822A, weil Scanabtastkasten s0 810A ganz von Modul b0 402A bedeckt ist (und keinem Teil irgendeines anderen Moduls). Zeile s1 812B umfasst eine 0,33 in der ersten Spalte 822A, weil Scanabtastkasten s1 810B zu einem Drittel von Einheit b1 402B bedeckt ist, und umfasst eine 0,66 in der zweiten Spalte 822B, weil Scanabtastkasten s1 810B zu 2/3 von Modul b2 402C bedeckt ist.
  • 9 veranschaulicht eine beispielhafte Scanlinien Unterabtast- und Abtastkoeffizienten für einen Mehr-Breiten-Strichcode bei 0,75 SPM und –0,25 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. 9 zeigt die A-Datencharaktermodulsequenz 400 aus 4. 9 zeigt das Scansignal 906, abgeleitet vom Scan 904. Das Scansignal 906 umfasst Scanabtastungen 908A, 908B bis 908N, kollektiv hierin als Scanabtastungen 908 bezeichnet. Die Scanabtastungen 908 repräsentieren Abtastungen für ein entsprechende Scanabtastkästen s0 910A, s1 910B bis s12 910N. Zum Beispiel repräsentiert Scanabtastung 908A die Scanabtastung für Scanabtastkasten s0 910A, welches ein Wert entsprechend des 0,75 der Reflexion von b0 402A und des 0,25 der Reflexion von b1 402B ist. Als ein weiteres Beispiel repräsentiert Scanabtastung 908B die Scanabtastung für Scanabtastkasten s1 910B, welcher halb von Modul b0 bedeckt ist und halb von Modul b1 bedeckt ist. Weil Einheit 402B (das erste der Charaktermodule) um 0,25 des Abtastabstands links von s1 910B beginnt, sind die Einheiten 402 bei minus einem Viertel (–1/4) Phase relativ zu den Scanabtastkästen 910.
  • 9 zeigt auch die Einheitsabtastkoeffizientenmatrix 920. Jede Zeile der Einheitsabtastkoeffizientenmatrix 920 s0 912A bis s9 912N (kollektiv hierin als Zeilen 912 bezeichnet) entspricht einer Abtastung und ist ein Vektor der Abtastkoeffizienten für Charaktereinheiten im Einheitsbreitenmuster. Jede Spalte 922A bis 922N (kollektiv Spalten 922) der Einheitsabtastkoeffizientenmatrix 920 entspricht einer Einheit (z. B. einem Modul). Die Breite jedes Scanabtastkastens 910 ist gleich 1 und 1/3 eines Strichcodemoduls wegen der SPM 0,75. Die Einheitsabtastkoeffizientenmatrix 920 umfasst Nullen an allen Positionen außer an denen, von denen gezeigt wird, dass sie Werte ungleich null umfassen (der Einfachheit halber sind nicht alle Nullen gezeigt). Zum Beispiel umfasst Zeile s0 912A eine 0,75 in der ersten Spalte 922A, weil Scanabtastkasten s0 910A zu ¾ von Einheit b0 402A bedeckt ist und umfasst eine 0,25 in der zweiten Spalte 922B, weil Scanabtastkasten s0 910A zu ¼ von Einheit b1 402B bedeckt ist. Zeile s1 912B umfasst eine 0,5 in der ersten Spalte 822A, weil Scanabtastkasten s1 810B zu ½ von Einheit b1 402B bedeckt ist, und umfasst eine 0,5 in der zweiten Spalte 922B, weil Scanabtastkasten s1 910B zu ½ von Einheit b2 402C bedeckt ist.
  • 10 veranschaulicht eine beispielhafte Scanlinien Unterabtast- und Abtastkoeffizienten für einen Zwei-Breiten-Strichcode bei 0,84 SPM, einer Breite (W) von 2,1 und –0,16 Phase zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. 10 zeigt die A-Datencharakterelementsequenz 1000, welche aus Strichcodeelementen b0 1002A, b1 1002B, b2 1002c, b3 1002D, b4 1002E, b5 1002F, b6 1002G, b7 1002H, b8 1002I, b9 1002J und b10 1002K besteht, kollektiv als Strichcodeeinheiten (Elemente) 1002 bezeichnet.
  • 10 zeigt das Scansignal 1006, abgeleitet vom Scan 1004. Das Scansignal 1006 umfasst Scanabtastungen 1008A, 1008B bis 1008N, kollektiv hierin als Scanabtastungen 1008 bezeichnet. Die Scanabtastungen 1008 repräsentieren Abtastungen für ein entsprechende Scanabtastkästen s0 1010A, s1 1010B bis s9 1010N. Zum Beispiel repräsentiert Scanabtastung 1008A die Scanabtastung für Scanabtastkasten s0 1010A, welches ein Wert entsprechend des 0,84 der Reflexion von b0 1002A des 0,16 der Reflexion von Einheit b1 1002B ist. Als ein weiteres Beispiel repräsentiert Scanabtastung 1008B die Scanabtastung für Scanabtastkasten s1 1010B, welcher ganz von Einheit b1 1002B bedeckt ist. Weil Einheit 1002B (das erste Element des Charakters) links von Scanabtastkasten s1 1010B beginnt, sind die Einheiten 1002 bei –0,16 Phase relativ zu den Scanabtastkasten 1010.
  • 10 zeigt auch die Einheitsabtastkoeffizientenmatrix 1020. Jede Zeile der Einheitsabtastkoeffizientenmatrix 1020 s0 1012A bis s11 1012N (kollektiv hierin als Zeilen 1012 bezeichnet) entspricht einer Abtastung und ist ein Vektor der Abtastkoeffizienten für Charaktereinheiten im Einheitsbreitenmuster. Jede Spalte 1022A bis 1022N (kollektiv Spalten 1022) der Einheitsabtastkoeffizientenmatrix 1020 entspricht einer Einheit (z. B. einem Element). Die Einheitsabtastkoeffizientenmatrix 1020 umfasst Nullen an allen Positionen außer an denen, von denen gezeigt wird, dass sie Werte ungleich null umfassen (der Einfachheit halber sind nicht alle Nullen gezeigt). Zum Beispiel umfasst Zeile s0 1012A eine 0,84 in der ersten Spalte 1022A, weil 84% von Scanabtastkasten s0 1010A von Einheit b0 1002A bedeckt ist und umfasst eine 0,16 in der zweiten Spalte 1022B, weil 16% von Scanabtastkasten s0 1010A von Einheit b1 1002B bedeckt ist. Zeile s1 1012B umfasst eine 1,0 in der zweiten Spalte 1022B, weil Scanabtastkasten s1 910B ganz von Einheit b1 1002B bedeckt ist.
  • In manchen Ausführungsformen verwenden Mehr-Breiten-Symbologien Moduleinheiten, wie in 49 abgebildet. Da das Eiheitsbreitenmuster (z. B. und daher Einheitsgitter) für alle möglichen Elementbreitenmuster dasselbe sein kann, kann es eine Einheitsabtastkoeffizientenmatrix für jeden bestimmten Abschnitt des Symbols geben, über die die scheinbare Modulgröße konstant bleibt (z. B. ein Charakter, mehrere Charaktere oder sogar der ganze Strichcode). Dekodieren eines solchen Abschnitts des Strichcodes kann zum Beispiel durch Lösen eines linearen Gleichungssystems für das tatsächliche Einheitskodiermuster (z. B. Modulwerte) und dann dessen Konvertieren zum Elementbreitenmuster und letztendlich zu seinem assoziierten alphanumerischen Wert durchgeführt werden. In manchen Ausführungsformen kann Dekodieren mittels Elementen für Mehr-Breiten-Symbologien durchgeführt werden, wie unten näher beschrieben.
  • 11 veranschaulicht ein beispielhaftes computergestütztes Verfahren 1100 eines allgemeinen bildbasierten Dekodierungsalgorithmus zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. Bei Schritt 1102 ortet das Lesegerät Strichcode-Kandidatenregionen in einem aufgenommenen Bild (z. B. von einem Strichcode auf einem Gegenstand auf einem Förderband). Bei Schritt 1104 wählt das Lesegerät eine nächste Strichcode-Kandidatenregion aus. Zum Beispiel ist die nächste Strichcode-Kandidatenregion eine, die die meisten strichartigen Merkmale in sich hat. Das Lesegerät kann den integrierten Strang für diesen Kandidaten initialisieren. Bei Schritt 1106 wählt das Lesegerät einen nächsten Scan aus einem Satz von Scans durch die Kandidatenregion aus (z. B. Scan 404 aus 4). Scans können zum Beispiel Liniensegmente sein, die grob parallel zu anderen Scans sind und sich von einem Ende des Strichcodekandidaten zum anderen erstrecken. Das Lesegerät kann einen Scan mittels verschiedener Befehle auswählen. Zum Beispiel kann das Lesegerät einen nächsten Scan in der Reihenfolge von oben nach unten, von der Mitte nach außen und dergleichen auswählen.
  • Bei Schritt 1108 nimmt das Lesegerät ein Scansignal auf (z. B. Scansignal 406), wie etwa mittels Projektion. Bei Schritt 1110 dekodiert das Lesegerät den Strichcode aus dem Scansignal. Der Dekodierungsprozess wird weiter in Verbindung mit 13 beschrieben. Bei Schritt 1112 integriert das Lesegerät den Scanstrang. Zum Beispiel kann das Lesegerät den dekodierten Strang aus dem Scan (einschließlich Charakterbewertungen) mit dem für diesen Scankandidaten soweit integrierten Strang kombinieren. Bei Schritt 1114 bestimmt das Strichcodelesegerät, ob Strichcode zuverlässig dekodiert ist (z. B. basierend auf einer Konfidenzschwelle). Falls das Lesegerät bestimmt, dass der Strichcode nicht zuverlässig dekodiert ist, fährt das Lesegerät zu Schritt 1106 zurück und führt Schritte 1108 bis 1112 auf dem nächsten ausgewählten Scan durch (falls welche verbleiben). Falls zusätzliche Kandidatenregionen verbleiben, fährt das Verfahren 1100 zu Schritt 1104 zurück. Falls vollständig, berichtet Verfahren 1100 den Strichcodestrang. Der Strichcodestrang kann nicht zuverlässig dekodierte Strichcodes, teilweise dekodierte Strichcodes und/oder dergleichen umfassen.
  • 12 veranschaulicht ein beispielhaftes computergestütztes Verfahren 1200 eines Laserscanner-Dekodierungsalgorithmus zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. Bei Schritt 1202 nimmt der Laserscanner ein analoges Reflexionssignal auf. Das analoge Reflexionssignal ist die Reflexion eines Strichcodes entlang Linearscan über den Strichcode, wie durch Laser und Detektor gemessen. Bei Schritt 1204 tastet der Laserscanner das Reflexionssignal ab (z. B. durch Extrahieren eines diskreten digitalen Scansignals durch zeitliches Abtasten). Bei Schritt 1206 dekodiert der Laserscanner den Strichcode aus dem Scansignal. Der Dekodierungsprozess wird weiter in Verbindung mit 13 beschrieben. Bei Schritt 1208 integriert der Laserscanner den Scanstrang. Bei Schritt 1210 bestimmt der Laserscanner, ob Strichcode zuverlässig dekodiert ist. Falls der Laserscanner bestimmt, dass der Strichcode nicht zuverlässig dekodiert ist, fährt der Laserscanner zu Schritt 1202 zurück und nimmt ein neues analoges Reflexionssignal auf. Ansonsten fährt Verfahren 1200 zu Schritt 1212 fort und berichtet die integrierten Stränge.
  • 13A–B veranschaulichen ein beispielhaftes computergestütztes Verfahren zum Dekodieren eines Strichcodes aus einem Scansignal, in Übereinstimmung mit manchen Ausführungsformen. Bei Schritt 1302 detektiert das Lesegerät Kanten (z. B. 1D-Positionen von Übergängen zwischen Elementen) im Scansignal. Ein Fachmann kann einschätzen, dass verschiedene Techniken verwendet werden können, um Kanten zu detektieren, wie etwa mittels Ableitungsgipfel, Nullstellen der zweiten Ableitung, Gipfel/Tal-Übergänge (ANSI-Kanten) und/oder anderer Kantendetektionsverfahren. Bei Schritt 1304 filtert das Lesegerät die Kanten. Zum Beispiel kann das Lesegerät falsche Kanten herausfiltern (z. B. auf Grund von Kontrast) und/oder fehlende Kanten hinzufügen, wenn eine minimale Merkmalgröße bekannt ist. Bei Schritt 1306 ortet und dekodiert das Lesegerät den ersten Begrenzungscharakter. In manchen Ausführungsformen kann das Lesegerät den Begrenzungscharakter in der umgekehrten Richtung entlang des Scans orten und dekodieren (z. B. durch Umkehren des Scansignals).
  • Bei Schritt 1308 rückt das Lesegerät zur nächsten Charakterposition vor. Zum Beispiel kann das Lesegerät die gemessene Charakterlänge des gegenwärtigen Charakters (z. B. welches bei Beginn von Schritt 1306 der Begrenzungscharakter sein wird) plus jegliche gemessene Zwischencharakterlücke addieren, um die Startposition des gegenwärtigen Charakters zu bestimmen. Falls der gegenwärtige Charakter nicht ordentlich dekodiert wurde (z. B. nicht innerhalb der Konfidenzbereiche), kann das Lesegerät Schätzungen der Charaktergröße verwenden. Bei Schritt 1310 schätzt das Lesegerät das Charaktereinheitsgitter ab. In manchen Ausführungsformen umfasst das Charaktereinheitsgitter die Startposition (z. B. Phase), die minimale Merkmalgröße (z. B. X), das Breit/Schmal-Verhältnis (falls vorhanden) und die Zwischencharakterlücke. In manchen Ausführungsformen kann das Lesegerät konfiguriert sein, die letzte gemessene Statistik des vorhergehenden dekodierten Charakters zu verwenden und dabei der Anzahl von Charakteren, die danach nicht dekodiert werden konnten, Rechnung zu tragen. In manchen Ausführungsformen kann die Zwischencharakterlücke für den ersten Charakter jenseits des Begrenzers mittels der ersten Kantendistanz gemessen werden.
  • Bei Schritt 1312 dekodiert das Lesegerät den Charakter unter Verwendung von Kanten. Ein Fachmann kann abschätzen, dass dies mittels im Stand der Technik bekannter Techniken durchgeführt werden kann, wie etwa Messen von Kante-zu-ähnlicher-Kante-Entfernungen, Klassifizieren der Kante-zu-ähnlicher-Kante-Entfernungen (z. B. einschließlich Runden jeder Kantendistanz auf das nächste ganzzahlige Vielfache von X oder W), Nachschlagen des Charakterwertes und Aktualisieren des Charaktergitters (z. B. einschließlich der Position, minimalen Merkmalgröße und Elementbreite) und der Bewertung (z. B. um zu aktualisieren, wie gut die Kanten passten, wie etwa mittels der fraktionalen Differenzen zu den nächsten ganzzahligen Vielfachen von X). Bei Schritt 1314 bestimmt das Lesegerät, ob der letzte Begrenzungscharakter dekodiert wurde, oder ob die maximale Anzahl von Charakteren für die Symbologie überschritten wurde. Falls nicht, fährt das Verfahren zu Schritt 1308 zurück. Ansonsten fährt das Verfahren zu Schritt 1320 in 13B fort. Zum Beispiel kann das Lesegerät konfiguriert sein, Fehlauslesungen zu vermeiden. Das Lesegerät kann mit einer hohen Konfidenzschwelle eingestellt sein, um potentielle Fehlauslesungen zu detektieren (z. B. damit solche Charaktere als nicht dekodiert markiert werden). Zum Beispiel können solche Charaktere jene Charaktere vor nicht dekodierten Charakteren (z. B. wegen Fehlern in Charaktereinheitsgitterabschätzungen und/oder fehlenden und/oder Extrakanten) umfassen.
  • Bei Schritt 1326 rückt das Lesegerät zum nächsten nicht dekodierten Charakter vor. Zum Beispiel kann das Lesegerät am Anfang des Charakterstrangs beginnen und vorwärts zum nächsten nicht dekodierten Charakter vorrücken. Bei Schritt 1328 schätzt das Lesegerät das Charaktereinheitsgitter ab. Bei Schritt 1330 dekodiert das Lesegerät den Charakter aus dem Scansignal. Falls der Charakter nicht dekodiert wurde, fährt das Verfahren zu Schritt 1326 zurück. Falls der Charakter dekodiert wurde, fährt das Verfahren zu Schritt 1334 fort und verfeinert das Charaktereinheitsgitter. In manchen Ausführungsformen ist Schritt 1334 optional. Das Lesegerät kann kleine Störungen in jeder der Charaktereinheitsgittermessungen durchsuchen und bewerten, wie die Bewertung sich für den dekodierten Charakter ändert. Das Lesegerät kann das Charaktereinheitsgitter auswählen, das die beste Bewertung ergibt, und dadurch eine modifizierte Startposition, Zwischencharakterlücke (falls vorhanden), minimale Merkmalgröße und/oder Breit-zu-schmal-Verhältnis (falls vorhanden) bestimmen. Falls es verbleibende nicht dekodierte Charaktere gibt, fährt das Verfahren zu Schritt 1326 fort. Ansonsten fährt das Verfahren zu Schritt 1322 fort und berichtet die integrierten Stränge.
  • Mit Bezug auf Schritt 1330 kann Dekodieren verschiedener Charaktere zum Beispiel einen variierenden Scanabtastabstand als Funktion der Position entlang des Scans zulassen, wie etwa den durch die optischen Perspektiveffekte und/oder nicht-lineare Krümmung des Symbols um gewölbte Objekte verursachten. Daher kann ein Strichcodelesegerät konfiguriert sein, einen konstanten Scanabtastabstand über den relativ kleinen örtlichen Bereich eines Charakters zu verwenden. Eine einzige minimale Merkmalgröße und eine Breitstrichbreite (falls vorhanden), z. B. gemessen in Scanabtastabstandeinheiten, können verwendet werden, um das Einheitsgitter für einen Charakter zu beschreiben. Vorteilhafterweise kann Verwenden von Charakteren einem Strichcodelesegerät auch ermöglichen, für jeden Charakter Einheitskodiermuster zu lösen durch Untersuchen aller möglichen Kombinationen von Einheitskodiermustern (z. B. 103 Kombinationen für Mehr-Breiten-Code128) und Auswählen des Einheitskodiermusters, das zu einem erwarteten (z. B. vorhergesagten) normalisierten Scanabtastungen führt, Ab, die die nächste Übereinstimmung für den Teil der gemessenen normalisierten Scanabtastungen s ist.
  • In manchen Ausführungsformen kann ein Strichcodelesegerät konfiguriert sein, direkt nach dem Einheitskodiermuster aufzulösen, unter Verwendung linearer Algebratechniken (z. B. Verwendung der Formulierung der kleinsten Quadrate b = (ATA)–1s, was die euklidische Länge von Ab – s minimieren würde). A kann numerisch instabil werden, wenn sich die Modulgröße 1,0 nähert, und unter 1,0 wird a singulär. Daher können Techniken verwendet werden, die Lösung zu stabilisieren. Zum Beispiel kann Beschränkungsminimierung (z. B. mittels Langrange-Multiplikatoren, um manch andere lineare Beschränkungen einzubeziehen) verwendet werden, um die Lösung zu stabilisieren. Als ein anderes Beispiel kann die Pseudoinverse (z. B. b = A+s) verwendet werden, um die Lösung zu stabilisieren. Die Lösung kann auf jede einer Anzahl von Weisen beschränkt werden, zum Beispiel durch mathematische Einschränkung, dass die Lösung ein binärer Vektor ist. Jedoch können manche Beschränkungen weniger nützlich sein als andere, da sie zu einem nichtlinearen Satz von Gleichungen führen können, die nicht leicht oder effizient zu lösen sind.
  • Eine Charakter-für-Charakter-Technik kann verwendet werden, um Zwei-Breiten-Strichcodes zu dekodieren und/oder Mehr-Breiten-Charaktere zu dekodieren (z. B. bei Verwendung von Einheitselementen). Ein Lesegerät kann daher konfiguriert sein, einen Strichcodecharakter durch Identifizieren der Einheitsabtastkoeffizientenmatrix (z. B. und assoziiertem Elementbreitenmuster und Charakterwert) zu dekodieren, die zur besten Bewertung führt (z. B. derjenigen, die im Wesentlichen mit dem Abtastscan am besten übereinstimmt), wenn sie mit einem binären Einheitskodiermustervektor multipliziert wird, der abwechselnde Striche und Abstände (gleich für alle möglichen Charaktere) darstellt.
  • In manchen Ausführungsformen bestimmt das Strichcodelesegerät die Scansignal-Hüllvektoren I und H vor und/oder während des Prozesses der Auffindung des Charakters mit bester Übereinstimmung (z. B. so dass die gemessenen und vorhergesagten (erwarteten) Scansignalwerte direkt verglichen werden können). In manchen Ausführungsformen ist das Strichcodelesegerät konfiguriert, anzunehmen, dass die Scansignalhülle über einen einzelnen Charakter konstant ist (z. B. um Berechnungen einfacher zu machen). Zum Beispiel kann ein Strichcodelesegerät ein einzelnes Paar von Hüllwerten, l und h, statt einem Vektor verwenden. Zum Beispiel kann eine solche Konfiguration verwendet werden, um im Wesentlichen anzunehmen, dass die zu Grunde liegende Belichtung des Strichcodes sich über den Verlauf eines Charakters nicht viel ändert.
  • In manchen Ausführungsformen kann das Strichcodelesegerät konfiguriert sein, anzunehmen, dass die Signalhülle von der des vorher dekodierten Charakters nicht sehr verschieden ist. Nach Dekodierung kann das Strichcodelesegerät die Hülle durch Messung der minimalen und maximalen Signalwerte innerhalb der breiteren Striche des dekodierten Charakters verfeinern. In manchen Ausführungsformen kann das Strichcodelesegerät die Hüllparameter l und h direkt für jeden möglichen Charakter als Teil des Abgleichprozesses bestimmen. Zum Beispiel kann das Strichcodelesegerät konfiguriert sein, das erwartete Ab direkt mit dem tatsächlich gemessenen Rohsignal r abzugleichen (z. B. durch Erlauben einer willkürlichen gleichförmigen Größe und einer einzigen Verschiebung). In manchen Ausführungsformen kann das Strichcodelesegerät konfiguriert sein, den Wert der Skalare a und c auszuwählen, die sumi(ar(i) + c – s(i))2 (z. B. die Summe über alle n Werte von i, wobei n die Länge des Teils des Scansignals ist) minimieren. Die Verhältnisse a = (S – B)/(h – l) und c = B – al können dann verwendet werden, um h und l zu bestimmen, was ergibt: l = (DB – vc)/va h = l + D(S – B)/va Gleichungen 3 und 4 wobei:
    • • va = m2y2 – ny1
    • • vc = m2y1 – m2y2
    • • D = m2 2 – nm1
    • • m1 = sum(r(i)2)
    • • m2 = sum(r(i))
    • • y1 = sum(s(i)r(i))
    • • y2 = sum(s(i))
  • In manchen Ausführungsformen kann das Strichcodelesegerät konfiguriert sein, berechnetes l und h gegen erwartete Bereiche für diese Zahlen zu verifizieren (z. B. basierend auf benachbarten Charakteren), so dass das Strichcodelesegerät bestimmen kann, ob der b entsprechende Charakter weiter betrachtet werden sollte.
  • 14A–C veranschaulichen ein beispielhaftes computergestütztes Verfahren 1400 zum Orten und Dekodieren eines ersten Begrenzungscharakters zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. Bei Schritt 1402 identifiziert das Lesegerät mögliche Begrenzerstartpunkte. Zum Beispiel kann das Lesegerät jede Kante als eine mögliche Startposition betrachten, wo die Polarität der Kante (hell-zu-dunkel oder dunkel-zu-hell) die Polarität des Strichcodes (hell-zu-dunkel oder dunkel-zu-hell) bestimmt. Als ein anderes Beispiel kann das Lesegerät nur Kanten mit vernünftigen Ruhezonen betrachten (z. B. ohne signifikante Merkmale (z. B. Kanten) im Scansignal eine Distanz vorher relativ zu der nachfolgenden Kantendistanz).
  • Bei Schritt 1404 wählt das Lesegerät den nächsten möglichen Begrenzerstartpunkt aus den verbleibenden identifizierten möglichen Begrenzerstartpunkten aus. Bei Schritt 1406 dekodiert das Lesegerät die Charaktere mittels Kanten. Bei Schritt 1408 bestimmt das Verfahren 1400, ob der Begrenzungscharakter dekodiert wurde. Falls ja, fährt das Verfahren zu Schritt 1446 in 14C fort. Bei Schritt 1410 identifiziert das Lesegerät mögliche Begrenzungscharaktere. Zum Beispiel haben manche Symbologien mehr als ein Start- oder Stoppmuster. In manchen Ausführungsformen können wie oben beschrieben Stoppmuster in der umgekehrten Richtung entlang des Scansignals detektiert werden, da die Dekodierungsoperation in der umgekehrten Richtung stattfinden kann. Bei Schritt 1412 wählt das Lesegerät den nächsten möglichen Begrenzungscharakter aus.
  • Bei Schritt 1414 schätzt das Lesegerät mögliche grobe Charaktereinheitsgitter ab. Zum Beispiel kann das Lesegerät die möglichen minimalen Merkmalgrößen und das Breit/Schmal-Verhältnis (falls vorhanden) aus einem Teil des Signals am Ende des Strichcodes abschätzen. Zum Beispiel kann das Lesegerät abschätzen, dass das Druckwachstum grob 0 ist und dass die Zwischencharakterlücke (falls vorhanden) 1X ist. Andere Schätzungen können zum Beispiel durch Identifizieren möglicher Entsprechungen von gemessenen Kanten zu Startmusterkanten, Annehmen, dass manche Kanten wegen der Tatsache, dass das Signal nicht aufgelöst ist, fehlen können, und Durchführen einer Kleinste-Quadrate-Anpassung gemacht werden. Die Entsprechungen mit der besten Übereinstimmung (z. B. über einer Fehlerschwelle) werden ausgewählt und mit einem Charaktergitter bester Übereinstimmung assoziiert. In manchen Ausführungsformen für Zwei-Breiten-Symbologien kann eine Abschätzung alternativ ohne Kanten durch Orten der Mitten der breiten Elemente und Durchführen einer ähnlichen Entsprechungsoperation erlangt werden.
  • Bei Schritt 1416 wählt das Lesegerät ein nächstes grobes Charaktereinheitsgitter aus und das Verfahren fährt zu Schritt 1420 fort. Bei Schritt 1420 wählt das Lesegerät die nächste Charaktereinheitsgitterstörung aus. Zum Beispiel kann das Lesegerät das Charaktereinheitsgitter auswählen, das von der Schätzung abweicht, aber innerhalb des geschätzten maximalen Fehlers ist. In manchen Ausführungsformen kann das Lesegerät einen Parameter (z. B. wie etwa die minimale Merkmalgröße) in kleinen Schritten variieren. Bei Schritt 1422 berechnet das Lesegerät die Einheitsabtastkoeffizientenmatrix, was weiter in 15 beschrieben wird. Bei Schritt 1424 bewertet das Lesegerät den Charakter aus der Einheitsabtastkoeffizientenmatrix, was weiter in 16 beschrieben wird. Falls das Lesegerät bestimmt, dass die Bewertung ausreichend ist (z. B. besser als eine vorgegebene Schwelle), kann das Lesegerät die Bewertung für jenen Charakter und das assoziierte Charaktereinheitsgitter aufzeichnen.
  • Bei Schritt 1426 bestimmt das Lesegerät, ob es irgendwelche verbleibenden Gitterstörungen gibt. Falls es verbleibende Gitterstörungen gibt, fährt das Lesegerät zu Schritt 1420 fort. Falls nicht, fährt das Verfahren zu Schritt 1428 fort und bestimmt, ob es irgendwelche verbleibenden groben Charaktergitter gibt. Falls Charaktergitter verbleiben, fährt das Verfahren zu Schritt 1416 in 14A fort. Falls keine Charaktergitter verbleiben, fährt das Verfahren zu Schritt 1430 fort und bestimmt, ob es verbleibende mögliche Begrenzungscharaktere gibt. Falls es verbleibende mögliche Begrenzungscharaktere gibt, fährt das Verfahren zu Schritt 1412 von 14A fort.
  • Falls es keine verbleibenden möglichen Begrenzungscharaktere gibt, fährt das Verfahren zu Schritt 1440 von 14C fort. Bei Schritt 1440 bewertet das Lesegerät den am besten passenden Charakter. Zum Beispiel kann das Lesegerät die Charakter/Gitter-Kombination mit der besten Bewertung auswählen. Bei Schritt 1442 bestimmt das Lesegerät, ob die beste Charakterbewertung ausreichend ist. Zum Beispiel kann das Lesegerät, falls die bestpassende Charakterbewertung nicht gut genug ist, oder nicht um eine Konfidenzschwelle besser ist als die nächstbeste mögliche Charakterbewertung, bestimmen, dass es keinen Begrenzungscharakter gefunden hat. Falls die beste Charakterbewertung ausreichend ist, fährt das Lesegerät zu Schritt 1444 fort und bestimmt, ob es verbleibende mögliche Begrenzerstartpositionen gibt. Falls es verbleibende mögliche Begrenzerstartpositionen gibt, fährt das Verfahren zu Schritt 1404 in 14A fort. Falls es keine verbleibenden möglichen Begrenzerstartpositionen gibt, fährt das Verfahren zu Schritt 1446 fort und verfeinert (optional) das Charaktergitter. Zum Beispiel kann das Lesegerät kleine Störungen in jeder der Charaktergittermessungen durchsuchen und ermessen, wie sich die Bewertung für den dekodierten Charakter ändert. In manchen Ausführungsformen wählt das Lesegerät das Charaktergitter, das die beste Bewertung liefert, und bestimmt dadurch eine modifizierte Startposition, Zwischencharakterlücke (falls vorhanden), minimale Merkmalgröße und/oder Breit-zu-schmal-Verhältnis (falls vorhanden).
  • 15 veranschaulicht ein beispielhaftes computergestütztes Verfahren 1500 zum Bestimmen eines Einheitsabtastkoeffizienten zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. Bei Schritt 1502 initialisiert das Lesegerät die Einheitsabtastkoeffizienten. Die Einheitsabtastkoeffizientenmatrix hat die Größe n × m, wobei n die Anzahl der tatsächlichen 1D-Signalwerte ist und m entweder die Anzahl der Module (z. B. für ein Mehr-Breiten-Symbol) oder Elemente (z. B. für ein Zwei-Breiten-Symbol oder Mehr-Breiten-Symbol mit Elementeinheiten) in einem Charakter plus 2 (z. B. die Elemente oder Zwischencharakterlücken vor und nach dem Charakter darstellend) ist. Das Lesegerät initialisiert alle Werte als 0. In einer bevorzugten Ausführungsform wird die Koeffizientenmatrix mittels einer dünnbesetzten Matrixdarstellung dargestellt.
  • Bei Schritt 1504 bestimmt das Lesegerät den Abtastbereich. Zum Beispiel kann das Lesegerät die ersten und letzten Abtastungen mit Mitten, die innerhalb des Charakters liegen (z. B. Mitten innerhalb eines der Charaktermodule oder -elemente, und nicht des vorherigen oder folgenden Elements oder Zwischencharakterlücke). Bei Schritt 1506 rückt das Lesegerät zur nächsten Scanabtastung im Bereich vor. Zum Beispiel ist dies die erste Abtastung im Bereich, falls noch keine betrachtet wurde. Die Abtastung ist typischerweise mit einem Kasten assoziiert, welcher ein Positionsbereich der Scanlinie ist, über die angenommen wird, dass er Information integriert. Ein Abtastkasten kann um die Abtastposition zentriert sein und kann eine Breite gleich dem Abtastabstand haben.
  • Bei Schritt 1508 bestimmt das Lesegerät die Charaktereinheitsüberlappung. Zum Beispiel berechnet das Lesegerät mittels eines Charaktereinheitsgitters den Prozentsatz der Abtastung, der von jeder Charaktereinheit überlappt wird (z. B. durch in Rechnung Stellen von Druckwachstum g). Für Mehr-Breiten-Symbole kann das Lesegerät Einheiten gleich Modulen verwenden. Für Zwei-Breiten-Symbole kann das Lesegerät Einheiten gleich Elementen verwenden. Das Lesegerät kann diese Werte geordnet über die Zeile der mit der Abtastung assoziierten Koeffizientenmatrix aufzeichnen. In manchen Ausführungsformen, wenn das X – g > 0,5 Abtastabständen, gibt es wahrscheinlich höchstens drei Prozentsätze pro Zeile, die nicht null sind, und Überlappung kann bestimmt werden durch Orten des nächsten Moduls i zur Abtastung j und Besetzen der Koeffizientenmatrix A gemäß den Gleichungen: q(i) = (w(i) – 1)/2 A(j, i – 1) = max(+d(i, j) – q(i) + g/2, 0) A(j, i + 1) = max(–d(i, j) – q(i) + g/2, 0) A(j, i) = 1 – A(j, i – 1) – A(j, i + 1) (Gleichungen 5–8)
  • Wobei:
    • w(i) die Breite von Element i ist (was z. B. 1 für schmale Elemente oder Module oder W für breite Elemente ist); und
    • d(i, j) die signierte Differenz zwischen der Mitte von Einheit i und der Mitte von Abtastung j ist (z. B. wobei alle Positionen reale Werte in Abtastkoordinaten sind).
  • Bei Schritt 1510 bestimmt das Lesegerät, ob es irgendwelche verbleibenden Scanabtastungen im Bereich gibt. Falls es verbleibende Scanabtastungen im Bereich gibt, fährt das Verfahren zu Schritt 1506 fort. Falls es keine verbleibenden Scanabtastungen im Bereich gibt, fährt das Verfahren zu Schritt 1512 fort und endet.
  • In manchen Ausführungsformen ist das Strichcodelesegerät konfiguriert, die Bewertung für einen Charakter mittels einer Funktion der Fehler, e = s – Ab, zu bestimmen. Beispiele dieser Funktion umfassen die Summe der quadrierten Fehler, die Summe der absoluten Fehler, den maximalen Fehler und/oder dergleichen. In manchen Ausführungsformen werden die Fehler durch die Koeffizientenmatrix „rückwärts fortgepflanzt”, um Fehler in den ursprünglichen Charaktereinheiten (Modulen oder Elementen) zu bestimmen. Rückwärtsfortpflanzung kann durch Berechnen eines Einheitsfehlervektors e(b) gemäß der folgenden Gleichung erreicht werden: e(b) = ATe' Gleichung 9 wobei:
    • • e(b) der Einheitsfehlervektor ist; und
    • • e' der Vektor der absoluten Signalfehler ist, definiert durch e'(i) = |e(i)|.
  • Der Gesamtfehler für das Muster b kann zum Beispiel unter Verwendung der Summe der quadrierten Einheitsfehler, der Summe der Einheitsfehler, des maximalen Einheitsfehlers und/oder dergleichen berechnet werden. In manchen Ausführungsformen wird die Summe der quadrierten Einheitsfehler für Datencharaktere verwendet (z. B. da die Fehlwertung auch nur einer einzigen Einheit zu einer teuren Fehlauslesung führen kann). In manchen Ausführungsformen wird die Summe der Einheitsfehler für Begrenzer verwendet (z. B. wo Fehlauslesungen nicht so schädlich sind, aber Versäumen eines Begrenzers dazu führen kann, dass ein Symbol nicht einmal zu dekodieren versucht wird).
  • 16 veranschaulicht ein beispielhaftes computergestütztes Verfahren 1600 zum Bewerten eines Charakters aus einem Scansignal zum Dekodieren von Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. Bei Schritt 1602 konstruiert das Lesegerät ein Charaktereinheitsmuster. Zum Beispiel identifiziert in manchen Ausführungsformen das Lesegerät das mit dem Charakter assoziierte binäre Einheitskodiermuster. Zum Beispiel ist für Mehr-Breiten-Charaktere das Einheitskodiermuster das Muster der Module, die Teil von Strichen oder Abständen sein können, abgeleitet aus dem Charakterelementbreitenmuster. Für Zwei-Breiten-Charaktere ist das Einheitskodiermuster zum Beispiel das Muster von Elementwerten, das immer eine abwechselnde Sequenz von Strich- und Abstandswerten ist, beginnend mit dem geeigneten Wert (Strich oder Abstand).
  • Bei Schritt 1604 führt das Lesegerät Einheitsabtastkoeffizientenmultiplikation durch. Zum Beispiel kann das Lesegerät die Einheitsabtastkoeffizientenmatrix mit dem Einheitskodiermuster multiplizieren, um den vorhergesagten (oder erwarteten) Signalvektor zu erhalten. Bei Schritt 1606 kann das Lesegerät die vorhergesagten und gemessenen Signale vergleichen. In manchen Ausführungsformen kann das Lesegerät so konfiguriert sein, dass der Vergleich eine oder mehr Charakterbewertungen erzeugen sollte, die angeben, wie gut das vorhergesagte Signal mit dem gemessenen Signal übereinstimmt. Dies kann auf eine Vielzahl von Arten erreicht werden, wie vorher beschrieben. In manchen Ausführungsformen kann das Lesegerät die zwei Werte subtrahieren nach Normalisierung des tatsächlichen Signals durch die lokale Signalhülle (z. B. der minimale und maximale Signalbereich entsprechend der scheinbaren Reflexion der Striche und Abstände im Signal).
  • 17 veranschaulicht ein beispielhaftes computergestütztes Verfahren 1700 zum Dekodieren eines Charakters aus einem Scansignal eines Mehr-Ebenen-Strichcodes zum Dekodieren des Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. Mit Bezug auf Schritt 1702 bestimmt das Lesegerät die Einheitsabtastkoeffizienten, z. B. wie in 16 erklärt. Bei Schritt 1704 identifiziert das Lesegerät alle möglichen Datencharaktere. Zum Beispiel könnten bei manchen Codes wie Code128 alle Datencharaktere möglich sein. Bei anderen Codes wie UPC-EAN könnten nur Charaktere aus den passenden Untergruppen (A, B oder C) möglich sein. Bei Schritt 1706 wählt das Lesegerät den nächsten möglichen Datencharakter aus. Bei Schritt 1708 bewertet das Lesegerät den Charakter mittels der Einheitsabtastkoeffizienten.
  • Bei Schritt 1710 bestimmt das Lesegerät, ob die Bewertung hoch genug ist. Falls die Bewertung nicht hoch genug ist, fährt das Verfahren zu Schritt 1706 fort. Falls die Bewertung hoch genug ist, fährt das Verfahren zu Schritt 1712 fort und zeichnet den Charakter und die Bewertung auf. Bei Schritt 1714 bestimmt das Lesegerät, ob es verbleibende mögliche Datencharaktere gibt. Falls es verbleibende mögliche Datencharaktere gibt, fährt das Lesegerät zu Schritt 1706 fort. Falls es keine verbleibenden möglichen Datencharaktere gibt, fährt das Lesegerät zu Schritt 1716 fort und das Lesegerät bestimmt, ob die beste Bewertung um mindestens die Konfidenzschwelle besser ist als die zweitbeste Bewertung (falls vorhanden). Falls das Lesegerät zuversichtlich ist, dass es den besten Charakter identifiziert hat, fährt das Lesegerät zu Schritt 1720 fort und zeichnet den besten Charakter und die Bewertung auf. Falls das Lesegerät nicht zuversichtlich ist, dann wird der Charakter nicht dekodiert.
  • 18 veranschaulicht ein beispielhaftes computergestütztes Verfahren 1800 zum Dekodieren eines Charakters aus einem Scansignal eines Zwei-Ebenen- oder Mehr-Ebenen-Strichcodes zum Dekodieren des Strichcodes, in Übereinstimmung mit manchen Ausführungsformen. Bei Schritt 1802 identifiziert das Verfahren mögliche Datencharaktere. Zum Beispiel könnten bei manchen Codes wie Code39 alle Datencharaktere möglich sein. Bei anderen Codes wie Codebar könnten nur Charaktere der passenden Länge möglich sein. Bei Schritt 1804 wählt das Lesegerät den nächsten möglichen Datencharakter aus. Bei Schritt 1806 bestimmt das Verfahren die Einheitsabtastkoeffizienten (z. B. wie in Verbindung mit 15 beschrieben). Bei Schritt 1808 bewertet das Verfahren den Charakter mittels der Einheitsabtastkoeffizienten (z. B. wie in Verbindung mit 16 beschrieben).
  • Bei Schritt 1810 bestimmt das Lesegerät, ob die Bewertung über einer vorgegebenen Schwelle ist. Falls die Bewertung nicht über einer vorgegebenen Schwelle ist, fährt das Verfahren zu Schritt 1804 zurück. Falls die Bewertung über einer vorgegebenen Schwelle ist, fährt das Verfahren zu Schritt 1812 fort und zeichnet den Charakter und die Bewertung auf. Bei Schritt 1814 bestimmt das Verfahren, ob es verbleibende mögliche Datencharaktere gibt. Falls es verbleibende mögliche Datencharaktere gibt, fährt das Verfahren zu Schritt 1804 fort. Falls es keine verbleibenden möglichen Datencharaktere gibt, fährt das Verfahren zu Schritt 1816 fort. Bei Schritt 1816 bestimmt das Lesegerät, ob die beste Bewertung um mindestens die Konfidenzschwelle besser ist als die zweitbeste Bewertung (falls vorhanden). Falls das Lesegerät zuversichtlich ist, dass es den besten Charakter identifiziert hat, fährt das Lesegerät zu Schritt 1820 fort und zeichnet den besten Charakter und die Bewertung auf. Falls das Lesegerät nicht zuversichtlich ist, dann wird der Charakter nicht dekodiert und das Verfahren endet bei Schritt 1818.
  • Der hierin beschriebene Gegenstand kann in digitaler elektronischer Schaltung oder in Computersoftware, -firmware oder -hardware implementiert werden, einschließlich der in dieser Beschreibung offenbarten strukturellen Mittel und strukturellen Äquivalenten davon, oder in Kombinationen von ihnen. Der hierin beschriebene Gegenstand kann als ein oder mehr Computerprogrammprodukte implementiert werden, wie etwa ein oder mehr in einem Informationsträger (z. B. in einer maschinenlesbaren Speichervorrichtung) verkörperte Computerprogramme, oder in einem propagierten Signal verkörpert sein, zur Ausführung durch oder Kontrolle des Betriebes von Datenverarbeitungsapparaten (z. B. einem programmierbaren Prozessor, einem Computer oder mehreren Computern). Ein Computerprogramm (auch bekannt als Programm, Software, Softwareanwendung oder Code) kann in jeder Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, und es kann in jeder Form eingerichtet sein, einschließlich als alleinstehendes Programm oder als ein Modul, eine Komponente, eine Subroutine oder andere für Verwendung in einer Rechenumgebung geeignete Einheit. Ein Computerprogramm entspricht nicht notwendig einer Datei. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält, in einer einzelnen Datei, die dem fraglichen Programm gewidmet ist, oder in multiplen koordinierten Dateien (z. B. in Dateien, die ein oder mehr Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann eingerichtet sein, um auf einem Computer oder auf mehreren Computern an einem Ort oder verteilt über mehrere Orte und verbunden durch ein Kommunikationsnetzwerk ausgeführt zu werden.
  • Die in dieser Beschreibung beschriebenen Prozesse und logischen Flüsse, einschließlich der Verfahrensschritte des hierin beschriebenen Gegenstands, können von einem oder mehr programmierbaren Prozessoren durchgeführt werden, die ein oder mehr Computerprogramme ausführen, die Funktionen des hierin beschriebenen Gegenstands durchführen, indem sie mit Eingabedaten arbeiten und Ausgabe erzeugen. Die Prozesse und logischen Flüsse können auch durchgeführt werden von, und Apparate des hierin beschriebenen Gegenstands können implementiert werden als, Spezialzweck-Schaltlogik, z. B. ein FPGA (feldprogrammierbarer Gate-Array) oder ein ASIC (anwendungsspezifischer integrierter Schaltkreis).
  • Für die Ausführung eines Computerprogramms geeignete Prozessoren umfassen beispielsweise sowohl Allgemein- als auch Spezialzweck-Mikroprozessoren und jeglichen einen oder mehr Prozessor von jeglicher Art von Digitalcomputer. Im Allgemeinen wird ein Prozessor Anweisungen und Daten von einem Nur-Lese-Speicher oder Schreib-Lese-Speicher oder beiden erhalten. Die wesentlichen Elemente eines Computers sind ein Prozessor zur Ausführung von Anweisungen und eine oder mehr Speichervorrichtungen zum Speichern von Anweisungen und Daten. Im Allgemeinen wird ein Computer auch umfassen, oder operativ verbunden sein um Daten zu erhalten von oder zu übertragen zu, oder beides, eine oder mehr Massenspeichervorrichtungen zum Speichern von Daten, z. B. magnetische, magnetoptische Platten oder optische Platten. Informationsträger, die geeignet sind, Computerprogramm-Instruktionen und Daten zu verkörpern, umfassen alle Formen von flüchtigem und nichtflüchtigem Speicher, einschließlich beispielsweise Halbleiterspeichervorrichtungen, (z. B. EPROM, EEPROM und Flashspeichervorrichtungen); Magnetplatten, (z. B. interne Festplatten oder entnehmbare Platten); magnetoptische Platten; und optische Platten (z. B. CD- und DVD-Platten). Der Prozessor und der Speicher können durch Spezialzweck-Logikschaltkreise ergänzt werden und/oder darin eingegliedert sein.
  • Um Wechselwirkung mit einem Nutzer bereitzustellen, kann der hierin beschriebene Gegenstand implementiert sein auf einem Computer mit einem Anzeigegerät, z. B. einem CRT-(Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)Monitor, zur Darstellung von Informationen an den Nutzer und einer Tastatur und einer Zeigevorrichtung (z. B. einer Maus oder einem Trackball), mit denen der Nutzer dem Computer Eingabe liefern kann. Andere Arten von Vorrichtungen können auch verwendet werden, um Wechselwirkung mit einem Nutzer bereitzustellen. Zum Beispiel kann dem Nutzer bereitgestellte Rückmeldung jede Form von sensorischer Rückmeldung sein (z. B. visuelle Rückmeldung, auditive Rückmeldung oder taktile Rückmeldung), und Eingabe vom Nutzer kann in jeglicher Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe.
  • Der hierin beschriebene Gegenstand kann in einem Rechnersystem implementiert sein, das eine Back-End-Komponente (z. B. einen Datenserver), eine Middleware-Komponente (z. B. einen Anwendungsserver) und eine Front-End-Komponente (z. B. einen Klientencomputer mit einer graphischen Nutzerschnittstelle oder einen Webbrowser, durch den ein Nutzer mit einer Implementation des hierin beschriebenen Gegenstandes interagieren kann) umfasst, oder jegliche Kombination von solchen Back-End-, Middleware- und Front-End-Komponenten. Die Komponenten des Systems können durch jegliche Form oder Medium von digitaler Datenkommunikation verknüpft sein, z. B. ein Kommunikationsnetzwerk. Beispiele von Kommunikationsnetzwerken umfassen ein lokales Netzwerk („LAN”) oder ein Weitverkehrsnetz („WAN”), z. B. das Internet.
  • Es versteht sich, dass der offenbarte Gegenstand in seiner Anwendung nicht auf die Konstruktionsdetails und auf die Anordnungen der Komponenten beschränkt ist, die in der folgenden Beschreibung dargelegt oder den Zeichnungen veranschaulicht werden. Der offenbarte Gegenstand ist auch anderer Ausführungsformen fähig, und dass er auf verschiedene Weise praktiziert und ausgeführt wird. Auch versteht es sich, dass die hierin verwendete Phraseologie und Terminologie dem Zweck der Beschreibung dient und nicht als beschränkend angesehen werden sollte.
  • So werden die Fachleute einschätzen können, dass die Konzeption, auf der diese Offenbarung basiert, leicht als eine Grundlage verwendet werden kann, um andere Strukturen, Verfahren und Systeme zum Ausführen von verschiedenen Zwecken des offenbarten Gegenstandes zu entwerfen. Es ist daher wichtig, dass die Ansprüche als solche äquivalente Konstruktionen umfassend angesehen werden, soweit sie nicht vom Geist und Umfang des offenbarten Gegenstands abweichen.
  • Obwohl der offenbarte Gegenstand in den vorangegangenen beispielhaften Ausführungsformen beschrieben und veranschaulicht worden ist, versteht es sich, dass die vorliegende Offenbarung nur als Beispiel getätigt worden ist, und dass zahlreiche Änderungen in den Einzelheiten der Implementierung des offenbarten Gegenstands vorgenommen werden können, ohne vom Geist und Umfang des offenbarten Gegenstands abzuweichen.

Claims (20)

  1. Ein computergestütztes Verfahren zum Dekodieren eines Strichcodes, das Verfahren umfassend: Empfangen, durch eine Rechnervorrichtung, von Daten von einem Sensor, die auf ein Scansignal entlang eines Scans durch einen Strichcode hindeuten; Bestimmen, durch die Rechnervorrichtung, eines ersten Charaktereinheitsgitters für ein Einheitsbreitenmuster innerhalb des Strichcodes entlang des Scans; Bestimmen, durch die Rechnervorrichtung, basierend auf dem ersten Charaktereinheitsgitter, mindestens eines Satzes von Abtastkoeffizienten, die das Einheitsbreitenmuster zu einem Bereich des Scansignals in Beziehung setzen; und Bestimmen, durch die Rechnervorrichtung, eines Elementbreitenmusters für das Einheitsbreitenmuster basierend auf dem mindestens einen Satz von Abtastkoeffizienten und dem Bereich des Scansignals.
  2. Das Verfahren aus Anspruch 1, wobei das Charaktereinheitsmuster mindestens eines von einer Startposition des Einheitsbreitenmusters, einer minimalen Merkmalgröße für den Strichcode, einem Breit/Schmal-Verhältnis für den Strichcode und einer Zwischencharakterlücke für den Strichcode umfasst.
  3. Das Verfahren aus Anspruch 1, wobei Bestimmen eines ersten Charaktereinheitsgitters Orten von mindestens einem Charakter umfasst, umfassend: Detektieren von Strichcodeelementkanten entlang des Scans unter Verwendung des Scansignals; Klassifizieren der Entfernungen zwischen den detektierten Strichcodeelementkanten; und Bestimmen des ersten Elementbreitenmusters und des ersten Charaktereinheitsgitters basierend auf den klassifizierten Entfernungen zwischen den detektierten Strichcodeelementkanten.
  4. Das Verfahren aus Anspruch 1, wobei Bestimmen des ersten Charaktereinheitsgitters umfasst: Detektieren von Strichcodeelementkanten entlang des Scans unter Verwendung des Scansignals; und Orten einer ersten Strichcodeelementkante entlang des Scans basierend auf den detektierten Strichcodeelementkanten.
  5. Das Verfahren aus Anspruch 1, wobei Bestimmen eines ersten Charaktereinheitsgitters Orten eines Begrenzungscharakters umfasst, umfassend: Detektieren von Strichcodeelementkanten entlang des Scans unter Verwendung des Scansignals; Orten einer ersten Strichcodeelementkante und einer zweiten Strichcodeelementkante des Begrenzungscharakters entlang des Scans basierend auf den detektierten Strichcodeelementkanten; Beschränken von mindestens einem Attribut des ersten Charaktereinheitsgitters basierend auf einer Entfernung zwischen der ersten Strichcodeelementkante und der zweiten Strichcodeelementkante, einer Anzahl von Einheiten zwischen der ersten Strichcodeelementkante und der zweiten Strichcodeelementkante, oder beidem.
  6. Das Verfahren aus Anspruch 1, wobei Bestimmen des ersten Charaktereinheitsgitters umfasst: Orten einer Position von mindestens einem breiten Strichcodeelement entlang des Scans; Detektieren von Strichcodeelementkanten entlang des Scans unter Verwendung des Scansignals; Orten einer ersten Strichcodeelementkante entlang des Scans basierend auf den detektierten Strichcodeelementkanten; und Beschränken von mindestens einem Attribut des ersten Charaktereinheitsgitters basierend auf einer Entfernung zwischen der ersten Strichcodeelementkante und der Position des mindestens einen breiten Strichcodeelements, einer Anzahl von Einheiten zwischen der ersten Strichcodeelementkante und der Position des mindestens einen breiten Strichcodeelements, oder beidem.
  7. Das Verfahren aus Anspruch 1, wobei der Strichcode ein Zwei-Breiten-Strichcode ist und Strichcodeeinheiten für das Einheitsbreitenmuster Elemente des Zwei-Breiten-Strichcodes sind; ein Mehr-Breiten-Strichcode ist und Einheiten für das Einheitsbreitenmuster Elemente des Zwei-Breiten-Strichcodes sind; ein Mehr-Breiten-Strichcode ist und Einheiten für das Einheitsbreitenmuster Module des Zwei-Breiten-Strichcodes sind, oder jede Kombination davon.
  8. Das Verfahren aus Anspruch 1, wobei Bestimmen mindestens eines Satzes von Abtastkoeffizienten Bestimmen von Koeffizienten, die die relativen Beiträge jeder Strichcodeeinheit des Einheitsbreitenmusters zu jeder Scanabtastung eines Satzes von Scanabtastungen im Bereich des Scansignals umfasst, das Verfahren weiter umfassend Bestimmen eines relativen Beitrags jeder Strichcodeeinheit zu einer entsprechenden Scanabtastung basierend auf dem Ausmaß der Überlappung zwischen der Strichcodeeinheit und einem der Scanabtastung entsprechenden Scanabtastkasten.
  9. Das Verfahren aus Anspruch 1, wobei Bestimmen des Elementbreitenmusters für das Einheitsbreitenmuster umfasst: Bestimmen eines Einheitskodiermusters für das Einheitsbreitenmuster durch Lösen einer linearen Matrixgleichung, wobei eine linke Seite der linearen Matrixgleichung gleich einer Matrix des mindestens einen Satzes von Abtastkoeffizienten multipliziert mit dem Einheitskodiermuster ist und eine rechte Seite der linearen Matrixgleichung gleich einer Vektorfunktion des Bereichs des Scansignals ist; und Konvertieren des Einheitskodiermusters in ein Elementbreitenmuster.
  10. Das Verfahren aus Anspruch 9, weiter umfassend Bestimmen einer Signalhülle, umfassend: Bestimmen der Signalhülle basierend auf Messungen, die für einen Strichcodecharakter in der Nähe des Scansignals gemacht wurden; Bestimmen der Signalhülle durch Messen der maximalen und minimalen Scansignalwerte über einen Teil des Scansignals; Bestimmen der Signalhülle separat für jedes mögliche Einheitskodiermuster; Bestimmen der Signalhülle für mindestens ein Einheitskodiermuster durch Minimieren eines Anpassungsfehlers, der eine Funktion einer Vektordifferenz zwischen einer linken Vektorseite der linearen Matrixgleichung und einer Vektorfunktion des Bereichs des Scansignals ist, wobei die Vektorfunktion eine Normalisierungsfunktion ist, die für die Signalhülle normalisiert, oder jegliche Kombination davon.
  11. Das Verfahren aus Anspruch 9, wobei Lösen der linearen Matrixgleichung umfasst: Berechnen einer Bewertung für jedes aus einem Satz von möglichen Einheitskodiermustern; und Auswählen aus dem Satz von möglichen Einheitskodiermustern des Einheitskodiermusters mit der besten Bewertung, umfassend: Vergleichen der Bewertung für jedes Einheitskodiermuster mit einer Bewertungsschwelle; Vergleichen der Bewertung für ein erstes Einheitskodiermuster und der Bewertung für ein zweites Einheitskodiermuster aus dem Satz von möglichen Einheitskodiermustern; oder beides.
  12. Ein Strichcodelesegerät zum Dekodieren eines Strichcodes, das Strichcodelesegerät umfassend einen Prozessor, der konfiguriert ist, ein in Speicher gespeichertes Modul laufen zu lassen, das konfiguriert ist, den Prozessor zu veranlassen: Daten von einem Sensor zu empfangen, die auf ein Scansignal entlang eines Scans durch einen Strichcode hinweisen; ein erstes Charaktereinheitsgitter für ein Einheitsbreitenmuster innerhalb des Strichcodes entlang des Scans zu bestimmen; basierend auf dem ersten Charaktereinheitsgitter mindestens einen Satz von Abtastkoeffizienten, die das Einheitsbreitenmuster zu einem Bereich des Scansignals in Beziehung setzen, zu bestimmen; und ein Elementbreitenmuster für das Einheitsbreitenmuster basierend auf dem mindestens einen Satz von Abtastkoeffizienten und dem Bereich des Scansignals zu bestimmen.
  13. Das Strichcodelesegerät aus Anspruch 12, wobei Bestimmen eines ersten Charaktereinheitsgitters Orten von mindestens einem Charakter umfasst, umfassend: Detektieren von Strichcodeelementkanten entlang des Scans unter Verwendung des Scansignals; Klassifizieren der Entfernungen zwischen den detektierten Strichcodeelementkanten; und Bestimmen des ersten Elementbreitenmusters und des ersten Charaktereinheitsgitters basierend auf den klassifizierten Entfernungen zwischen den detektierten Strichcodeelementkanten.
  14. Das Strichcodelesegerät aus Anspruch 12, wobei Bestimmen des ersten Charaktereinheitsgitters umfasst: Detektieren von Strichcodeelementkanten entlang des Scans unter Verwendung des Scansignals; und Orten einer ersten Strichcodeelementkante entlang des Scans basierend auf den detektierten Strichcodeelementkanten.
  15. Das Strichcodelesegerät aus Anspruch 12, wobei Bestimmen eines ersten Charaktereinheitsgitters Orten eines Begrenzungscharakters umfasst, umfassend: Detektieren von Strichcodeelementkanten entlang des Scans unter Verwendung des Scansignals; Orten einer ersten Strichcodeelementkante und einer zweiten Strichcodeelementkante des Begrenzungscharakters entlang des Scans basierend auf den detektierten Strichcodeelementkanten; Beschränken von mindestens einem Attribut des ersten Charaktereinheitsgitters basierend auf einer Entfernung zwischen der ersten Strichcodeelementkante und der zweiten Strichcodeelementkante, einer Anzahl von Einheiten zwischen der ersten Strichcodeelementkante und der zweiten Strichcodeelementkante, oder beidem.
  16. Das Strichcodelesegerät aus Anspruch 12, wobei Bestimmen des ersten Charaktereinheitsgitters umfasst: Orten einer Position von mindestens einem breiten Strichcodeelement entlang des Scans; Detektieren von Strichcodeelementkanten entlang des Scans unter Verwendung des Scansignals; Orten einer ersten Strichcodeelementkante entlang des Scans basierend auf den detektierten Strichcodeelementkanten; und Beschränken von mindestens einem Attribut des ersten Charaktereinheitsgitters basierend auf einer Entfernung zwischen der ersten Strichcodeelementkante und der Position des mindestens einen breiten Strichcodeelements, einer Anzahl von Einheiten zwischen der ersten Strichcodeelementkante und der Position des mindestens einen breiten Strichcodeelements, oder beidem.
  17. Das Strichcodelesegerät aus Anspruch 12, wobei Bestimmen mindestens eines Satzes von Abtastkoeffizienten Bestimmen von Koeffizienten, die die relativen Beiträge jeder Strichcodeeinheit des Einheitsbreitenmusters zu jeder Scanabtastung eines Satzes von Scanabtastungen im Bereich des Scansignals umfasst, das Verfahren weiter umfassend Bestimmen eines relativen Beitrags jeder Strichcodeeinheit zu einer entsprechenden Scanabtastung basierend auf dem Ausmaß der Überlappung zwischen der Strichcodeeinheit und einem der Scanabtastung entsprechenden Scanabtastkasten.
  18. Das Strichcodelesegerät aus Anspruch 12, wobei Bestimmen des Elementbreitenmusters für das Einheitsbreitenmuster umfasst: Bestimmen eines Einheitskodiermusters für das Einheitsbreitenmuster durch Lösen einer linearen Matrixgleichung, wobei eine linke Seite der linearen Matrixgleichung gleich einer Matrix des mindestens einen Satzes von Abtastkoeffizienten multipliziert mit dem Einheitskodiermuster ist und eine rechte Seite der linearen Matrixgleichung gleich einer Vektorfunktion des Bereichs des Scansignals ist; und Konvertieren des Einheitskodiermusters in ein Elementbreitenmuster.
  19. Das Strichcodelesegerät aus Anspruch 18, wobei Lösen der linearen Matrixgleichung umfasst: Berechnen einer Bewertung für jedes aus einem Satz von möglichen Einheitskodiermustern; und Auswählen aus dem Satz von möglichen Einheitskodiermustern des Einheitskodiermusters mit der besten Bewertung, umfassend: Vergleichen der Bewertung für jedes Einheitskodiermuster mit einer Bewertungsschwelle; Vergleichen der Bewertung für jedes erste Einheitskodiermuster und der Bewertung für zweites Einheitskodiermuster aus dem Satz von möglichen Einheitskodiermustern; oder jegliche Kombination davon.
  20. Ein nicht-vergängliches computerlesbares Medium mit ausführbaren Anweisungen, die operabel sind, einen Apparat zu veranlassen, Daten von einem Sensor zu empfangen, die auf ein Scansignal entlang eines Scans durch einen Strichcode hinweisen; ein erstes Charaktereinheitsgitter für ein Einheitsbreitenmuster innerhalb des Strichcodes entlang des Scans zu bestimmen; basierend auf dem ersten Charaktereinheitsgitter mindestens einen Satz von Abtastkoeffizienten, die das Einheitsbreitenmuster zu einem Bereich des Scansignals in Beziehung setzen, zu bestimmen; und ein Elementbreitenmuster für das Einheitsbreitenmuster basierend auf dem mindestens einen Satz von Abtastkoeffizienten und dem Bereich des Scansignals zu bestimmen.
DE102015219541.4A 2014-10-09 2015-10-08 Dekodieren von strichcodes Pending DE102015219541A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/510,710 US9607200B2 (en) 2014-10-09 2014-10-09 Decoding barcodes
US14/510,710 2014-10-09

Publications (1)

Publication Number Publication Date
DE102015219541A1 true DE102015219541A1 (de) 2016-04-14

Family

ID=55644359

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015219541.4A Pending DE102015219541A1 (de) 2014-10-09 2015-10-08 Dekodieren von strichcodes

Country Status (4)

Country Link
US (3) US9607200B2 (de)
CN (2) CN105512594B (de)
DE (1) DE102015219541A1 (de)
HK (1) HK1224062A1 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150169928A1 (en) 2012-03-01 2015-06-18 Sys-Tech Solutions, Inc. Methods and a system for verifying the identity of a printed item
US20150379321A1 (en) 2012-03-01 2015-12-31 Sys-Tech Solutions, Inc. Methods and a system for verifying the authenticity of a mark
CN104303192B (zh) 2012-03-01 2016-11-23 系统科技解决方案公司 来自标记的特征的唯一识别信息
US10599902B2 (en) 2014-10-09 2020-03-24 Cognex Corporation Methods and apparatus for decoding under-resolved symbols
US9607200B2 (en) * 2014-10-09 2017-03-28 Cognex Corporation Decoding barcodes
KR102450900B1 (ko) * 2015-04-09 2022-10-04 오므론 가부시키가이샤 내장된 웹 서버
US10198648B1 (en) * 2015-04-10 2019-02-05 Digimarc Corporation Decoding 1D-barcodes in digital capture systems
US10146978B2 (en) 2015-07-14 2018-12-04 Afero, Inc. Apparatus and method for accurate barcode scanning using dynamic timing feedback
CN106650862B (zh) * 2015-11-04 2019-06-28 光宝电子(广州)有限公司 条码的结构、解码方法及解码装置
US9626543B1 (en) * 2015-12-14 2017-04-18 Afero, Inc. Apparatus and method for accurate barcode scanning using dynamic timing feedback
JP6607122B2 (ja) * 2016-03-30 2019-11-20 ブラザー工業株式会社 画像解析装置
US10204284B2 (en) * 2016-12-06 2019-02-12 Datalogic Ip Tech S.R.L. Object recognition utilizing feature alignment
US10083334B2 (en) * 2016-12-06 2018-09-25 Datalogic Ip Tech S.R.L. Barcode reconstruction utilizing a sequence alignment matrix
EP4089577A1 (de) * 2016-12-09 2022-11-16 SYS-Tech Solutions, Inc. Verfahren und datenverarbeitungsvorrichtung zur bestimmung der echtheit einer markierung
CN106991348B (zh) * 2017-03-21 2019-11-15 浙江华睿科技有限公司 一种条码解码方法及装置
CN108830361B (zh) * 2017-05-03 2021-12-14 深圳市九州传媒科技有限公司 一种隐形码识别方法、终端及服务器
US10325128B1 (en) * 2017-05-10 2019-06-18 Amazon Technologies, Inc. Long range barcode scanning
CN109388999B (zh) * 2017-08-11 2021-09-17 杭州海康威视数字技术股份有限公司 一种条形码识别方法及装置
US10607047B2 (en) 2017-12-06 2020-03-31 Cognex Corporation Local tone mapping for symbol reading
US10460191B1 (en) * 2018-08-20 2019-10-29 Capital One Services, Llc Dynamically optimizing photo capture for multiple subjects
CN109409159A (zh) * 2018-10-11 2019-03-01 上海亿保健康管理有限公司 一种模糊二维码检测方法及装置
JP7427427B2 (ja) 2018-11-21 2024-02-05 コグネックス・コーポレイション 解像度不足のシンボルをデコードするための方法と装置
JP7021651B2 (ja) * 2019-03-01 2022-02-17 オムロン株式会社 シンボル境界特定装置、シンボル境界特定方法および画像処理プログラム
JP2022132745A (ja) * 2021-03-01 2022-09-13 東芝テック株式会社 商品登録装置及びプログラム
US11667474B1 (en) * 2021-08-27 2023-06-06 Amazon Technologies, Inc. Increasing scan rate of parcels within material handling facility
US11960966B2 (en) 2022-05-16 2024-04-16 Abbyy Development Inc. Decoding of two-dimensional barcodes under unfavorable conditions
US12008431B2 (en) 2022-05-16 2024-06-11 Abbyy Development Inc. Decoding of linear barcodes under unfavorable conditions

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398770A (en) 1992-05-07 1995-03-21 Brown Manufacturing Corporation Cultivator
US5343028A (en) 1992-08-10 1994-08-30 United Parcel Service Of America, Inc. Method and apparatus for detecting and decoding bar code symbols using two-dimensional digital pixel images
US5329105A (en) 1992-08-10 1994-07-12 United Parcel Service Of America, Inc. Method and apparatus for determining the width of elements of bar code symbols
US5486689A (en) 1993-01-22 1996-01-23 Intermec Corporation Method and apparatus for decoding unresolved multi-width bar code symbology profiles
US6681029B1 (en) 1993-11-18 2004-01-20 Digimarc Corporation Decoding steganographic messages embedded in media signals
US6944298B1 (en) 1993-11-18 2005-09-13 Digimare Corporation Steganographic encoding and decoding of auxiliary codes in media signals
US5514858A (en) 1995-02-10 1996-05-07 Intermec Corporation Method and apparatus for decoding unresolved complex multi-width bar code symbology profiles
US5539191A (en) 1995-06-22 1996-07-23 Intermec Corporation Method and apparatus for decoding unresolved bar code profiles using edge finding circuitry
ATE203606T1 (de) * 1997-12-05 2001-08-15 Datalogic Spa Verfahren zur kompensation der flankenposition durch abtastung eines strichcodes generierten signals
US6082619A (en) * 1998-12-16 2000-07-04 Matsushita Electric Industrial Co., Ltd. Method for locating and reading a two-dimensional barcode
US6938824B2 (en) * 2001-09-26 2005-09-06 Symbol Technologies, Inc. Decoding algorithm for laser scanning bar code readers
US20060027657A1 (en) 2004-08-04 2006-02-09 Laurens Ninnink Method and apparatus for high resolution decoding of encoded symbols
US7237721B2 (en) * 2005-05-24 2007-07-03 Nokia Corporation Image processing for pattern detection
CN101710385B (zh) * 2009-12-28 2013-05-29 天津优尼莱博泰克电子科技发展有限公司 高性能二维条形码解码方法
US8888003B2 (en) * 2010-12-09 2014-11-18 Datalogic Ip Tech S.R.L. Method for decoding a two-dimensional optical code
JP2012147133A (ja) * 2011-01-07 2012-08-02 Mitsubishi Electric Corp サンプリングレート変換装置およびサンプリングレート変換方法
US8967481B2 (en) * 2011-09-21 2015-03-03 Regents Of The University Of Minnesota Symbol-based decoding of optical codes
CN102880850B (zh) 2012-09-19 2015-08-19 腾讯科技(深圳)有限公司 一种二维码批量扫描的方法及扫描设备
US10599902B2 (en) 2014-10-09 2020-03-24 Cognex Corporation Methods and apparatus for decoding under-resolved symbols
US9607200B2 (en) 2014-10-09 2017-03-28 Cognex Corporation Decoding barcodes

Also Published As

Publication number Publication date
US10032058B2 (en) 2018-07-24
US10699089B2 (en) 2020-06-30
CN105512594A (zh) 2016-04-20
US20190087619A1 (en) 2019-03-21
CN110414293B (zh) 2023-02-07
CN110414293A (zh) 2019-11-05
US20160104022A1 (en) 2016-04-14
CN105512594B (zh) 2019-07-30
US20170372107A1 (en) 2017-12-28
HK1224062A1 (zh) 2017-08-11
US9607200B2 (en) 2017-03-28

Similar Documents

Publication Publication Date Title
DE102015219541A1 (de) Dekodieren von strichcodes
DE69835358T2 (de) Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes
DE69930536T2 (de) Schräglage-verarbeitung für raster-abtast-bilder
DE69332771T2 (de) Verfahren und Vorrichtung zum Dekodieren von strichkodierten Symbolen
DE60118051T2 (de) Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium
DE10036110B4 (de) Verfahren zur Bestimmung des Schrägwinkels eines zweidimensionalen Barcodes
US5637849A (en) Maxicode data extraction using spatial domain features
EP1645839B1 (de) Vorrichtung und Verfahren zur Überwachung von bewegten Objekten
DE19960555B4 (de) Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes
US9361499B2 (en) Barcode decoding
EP2555160B1 (de) Erzeugung eines in interessante und uninteressante Bereiche vorsegmentierten Bildes
DE112015002368T5 (de) Zielmusterform als abstandssensor für barcodescanner
DE102013112040B4 (de) System und Verfahren zum Auffinden von sattelpunktartigen Strukturen in einem Bild und Bestimmen von Informationen daraus
DE60300476T2 (de) System zum Erkennen eines Barcodes
DE69814105T2 (de) Verfahren zur automatischen Regulierung der Eigenschaften eines optischen Codelesesystems
EP4273740A1 (de) Optische bilderfassungseinheit und verfahren zum bestimmen einer grössenreserve
DE102022116204A1 (de) Verfahren zum Unterscheiden zwischen Fokusabweichung und einer Änderung in einem Abstand zu einem Ziel bei Linsen mit variablem Fokus
DE112018005068T5 (de) Verfahren und system zum lesen von barcodes, die auf mehreren bildern aufgenommen sind
DE102005025220B4 (de) Gerät, Verfahren und Programm zum Beseitigen von Poren
DE60303003T2 (de) Verfahren und System zur Verifikation von Übergängen zwischen kontrastierenden Elementen
EP2677492A1 (de) Codeleser und Verfahren zur Online-Verifikation eines Codes
DE102019217980A1 (de) Verfahren und vorrichtung zum dekodieren von unter-aufgelösten symbolen
EP1586070B1 (de) Verfahren und vorrichtung zur identifikation und kompensation einer perspektivischen verzerrung
EP4287066B1 (de) Bestimmen der modulgrösse eines optischen codes
DE102019132529A1 (de) Verfahren zum Extrahieren, Auslesen und/oder Ausgeben einer in einer bedruckten und/oder visuell gestalteten Oberfläche verborgenen Information

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication