DE60118051T2 - Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium - Google Patents

Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium Download PDF

Info

Publication number
DE60118051T2
DE60118051T2 DE60118051T DE60118051T DE60118051T2 DE 60118051 T2 DE60118051 T2 DE 60118051T2 DE 60118051 T DE60118051 T DE 60118051T DE 60118051 T DE60118051 T DE 60118051T DE 60118051 T2 DE60118051 T2 DE 60118051T2
Authority
DE
Germany
Prior art keywords
orientation
modules
module
pattern
center
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60118051T
Other languages
English (en)
Other versions
DE60118051D1 (de
Inventor
Hitomi Suwa-shi Wakamiya
Shinichi Suwa-shi Arazaki
Fumio Suwa-shi Koyama
Satoshi Suwa-shi Yanagida
Haruyoshi Suwa-shi Ohori
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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
Priority claimed from JP2000104970A external-priority patent/JP2001291051A/ja
Priority claimed from JP2000201279A external-priority patent/JP2002024752A/ja
Priority claimed from JP2000237086A external-priority patent/JP2002049889A/ja
Priority claimed from JP2000355940A external-priority patent/JP2002157549A/ja
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of DE60118051D1 publication Critical patent/DE60118051D1/de
Application granted granted Critical
Publication of DE60118051T2 publication Critical patent/DE60118051T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1456Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore
    • 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

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren zum Lesen eines zweidimensionalen Strichcodes, ein Datenspeicherungsmedium, auf welchem sich ein das Verfahren darstellendes Computerprogramm-Produkt befindet, und eine Vorrichtung zum Lesen eines zweidimensionalen Strichcodes. Insbesondere betrifft die vorliegende Erfindung ein Verfahren zum Lesen eines zweidimensionalen Strichcodes, ein Datenspeicherungsmedium und eine Vorrichtung zum Lesen eines zweidimensionalen Strichcodes für das Lokalisieren des Ortungsmusters in einem durch Abtasten eines zweidimensionalen Codesymbols erfassten Bild, das Lokalisieren des Richtungsmoduls, das Lokalisieren des Datenmoduls und das Umwandeln des Datenmoduls in Datenzeichen.
  • 2. Beschreibung des Stands der Technik
  • Strichcodes sind eine Technologie zur automatisierten Erkennung, welche sich im Einzelhandel als eine Methode, Informationen über einen Artikel in einer Datenbank schnell und genau aufzufinden, entwickelten. Seitdem haben sich Strichcodes weiterentwickelt und in so verschiedenen Bereichen wie Lagerverwaltung und Vertrieb, Behörden, Medizin, Forschung und Event-Management Anwendung gefunden. Während Strichcodes und ihre Anwendungen vielfältiger wurden, hat sich der Bedarf an Strichcodes auf Bereiche und Anwendungen ausgedehnt, für welche herkömmliche Strichcodes ungeeignet sind, darunter Strichcode-Miniaturisierung für das Bedrucken sehr kleiner Artikel und hohe Codierleistung. In den letzten Jahren wurden zweidimensionale Strichcodes, welche diesen Bedürfnissen entgegenkommen, entwickelt.
  • Es gibt zwei Arten von zweidimensionalen Strichcodes: gestapelte Symbologie (oder mehrreihige Codes) und Matrix-Codes. Gestapelte Symbologien enthalten mehrere Reihen von eindimensionalen Strichcodes, welche in einer senkrechten Anordnung gestapelt sind. Gestapelte Symbologien können mittels eines Laser-Scanners, CCD-Scanners oder anderen Abtastverfahrens gelesen werden. Matrix-Codes codieren Daten mittels in einem vom speziellen Codeprotokoll ermittelten Muster angeordneter schwarzer und weißer Datenzellen. Matrix-Codes können mittels eines CCD-Bildlesers oder anderer Bildleseverfahren gelesen werden.
  • Eine Art von Matrix-Code heißt MaxiCode. MaxiCode wurde zum Sortieren und Verfolgen von Paketsendungen entwickelt. Paketdienste in den USA verwenden MaxiCode in ihren Sammel- und Verteilungszentren zum Sortieren von Sendungen nach Bestimmungsort und zur Verladung auf Schiffe. Das gemäß dem MaxiCode-Standard erzeugte und dargestellte zweidimensionale (2D-) Symbol wird im folgenden als MaxiCode-Symbol bezeichnet.
  • Ein typisches MaxiCode-Symbol ist in 59 gezeigt. 59 (a) zeigt ein komplettes MaxiCode-Symbol, und 59 (b) zeigt das Ortungsmuster und Orientierungsmodul des MaxiCode-Symbols.
  • Wie in 59 (a) gezeigt, ist ein Ortungsmuster 5901 in der Mitte jedes MaxiCode-Symbols 5900 positioniert. Jedes Ortungsmuster 5901 enthält sechs konzentrische Teile einschließlich eines weißen zentralen Kreises, zweier weißer Ringe und dreier schwarzer Ringe. Das Ortungsmuster 5901 wird verwendet, um das MaxiCode-Symbol 5900 zu lokalisieren und vom erfassten Bild zu isolieren. Die Mitte des MaxiCode-Symbols wird durch Lokalisieren der Mitte des Ortungsmusters 5901 identifiziert.
  • Der Raum innerhalb des MaxiCode-Symbols um das Ortungsmuster 5901 ist von Modulgruppen besetzt, welche aus insgesamt 884 schwarzen oder weißen ineinandergreifenden Modulen 5902 bestehen. Jedes Modul 5902 ist ein regelmäßiges Sechseck. Die Modulgruppen bestehen aus sechs Orientierungsmodul-Gruppen 5903 und einer Datenmodul-Gruppe. Jede Orientierungsmodul-Gruppe besteht aus den 3 Orientierungsmodulen, welche die Orientierung des MaxiCode-Symbols 5900 angeben. Die Datenmodul-Gruppe besteht aus den 864 Datenmodulen, welche die codierten Daten darstellen; ein Datenmodul entspricht jeweils einem Datenbit. Datenmodule werden zum Codieren von Daten verwendet und werden zur Fehlerkorrektur-Verarbeitung verwendet. Es ist zu beachten, dass die zwei Module oben rechts im Symbol nicht verwendet werden.
  • Wie in 59 (b) gezeigt, ist das regelmäßig sechseckige Modul 5902 so bemessen, dass es in den weißen zentralen Kreis des Ortungsmusters 5901 einbeschrieben werden kann. Die Orientierungsmodul-Gruppen 5903 definieren ein virtuelles regelmäßiges Sechseck, dessen Mitte der Mittelpunkt 0 des Ortungsmusters 5901 ist. Jede Orientierungsmodul-Gruppe 5903 enthält ein inneres Orientierungsmodul 5904, ein äußeres Orientierungsmodul 5905 und ein mittleres Orientierungsmodul 5906. Somit enthalten die sechs Orientierungsmodul-Gruppen 5903 insgesamt 18 Orientierungsmodule. Das Auffinden dieser 18 Orientierungsmodule identifiziert die Orientierung des MaxiCode-Symbols und ermöglicht, die Daten aus den Datenmodulen zu lesen.
  • Hier ist zu beachten, dass in jeder Orientierungsmodul-Gruppe 5903 das innere Orientierungsmodul 5904 dasjenige ist, welches den kürzesten Abstand vom Mittelpunkt 0 hat, das äußere Orientierungsmodul 5905 dasjenige ist, welches den weitesten Abstand vom Mittelpunkt 0 hat, und das mittlere Orientierungsmodul 5906 dasjenige ist, welches einen Abstand zum Mittelpunkt 0 hat, der zwischen dem Abstand vom Mittelpunkt 0 zum inneren Orientierungsmodul 5904 und dem Abstand vom Mittelpunkt 0 zum äußeren Orientierungsmodul 5905 liegt.
  • Zum Lesen von MaxiCode-Symbolen, welche wie oben erwähnt eine Art einer zweidimensionalen Code-Symbologie sind, wird ein Bildleseverfahren verwendet. In anderen Worten, ein MaxiCode-Symbol wird als Bilddaten erfasst, welche dann interpretiert (decodiert) werden. Dieser Vorgang wird nachfolgend ausführlicher beschrieben.
  • Der erste Schritt besteht darin, das Ortungsmuster und die Orientierungsmodule des MaxiCode- Symbols im erfassten Bild zu finden und dann die Datenmodule zu erkennen. Dann wird aus den Datenmodulen ein Bitmuster erzeugt, indem jedem dunklen (typischerweise schwarzen) Datenmodul ein Bitwert von 1 und jedem hellen (typischerweise weißen) Datenmodul ein Bitwert von 0 zugeordnet wird. Das resultierende Bitmuster wird dann in entsprechende Datenzeichen umgewandelt, um die Daten im MaxiCode-Symbol zu decodieren. Zum Decodieren des abgetasteten Bilds eines MaxiCode-Symbols wurden verschiedene Verfahren entwickelt.
  • Es ist immer erforderlich, die Mitte des Ortungsmusters zu finden, um ein MaxiCode-Symbol zu decodieren. JP-A-10-21322 beschreibt ein Verfahren zum Auffinden der Mitte des Ortungsmusters.
  • Dieses Verfahren findet zuerst alle Jordan-Kurven mit einem Winkelabstand zwischen zwei Punkten, der kleiner als π ist; findet dann alle konvexen Jordan-Kurven unter den gefundenen Jordan-Kurven; ermittelt die Gleichungen eines Paars von Tangenten aus den Endpunkten jeder konvexen Jordan-Kurve; ermittelt die Gleichungen der Mittellinien für jedes Paar von Tangenten; ermittelt den Schnittpunkt der Mittellinien; und findet so, auf Grundlage des Schnittpunkts der Mittellinien, den Mittelpunkt des Ortungsmusters. Dann erfolgt das Decodieren des MaxiCode-Symbols.
  • Ein Problem bei dem in JP-A-10-21322 beschriebenen Verfahren ist, dass die Verarbeitung wegen der Schritte, die erforderlich sind, um alle konvexen Jordan-Kurven aus allen gefundenen Jordan-Kurven zu isolieren, dann die Gleichungen der Tangenten zu ermitteln und schließlich nach der Mitte des Ortungsmusters des Symbols zu suchen, zeitaufwendig ist.
  • Ein Schablonen verwendendes Verfahren zum Auffinden der Mitte des Ortungsmusters ist in WO 95/34043 beschrieben. Jedoch sagt WO 95/34043 einfach, dass die sechs Symbolachsen, welche jeweils um 60 Grad versetzt sind, durch die Mitte des zentralen Kreises verlaufen und dass die Mitte der Schablone der Mitte des zentralen Kreises überlagert wird. Darüber, wie die Schablone der Mitte des zentralen Kreises zu überlagern ist, steht dort nichts bestimmtes.
  • Auch das Auffinden der Orientierungsmodule ist wichtig, und es wurden verschiedene Verfahren zur Bewerkstelligung dieser Aufgabe vorgeschlagen. Das Auffinden der Orientierungsmodule besteht im wesentlichen aus dem Herausfinden von Ort und Form der Orientierungsmodule. Durch Herausfinden von Ort und Form der Orientierungsmodule ist es nicht nur möglich, beruhend auf den Ausdehnungen eines Moduls des MaxiCode-Symbols den Ort jedes Datenmoduls zu erkennen, es ist auch möglich, die Farbe, das heißt den Bitwert der erkannten Datenmodule zu identifizieren.
  • 60 zeigt Modulgruppen in einem MaxiCode-Symbol. Wie in 60 gezeigt, enthält Modulgruppe 6000 Orientierungsmodul-Gruppen 6001a, 6001b, 6001c, 6001d, 6001e, 6001f, welche jeweils, wie oben erwähnt, mehrere Orientierungsmodule enthalten, und eine Datenmodul-Gruppe 6002, welche die einzelnen Datenmodule enthält. Außerdem ist zu beachten, dass das Bitmuster (wobei Schwarz = 1 und Weiß = 0) der drei Orientierungsmodule, welche jede der sechs Orientierungsmodul-Gruppen 6001a, 6001b, 6001c, 6001d, 6001e, 6001f bilden, je nach Orientierung unterschiedlich ausgeprägt ist. Daher wurden verschiedene Verfahren zum Lokalisieren der Orientierungsmodule vorgeschlagen, aber jedes dieser Verfahren erfordert einen komplexen Prozess. Der Orientierungsmodul-Lokalisierungsprozess ist daher zeitaufwendig.
  • Es wurden auch verschiedene Verfahren zum Erkennen von Datenmodul-Orten, beruhend auf den gefundenen Orientierungsmodulen, und zum Umwandeln der Bitmuster entsprechend den Farben der erkannten Module in Datenzeichen innerhalb eines einzigen fortlaufenden Prozesses vorgeschlagen. Diese Verfahren erfordern ebenfalls einen komplexen Prozess und sind daher ebenfalls zeitaufwendig.
  • Der Prozess zum Decodieren des abgetasteten MaxiCode-Symbol-Bilds kann abgetastete Bilder, welche als direkte frontale Bilder erfasst wurden, decodieren. Jedoch wird, je nachdem, wo auf den Packungen das jeweilige MaxiCode-Symbol angebracht ist und wo sich der zweidimensionale Strichcode-Scanner befindet, das MaxiCode-Symbol nicht unbedingt als frontale Ansicht erfasst. In der Praxis ist es im allgemeinen erforderlich, unter einem Winkel erfasste abgetastete Bilder zu decodieren, aber häufig ist es nicht möglich, solche Bilder zu decodieren.
  • 62 zeigt die Beziehung zwischen einem wirklichen MaxiCode-Symbol und dem erfassten abgetasteten Bild des MaxiCode-Symbols. 62 (a) zeigt die Beziehung zwischen einem von vorn abgetasteten MaxiCode-Symbol und dem resultierenden abgetasteten Bild, und 62 (b) zeigt die Beziehung zwischen einem unter einem Winkel abgetasteten MaxiCode-Symbol und dem resultierenden abgetasteten Bild.
  • Wie in 62 (a) gezeigt, sind das abgetastete Bild eines von vorn abgetasteten MaxiCode-Symbols und das wirkliche MaxiCode-Symbol annähernd gleich. Genauer gesagt, die relativen Positionen des Ortungsmusters und der verschiedenen Module im abgetasteten Bild des MaxiCode-Symbols sind die gleichen wie die relativen Positionen des Ortungsmusters und der Module im wirklichen MaxiCode-Symbol. Und auch die Formen des Ortungsmusters und der Module im abgetasteten Bild gleichen dem Ortungsmuster und den Modulen im wirklichen MaxiCode-Symbol annähernd.
  • Vergleicht man hingegen das unter einem Winkel erfasste abgetastete Bild eines MaxiCode-Symbols mit dem wirklichen MaxiCode-Symbol, unterscheiden sich die relativen Positionen des Ortungsmusters und der Module im abgetasteten Bild offensichtlich von den relativen Positionen des Ortungsmusters und der Module im wirklichen MaxiCode-Symbol, wie in 62 (b) gezeigt. Darüber hinaus gleichen die Formen des Ortungsmusters und der Module im abgetasteten Bild nicht den Formen des Ortungsmusters und der Module im wirklichen MaxiCode-Symbol, vielmehr ist das abgetastete Bild verzerrt. Deshalb ist es meistens schwierig, Position und Farbe der Datenmodule, welche das MaxiCode-Symbol bilden, zu erkennen.
  • Das Decodieren abgetasteter Bilder von MaxiCode-Symbolen, welches eine typische zweidimensionale Strichcode-Symbologie ist, unterliegt somit, wenn das Bild unter einem Winkel erfasst wird, einer hohen Fehlerrate, wodurch es in manchen Fällen unmöglich wird, das MaxiCode-Symbol zu decodieren.
  • Das Lösen dieses Problems erforderte einen Verzerrungskorrekturvorgang, um verzerrte abgetastete Bilder in verzerrungsfreie Bilder umzuwandeln. Ein gewöhnlich verwendetes Verzerrungskorrekturverfahren ist die Normierung.
  • Anhand von 63 wird nachfolgend die Verzerrungskorrektur eines Bilds mittels Normierung beschrieben. 63 (a) zeigt zwei Arten von Verzerrung, und 63 (b) zeigt einen Prozess zum Decodieren abgetasteter Bilder, welcher Normierung verwendet.
  • Wie in 63 (a) gezeigt, können verzerrte Bilder perspektivische Verzerrung oder rotierende Verzerrung aufweisen. Beide Arten lassen sich durch Normierung zu verzerrungsfreien Bildern korrigieren. Wie in 63 (b) gezeigt, extrahiert ein Prozess zum Decodieren eines verzerrten abgetasteten Bilds zuerst das Symbolbild, normiert dann das extrahierte Bild und decodiert schließlich das verzerrungskorrigierte Bild, um die in das Symbol codierte Information zu lesen.
  • Wie in 59 gezeigt und oben beschrieben, ist bei einem MaxiCode-Symbol das Ortungsmuster in dessen Mitte angeordnet und sind alle umgebenden Module regelmäßige Sechsecke. Folglich ist es schwierig, die Form des Symbols mathematisch zu beschreiben, wenn der Rand um das Symbol weiß ist oder die Datenmodule an den Spitzen weiß sind. Normierung, welche ein übliches Verzerrungskorrekturverfahren ist, kann nicht verwendet werden, um ein verzerrtes MaxiCode-Symbol genau zu normieren.
  • Ferner ist der Korrekturprozess, selbst wenn Normierung erfolgreich angewendet werden kann, um eine Verzerrung zu korrigieren, ziemlich zeitaufwendig.
  • Eine Technologie gemäß den Oberbegriffen der Ansprüche 1 und 8 ist in WO 95/34043 offenbart.
  • Die vorliegende Erfindung richtet sich auf eine Lösung für die obigen Probleme. Genauer gesagt, ist es die Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Lesevorrichtung zu schaffen, welche eine Verkürzung der zum Decodieren eines abgetasteten Bilds eines zweidimensionalen Code-Symbols wie des MaxiCode-Symbols erforderlichen Zeit ermöglichen.
  • KURZBESCHREIBUNG DER ERFINDUNG
  • Als Ergebnis unserer Forschung in Lösungen für die oben beschriebenen Probleme demonstrierten wir folgendes.
  • Zunächst kann der Mittelpunkt eines Ortungsmusters im abgetasteten Bild z.B. eines MaxiCode-Symbols durch Erkennen, aus den Erkennungsmustern auf Abtastzeilen durch das abgetastete Bild, eines Erkennungsmusters, welches mit einem bestimmten Referenzmuster längs einer Abtastzeile durch den Ortungsmuster-Mittelpunkt übereinstimmt, gefunden werden.
  • Außerdem kann die Verarbeitungszeit, die erforderlich ist, um Modulausdehnungen und den Ort des Mittelpunkts der Orientierungsmodule im abgetasteten Bild z.B. eines MaxiCode-Symbols auf Grundlage von erkannten Pixeldaten zu erkennen, gegenüber herkömmlichen Verfahren durch Erkennen aller in einem bestimmten Abstand vom Ortungsmuster-Mittelpunkt und in einem bestimmten Winkelabstand angeordneten Pixeldaten-Farbenmuster verkürzt werden.
  • Ferner können unter einem Winkel erfasste abgetastete Bilder von z.B. MaxiCode-Symbolen ebenso wie von vorn erfasste MaxiCode-Symbole durch Berechnen einer Gleichung, welche ein wirkliches Ortungsmuster eines MaxiCode-Symbols in Wechselbeziehung zum unter einem Winkel erfassten abgetasteten Bild eines MaxiCode-Symbols bringt, ähnlich einer Gleichung, welche einen Kreis in Wechselbeziehung zu einer Ellipse bringt, und Verwenden dieser Gleichung zum Korrigieren des abgetasteten Bilds decodiert werden.
  • Ferner können die Orientierungsachsen eines verzerrten abgetasteten Bilds im abgetasteten Bild z.B. eines MaxiCode-Symbols durch Korrigieren des Orientierungsachsenwinkels dergestalt, dass die Achse Orientierungsmodul- und Datenmodul-Mittelpunkte durchläuft, beruhend auf dem Bereich schwarzer Modulgruppen auf einer die Mitte des Ortungsmusters und ein Orientierungsmodul durchlaufenden Orientierungsachse, korrigiert werden.
  • Ferner können die Position und die Form von Modulen auf den Orientierungsachsen eines verzerrten abgetasteten Bilds, beruhend auf dem Bereich gleichfarbiger Modulgruppen auf einer korrigierten Orientierungsachse, korrigiert werden und können die Positionen von Datenmodulen zwischen Orientierungsachsen, beruhend auf der Position und der Form von Modulen auf den korrigierten Orientierungsachsen, korrigiert werden.
  • Wir demonstrierten außerdem, dass durch Erkennen von Modulpositions- und Modulform-Informationen, beruhend auf einem korrigierten abgetasteten Bild, die Verarbeitungszeit eines Decodierprozesses zum Decodieren eines abgetasteten Bilds eines MaxiCode-Symbols verkürzt werden kann.
  • Überdies demonstrierten wir noch, dass durch Umwandeln der erkannten Datenmodule in eine Bitfolge, Speichern der umgewandelten Daten in einer Bitmatrix-Tabelle und Umwandeln der Bitdaten in Codewörter, beruhend auf einer zweidimensionalen Codewort-Umwandlungstabelle, die Verarbeitungszeit zum Umwandeln von Daten in Datenzeichen gegenüber herkömmlichen Verfahren verkürzt werden kann.
  • Auf Grundlage der obigen Forschungsergebnisse wird die Aufgabe der Erfindung durch ein Verfahren nach Anspruch 1, eine Vorrichtung nach Anspruch 8 und ein Datenspeicherungsmedium nach Anspruch 15 erfüllt. Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der Unteransprüche.
  • Vorzugsweise ist das Datenspeicherungsmedium zum Aufzeichnen eines Programms gemäß der vorliegenden Erfindung eine Compact Disc, Diskette, Festplatte, magnetooptische Platte, Digital Versatile Disc (DVD), ein Magnetband oder eine Speicherkarte.
  • Weitere Aufgaben und Leistungen werden, zusammen mit einem umfassenderen Verständnis der Erfindung, durch das Studium der folgenden Beschreibung bevorzugter Ausführungsformen unter Hinzunahme der beiliegenden Zeichnungen ersichtlich und gewürdigt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Prinzipschaltbild einer Vorrichtung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 2 ist ein Prinzipschaltbild einer Vorrichtung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 3 ist ein Ablaufdiagramm des Decodierprozesses in einem Verfahren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 4 ist ein Ablaufdiagramm eines Ortungsmuster-Suchprozesses im in 3 gezeigten Decodierprozess;
  • 5 ist ein Ablaufdiagramm des Teils "Waagerechte Suche" eines Verfahrens zur Lokalisierung des Ortungsmuster-Mittelpunkts in der vorliegenden Erfindung;
  • 6 ist ein Ablaufdiagramm des Teils "Senkrechte Suche" eines Verfahrens zur Lokalisierung des Ortungsmuster-Mittelpunkts in der vorliegenden Erfindung;
  • 7 ist ein Ablaufdiagramm des Mittelpunktermittlungsteils eines Verfahrens zur Lokalisierung des Ortungsmuster-Mittelpunkts in der vorliegenden Erfindung;
  • 8 ist ein Ablaufdiagramm eines Ortungsmuster-Suchprozesses im Decodierprozess der vorliegenden Erfindung;
  • 9 ist ein Ablaufdiagramm eines Verfahrens zur Suche des Kandidaten-Ortungsmuster-Mittelpunkts gemäß der vorliegenden Erfindung;
  • 10 ist ein Ablaufdiagramm eines Verfahrens zur Berechnung des Ortungsmuster-Mittelpunkts für das Ermitteln des Mittelpunkts in der vorliegenden Erfindung;
  • 11 ist ein Ablaufdiagramm eines Bildkorrekturprozesses in einem Decodierprozess gemäß der vorliegenden Erfindung;
  • 12 ist ein Ablaufdiagramm eines Orientierungsmodul-Suchprozesses im Decodierprozess der vorliegenden Erfindung;
  • 13 ist ein Ablaufdiagramm eines Orientierungsmodul-Kandidaten-Suchprozesses im in 12 gezeigten Orientierungsmodul-Suchprozess;
  • 14 ist ein Ablaufdiagramm eines Prozesses zur Suche innerer Orientierungsmodul-Kandidaten im in 13 gezeigten Orientierungsmodul-Kandidaten-Suchprozess;
  • 15 ist ein Ablaufdiagramm eines Prozesses zur Suche äußerer Orientierungsmodul-Kandidaten im in 13 gezeigten Orientierungsmodul-Kandidaten-Suchprozess;
  • 16 ist ein Ablaufdiagramm eines Prozesses zur Suche mittlerer Orientierungsmodul-Kandidaten im in 13 gezeigten Orientierungsmodul-Kandidaten-Suchprozess;
  • 17 ist ein Ablaufdiagramm eines Orientierungsmodul-Kandidaten-Ermittlungsprozesses im in 13 gezeigten Orientierungsmodul-Kandidaten-Suchprozess;
  • 18 ist ein Ablaufdiagramm eines Orientierungsmodul-Ermittlungsprozesses im in 12 gezeigten Orientierungsmodul-Suchprozess;
  • 19 ist ein Ablaufdiagramm des Datenmodul-Suchprozesses im in 3 gezeigten Decodierprozess;
  • 20 ist ein Ablaufdiagramm des Prozesses zur Berechnung der Modulpositionen auf Orientierungsachsen im in 19 gezeigten Datenmodul-Suchprozess;
  • 21 ist ein Ablaufdiagramm des Orientierungsachsenwinkel-Korrekturprozesses im in 20 gezeigten Prozess zur Berechnung der Modulpositionen auf Orientierungsachsen;
  • 22 ist ein Ablaufdiagramm des Prozesses zur Korrektur der Breite wirklicher Module auf Orientierungsachsen im in 20 gezeigten Prozess zur Berechnung der Modulpositionen auf Orientierungsachsen;
  • 23 ist ein Ablaufdiagramm des Prozesses zur Korrektur der Breite von Kandidaten-Modulen auf Orientierungsachsen im in 20 gezeigten Prozess zur Berechnung der Modulpositionen auf Orientierungsachsen;
  • 24 ist ein Ablaufdiagramm eines Modulmittelpunkt-Berechnungsprozesses gemäß der vorliegenden Erfindung;
  • 25 ist ein Ablaufdiagramm des Datenzeichen-Umwandlungsprozesses im Decodierprozess der vorliegenden Erfindung;
  • 26 (a) zeigt das Farbenmuster längs durch die Ortungsmuster-Mitte verlaufender Geradensegmente, und (b) zeigt eine Ortungsmuster-Schablone;
  • 27 (a) zeigt Abtastrichtung und Abtastzeile für das Ortungsmuster, und (b) ist ein Wellenform-Diagramm des Erkennungsmusters;
  • 28 zeigt die Reihenfolge, in welcher die Abtastzeilen auf- und abwärts verstellt werden, nachdem die Mittellinie ermittelt ist;
  • 29 veranschaulicht die Berechnung des Ortungsmuster-Mittelpunkts;
  • 30 zeigt eine Abtastzeile bei senkrechter Abtastung des Ortungsmusters und die Wellenform des resultierenden Erkennungsmusters;
  • 31 veranschaulicht die Berechnung des Ortungsmuster-Mittelpunkts;
  • 32 zeigt ein elliptisches Ortungsmuster, welches zum Beschreiben einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird;
  • 33 zeigt eine andere bevorzugte Ausführungsform der vorliegenden Erfindung;
  • 34 zeigt ein elliptisches Ortungsmuster, welches zum Beschreiben einer anderen bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird;
  • 35 zeigt die Beziehung zwischen einem unter einem Winkel abgetasteten erfassten Bild und dem wirklichen MaxiCode-Symbol;
  • 36 zeigt die Beziehung zwischen einem Kreis und einer Ellipse;
  • 37 (a) zeigt das Orientierungsmodul in einem wirklichen MaxiCode-Symbol, und (b) zeigt das Orientierungsmodul in einem abgetasteten Bild;
  • 38 (a) zeigt die Modulbreite, und (b) zeigt die Beziehung zwischen der Modulbreite und dem Mittelpunkt des inneren Orientierungsmoduls;
  • 39 zeigt ein Farbenschablonen-Muster;
  • 40 zeigt den Ort eines Kandidaten-Orientierungsmoduls beim Suchwinkel θ;
  • 41 (a) zeigt einem Orientierungsmodul entsprechende Kandidaten-Daten vor Datenumwandlung, und (b) zeigt die demselben Orientierungsmodul entsprechenden Kandidaten-Daten nach Datenumwandlung;
  • 42 zeigt ein Verfahren zum Ermitteln von Orientierungsmodul-Kandidaten beim Größenverhältnis n;
  • 43 zeigt das Ermitteln der Position des Mittelpunkts des Orientierungsmoduls;
  • 44 (a) zeigt einen Datenumwandlungsprozess, und (b) zeigt die Folgenummern der Orientierungsmodule;
  • 45 (a) zeigt ein wirkliches Modul und ein Kandidaten-Modul auf einer Achse, und (b) zeigt den Ort des Datenmoduls auf der Achse;
  • 46 (a) zeigt ein wirkliches Modul und ein Kandidaten-Modul zwischen Achsen, und (b) zeigt den Ort des Datenmoduls zwischen Achsen;
  • 47 zeigt eine Winkelkorrektur der Orientierungsachse;
  • 48 (a) zeigt einen Bereich L einer Modulgruppe auf einer Orientierungsachse, und (b) zeigt den Mittelpunkt der die Modulgruppe bildenden Module;
  • 49 zeigt die Beziehung zwischen Orientierungsachse i und benachbarter Orientierungsachse i';
  • 50 zeigt einen Prozess zum Berechnen eines Kandidatenpunkts P1 eines zweiten korrigierten Mittelpunkts des Moduls;
  • 51 zeigt einen Prozess zum Berechnen eines Kandidatenpunkts P2 eines zweiten korrigierten Mittelpunkts des Moduls;
  • 52 zeigt einen Prozess zur Berechnung eines Modulmittelpunkts P;
  • 53 zeigt einen Prozess zur Berechnung von Modulmittelpunkten;
  • 54 zeigt ein Codewort;
  • 55 (a) zeigt die Beziehung zwischen einer Bitmatrix-Tabelle und einer Datenmodul-Position in einem MaxiCode-Symbol, und (b) zeigt die in der Bitmatrix-Tabelle gespeicherten Daten;
  • 56 zeigt eine Codewort-Matrix-Tabelle;
  • 57 zeigt die Beziehung zwischen den in der Bitmatrix-Tabelle gespeicherten Bitdaten und den Datenelementen in der Codewort-Matrix-Tabelle;
  • 58 zeigt die Vorgabe-Zeichenvorratstabelle;
  • 59 (a) zeigt ein MaxiCode-Symbol, und (b) zeigt Ortungsmuster und Orientierungsmodule des MaxiCode-Symbols;
  • 60 zeigt Modulgruppen in einem MaxiCode-Symbol;
  • 61 zeigt Ortungsmuster und Orientierungsmodule in einem wirklichen MaxiCode-Symbol;
  • 62 (a) zeigt die Beziehung zwischen einem MaxiCode-Symbol und einem von vorn erfassten abgetasteten Bild eines MaxiCode-Symbols, und (b) zeigt die Beziehung zwischen einem MaxiCode-Symbol und einem unter einem Winkel erfassten abgetasteten Bild eines MaxiCode-Symbols; und
  • 63 (a) zeigt einige Arten der Bildverzerrung, und (b) zeigt eine Decodierverarbeitung mit durch Normierung korrigierten Bilddaten.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • 1 ist ein Prinzipschaltbild, welches die Hauptelemente einer Vorrichtung zum Lesen eines zweidimensionalen Strichcode-Symbols (im folgenden einfach als "Strichcode-Symbol" bezeichnet) gemäß der vorliegenden Erfindung zeigt. Diese Elemente werden nachfolgend beschrieben.
  • Wie in 1 gezeigt, enthält dieser Strichcodeleser 100 eine Lichtquelle 101, einen Fotodetektor 103 mit einer Blende 102, einen Empfänger und A/D-Wandler 104, eine CPU 105, einen VRAM 106 und einen ROM 107.
  • Die Lichtquelle 101 beleuchtet das zu lesende Strichcode-Symbol, in diesem Beispiel ein MaxiCode-Symbol 110, und ist typischerweise eine Leuchtdiode oder ein Halbleiter-Laser. Fotodetektor 103 empfängt vom MaxiCode-Symbol 110 reflektiertes Licht und wandelt das empfangene Licht in ein elektrisches Signal um. Der Fotodetektor 103 ist typischerweise ein lineares oder zweidimensionales CCD (ladungsgekoppelte Schaltung).
  • Der Empfänger und A/D-Wandler 104 empfängt das elektrische Signal vom Fotodetektor 103 und wandelt es in ein Signal um, welches von der CPU 105 verarbeitet werden kann. Die CPU 105 wendet einen Decodierprozess auf das Bildsignal an.
  • Der Fotodetektor 103 erzeugt ein analoges Signal, welches dem von den Elementen des MaxiCode-Symbols 110 reflektierten modulierten Licht entspricht. Genauer gesagt, die Pixel der CCD-Anordnung des Fotodetektors 103 geben typischerweise ein analoges Signal aus, welches die von einem bestimmten Pixel reflektierte Intensität oder Lichtmenge definiert, ähnlich einem gewöhnlichen Graustufen- oder Videodatensignal.
  • Der Empfangsteil des Empfängers und A/D-Wandlers 104 empfängt das dem modulierten Licht entsprechende analoge Signal, und der A/D-Wandler-Abschnitt wandelt dann das analoge Signal in ein digitales Signal um, welches die von der CPU verwendete Anzahl von Graustufen aufweist, und sendet das digitale Signal an die CPU 105. Diese beispielhafte Ausführungsform verwendet 16 Graustufen. Der Empfänger und A/D-Wandler 104 zwischenspeichert dann die resultierenden Digitalsignale im VRAM 106, wobei durch das Digitalsignal dargestellte Bilder des MaxiCode-Symbols 110 angesammelt werden. Nach Verarbeiten der angesammelten Bilder gibt CPU 105 das Ergebnis über eine Schnittstelle an ein Peripheriegerät oder einen Host-Computer (in der Figur nicht gezeigt) aus.
  • Es ist auch offensichtlich, dass der von dieser CPU 105 ausgeführte Bildprozess vom Host-Computer ausgeführt werden kann.
  • Es ist zu beachten, dass der Empfänger und A/D-Wandler 104 und die CPU 105 beide mit dem VRAM 106 verbunden sind. ROM 107 speichert das von der CPU 105 ausgeführte Steuerprogramm und bestimmte Werte, die nachfolgend genauer beschrieben werden.
  • Wie oben beschrieben, bilden der weiße zentrale Kreis, zwei weiße Ringe und drei schwarze Ringe in der Mitte des MaxiCode-Symbols 110 das MaxiCode Ortungsmuster 111, welches gewöhnlich als die Zielscheibe bezeichnet wird.
  • Eine Vorrichtung zum Lesen zweidimensionaler Strichcodes (im folgenden "Strichcodeleser") gemäß einer Ausführungsform der vorliegenden Erfindung enthält eine Datenmodul-Sucheinheit zum Berechnen von Ortsinformationen und Forminformationen für alle das Strichcode-Symbol bildenden Module. Sie bewerkstelligt dies durch Berechnen von durch die Orientierungsmodule und den Mittelpunkt des Ortungsmusters verlaufenden Orientierungsachsen auf Grundlage des Orts des Ortungsmusters, des Orts der Orientierungsmodule und von Forminformationen über die Orientierungsmodule im abgetasteten Bild des Strichcode-Symbols.
  • Der Strichcodeleser einer Ausführungsform der vorliegenden Erfindung enthält ferner eine Ortungsmuster-Sucheinheit zum Auffinden von Abtastzeilen, längs welcher das im abgetasteten Bild des Strichcode-Symbols in einer bestimmten Abtastrichtung erkannte Muster mit einem bestimmten Referenzmuster übereinstimmt, Erkennen des Ortungsmusters im abgetasteten Bild des Strichcode-Symbols, beruhend auf den mehreren gefundenen Abtastzeilen, und Gewinnen von Orts- und Forminformationen über das gefundene Ortungsmuster.
  • Der Strichcodeleser einer Ausführungsform der vorliegenden Erfindung enthält ferner eine Bildkorrektureinheit zum Berechnen einer die Beziehung zwischen dem Strichcode-Symbol und dem abgetasteten Bild des Strichcode-Symbols darstellenden Gleichung und anschließenden Korrigieren des abgetasteten Bilds des Strichcode-Symbols, beruhend auf der resultierenden Gleichung.
  • Der Strichcodeleser einer Ausführungsform der vorliegenden Erfindung enthält ferner eine Orientierungsmodul-Sucheinheit zum Auffinden mehrerer Pixeldatengruppen, deren Farbenmuster mit einem bestimmten Farbenschablonen-Muster übereinstimmt, im abgetasteten Bild des Strichcode-Symbols. Die Farbenmuster enthalten schwarze oder weiße Pixel der jeweiligen Pixeldatengruppe, welche einen bestimmten Abstand von einem bestimmten Punkt im abgetasteten Bild haben und in einem bestimmten Winkelabstand angeordnet sind. Auf Grundlage der gefundenen mehreren Pixeldatengruppen werden im abgetasteten Bild des Strichcode-Symbols mehrere Orientierungsmodule, welche eine Orientierungsmodul-Gruppe bilden, erkannt und werden Ort und Form dieser mehreren Orientierungsmodule gewonnen.
  • Der Strichcodeleser einer Ausführungsform der vorliegenden Erfindung enthält ferner eine Datenzeichen-Umwandlungseinheit zum Umwandeln von Datenmodul-Bitdaten in Codewörter, indem die Position der die Datenmodul-Gruppe im abgetasteten Bild des zweidimensionalen Strichcode-Symbols bildenden Datenmodule, beruhend auf einer bestimmten Codewort-Umwandlungstabelle, in Wechselbeziehung zu bestimmten Codewörtern und bestimmten Bitwerten in den bestimmten Codewörtern gebracht wird und dann die resultierenden Codewörter in bestimmte Datenzeichen umgewandelt werden.
  • Die Funktionsweise eines so gebildeten Strichcodelesers gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung wird gleich nachfolgend anhand der beiliegenden Figuren beschrieben.
  • 2 ist ein Prinzipschaltbild einer Vorrichtung zum Lesen zweidimensionaler Strichcodes gemäß der vorliegenden Erfindung. Die Funktionen ihrer Bestandteile werden nachfolgend beschrieben.
  • Wie in 2 gezeigt, enthält dieser beispielhafte Strichcodeleser eine Steuereinheit 201, eine Pixeldaten-Speicherungseinheit 202, eine Ortungsmuster-Sucheinheit 203, eine Bildkorrektureinheit 204, eine Orientierungsmodul-Sucheinheit 205, eine Datenmodul-Sucheinheit 206 und einen Datenzeichen-Umwandler 207.
  • Die Pixeldaten-Speicherungseinheit 202 speichert Bilddaten aus dem durch den Fotodetektor 103 (in der Figur nicht gezeigt) erfassten abgetasteten Bild als mit einer bestimmten Pixelposition in Wechselbeziehung stehende Pixeldaten in einem Pixeldaten-Register 210 im VRAM 106.
  • Die Ortungsmuster-Sucheinheit 203 sucht nach dem Ortungsmuster des MaxiCode-Symbols, beruhend auf im Pixeldaten-Register 210 im VRAM 106 gespeicherten Pixeldaten und einem im Decodierungs-Datenspeicher 220 gespeicherten bestimmten Referenzmuster, und berechnet dann die Ortungsmuster-Forminformationen. Die Ortungsmuster-Forminformationen enthalten den Mittelpunkt, die Größe und die Form des Ortungsmusters. Die Ortungsmuster-Sucheinheit 203 speichert dann die Ortungsmuster-Forminformationen im Ortungsmuster-Informationen-Register 211 im VRAM 106.
  • Unter Verwendung der aus den von der Ortungsmuster-Sucheinheit 203 lokalisierten Ortungsmuster-Pixeldaten berechneten Ortungsmuster-Forminformationen und von Forminformationen für ein wirkliches MaxiCode-Symbol berechnet die Bildkorrektureinheit 204 eine Neigungswinkel-Korrekturgleichung für vom Fotodetektor 103 unter einem Winkel erfasste Bilddaten. Unter Verwendung der resultierenden Neigungswinkel-Korrekturgleichung erzeugt die Bildkorrektureinheit 204 dann eine Neigungswinkel-Korrekturtabelle und korrigiert dann, beruhend auf dieser Neigungswinkel-Korrekturtabelle, die Pixeldaten des erfassten MaxiCode-Symbol-Bilds. Die Bildkorrektureinheit 204 speichert außerdem die berechnete Neigungswinkel-Korrekturgleichung oder -tabelle und die korrigierten MaxiCode-Symbol-Bilddaten, das heißt die korrigierten Pixeldaten, im Bildkorrekturdaten-Register 212 im VRAM 106.
  • Die Orientierungsmodul-Sucheinheit 205 sucht, beruhend auf den von der Bildkorrektureinheit 204 korrigierten MaxiCode-Symbol-Bilddaten, den Formdaten für ein wirkliches MaxiCode-Symbol und dem vorher im Decodierungs-Datenspeicher 220 gespeicherten bestimmten Farbenschablonen-Muster, nach Orientierungsmodulen und berechnet die Orts- und Forminformationen für die 18 (drei in jeder von sechs Richtungen) Orientierungsmodule. Die Orientierungsmodul-Sucheinheit 205 ermittelt außerdem die Orientierung des MaxiCode-Symbols aus den berechneten Orientierungsmodul-Positionsinformationen. Die berechneten Orientierungsmodul-Positionsinformationen und -Forminformationen werden dann im Orientierungsmodul-Daten-Register 213 im VRAM 106 gespeichert.
  • Auf Grundlage der von der Ortungsmuster-Sucheinheit 203 berechneten Ortungsmuster-Forminformationen und der von der Orientierungsmodul-Sucheinheit 205 berechneten Orientierungsmodul-Positions- und Forminformationen findet die Datenmodul-Sucheinheit 206 durch Korrigieren der Verzerrung in den vom Fotodetektor 103 erfassten Bilddaten alle Datenmodule im MaxiCode-Symbol und berechnet sie die Datenmodul-Positions- und Forminformationen. Die berechneten Datenmodul-Positions- und Forminformationen werden dann im Datenmodul-Informationen-Register 214 im VRAM 106 gespeichert.
  • Der Datenzeichen-Umwandler 207 wandelt dann die Farbe jedes berechneten Datenmoduls in ein Bitmuster um. Dieser Vorgang wandelt zum Beispiel ein weißes (helles) Datenmodul in einen Bitwert von 0 und ein schwarzes (dunkles) Datenmodul in einen Bitwert von 1 um und wird im folgenden als "Bitumwandlung" bezeichnet. Die bit-umgewandelten Daten werden dann in einer Bitmatrix-Tabelle gespeichert und, beruhend auf einer vorher im Decodierungs-Datenspeicher 220 gespeicherten Codewort-Matrix-Tabelle, in Daten-Codewörter, welche jeweils ein Datenzeichen darstellen, und Fehlerkorrektur-Codewörter, welche Fehlerkorrektur-Daten darstellen, umgewandelt. Dieser Schritt wird im folgenden als "Codewort-Umwandlung" bezeichnet. Die Daten-Codewörter werden dann durch Anwenden eines Fehlerkorrekturprozesses unter Verwendung der Fehlerkorrektur Codewörter als die richtigen Daten-Codewörter wiederhergestellt.
  • Die aus dem Fehlerkorrekturprozess resultierenden Daten-Codewörter werden dann, beruhend auf einer vorher im Decodierungs-Datenspeicher 220 gespeicherten Vorgabe-Zeichenvorratstabelle, in Datenzeichen umgewandelt. Die Datenzeichen werden im Speicher für decodierte Ergebnisse 215 im VRAM 106 gespeichert. Es ist zu beachten, dass die aus den oben erwähnten Zwischenschritten im Datenzeichen-Umwandlungsvorgang resultierenden bit-umgewandelten Daten, codewort-umgewandelten Daten und fehlerkorrigierten Daten auch im Speicher für decodierte Ergebnisse 215 im VRAM 106 gespeichert werden können.
  • Die Steuereinheit 201 steuert den Betrieb und das Zusammenspiel der Pixeldaten-Speicherungseinheit 202, der Ortungsmuster-Sucheinheit 203, der Bildkorrektureinheit 204, der Orientierungsmodul-Sucheinheit 205, der Datenmodul-Sucheinheit 206 und des Datenzeichen-Umwandlers 207.
  • Ein Verfahren zum Lesen eines zweidimensionalen Strichcodes gemäß einer Ausführungsform der vorliegenden Erfindung enthält einen Datenmodul-Suchschritt zum Berechnen von Ortsinformationen und Forminformationen für alle das Strichcode-Symbol bildenden Module. Es bewerkstelligt dies durch Berechnen von durch die Orientierungsmodule und den Mittelpunkt des Ortungsmusters verlaufenden Orientierungsachsen auf Grundlage des Orts des Ortungsmusters, des Orts der Orientierungsmodule und von Forminformationen über die Orientierungsmodule im abgetasteten Bild des Zwei-Strichcode-Symbols.
  • Das Verfahren gemäß der vorliegenden Erfindung enthält vorzugsweise außerdem einen Ortungsmuster-Suchschritt zum Auffinden von Abtastzeilen, längs welcher das im abgetasteten Bild des Strichcode-Symbols in einer bestimmten Abtastrichtung erkannte Muster mit einem bestimmten Referenzmuster übereinstimmt, Erkennen des Ortungsmusters im abgetasteten Bild des Strichcode-Symbols, beruhend auf den mehreren gefundenen Abtastzeilen, und Gewinnen der Ortungsmuster-Orts- und Forminformationen.
  • Das Verfahren der vorliegenden Erfindung enthält vorzugsweise außerdem einen Bildkorrekturschritt zum Berechnen einer die Beziehung zwischen dem Strichcode-Symbol und dem abgetasteten Bild des Strichcode-Symbols darstellenden Gleichung und anschließenden Korrigieren des abgetasteten Bilds des Strichcode-Symbols, beruhend auf der resultierenden Gleichung.
  • Das Verfahren der vorliegenden Erfindung enthält vorzugsweise außerdem einen Orientierungsmodul-Suchschritt zum Auffinden mehrerer Pixeldatengruppen, deren Farbenmuster mit einem bestimmten Farbenschablonen-Muster übereinstimmt, im abgetasteten Bild des Strichcode-Symbols. Die Farbenmuster enthalten schwarze oder weiße Pixel der jeweiligen Pixeldatengruppe, welche einen bestimmten Abstand von einem bestimmten Punkt im abgetasteten Bild haben und in einem bestimmten Winkelabstand angeordnet sind. Auf Grundlage der gefundenen mehreren Pixeldatengruppen werden im abgetasteten Bild des Strichcode-Symbols mehrere Orientierungsmodule, welche die Orientierungsmodul-Gruppen bilden, erkannt und werden Ort und Form dieser mehreren Orientierungsmodul-Gruppen gewonnen.
  • Das Verfahren der vorliegenden Erfindung enthält vorzugsweise außerdem einen Datenzeichen-Umwandlungsschritt zum Umwandeln von Datenmodul-Bitdaten in Codewörter, indem die Position der die Datenmodul-Gruppe im abgetasteten Bild des Strichcode-Symbols bildenden Datenmodule, beruhend auf einer bestimmten Codewort-Umwandlungstabelle, in Wechselbeziehung zu bestimmten Codewörtern und bestimmten Bitwerten in den bestimmten Codewörtern gebracht wird und dann die resultierenden Codewörter in bestimmte Datenzeichen umgewandelt werden.
  • Der Ablauf eines so gebildeten Verfahrens zum Lesen zweidimensionaler Strichcodes gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung wird gleich nachfolgend anhand der beiliegenden Figuren beschrieben.
  • 3 ist ein Ablaufdiagramm des Decodierprozesses im Verfahren zum Lesen eines zweidimensionalen Strichcodes der vorliegenden Erfindung.
  • Wie in 3 gezeigt, besteht der erste Schritt darin, Bilddaten aus dem vom Fotodetektor 103 (in der Figur nicht gezeigt) erfassten abgetasteten Bild als mit einer bestimmten Pixelposition in Wechselbeziehung stehende Pixeldaten in einem Pixeldaten-Register 210 im VRAM 106 zu speichern. (S301)
  • Die Pixeldaten bestehen aus der Pixelposition entsprechenden Koordinaten und einem der Graustufe des Pixels entsprechenden Grauwert. Hierin wird davon ausgegangen, dass der Grauwert zur Farbe "Schwarz" hin abnimmt. Die Grauwerte der Pixeldaten werden dann, in Abhängigkeit von einem bestimmten, vorher im Decodierungs-Datenspeicher 220 gespeicherten Graustufungs-Schwellenwert, in Binärmusterwerte 1 (= Schwarz) und 0 (= Weiß) umgewandelt. In anderen Worten, wenn der Grauwert eines Pixels kleiner als dieser Graustufungs-Schwellenwert ist, ist der Musterwert 1 (was "Schwarz" entspricht), aber wenn der Grauwert des Pixels größer als der oder gleich dem Graustufungs-Schwellenwert ist, ist der Musterwert 0 (was "Weiß" entspricht). Es ist zu beachten, dass diese Pixelwerte 1 (Schwarz) und 0 (Weiß) im Pixeldaten-Register 210 gespeichert werden können. Der Graustufungs-Schwellenwert ist auch variabel.
  • Der nächste Schritt (S302) besteht darin, nach dem Ortungsmuster zu suchen, welches benötigt wird, um das MaxiCode-Symbol, beruhend auf im Pixeldaten-Register 210 im VRAM 106 gespeicherten Pixeldaten, aus dem abgetasteten Bild zu extrahieren.
  • Ortungsmuster-Forminformationen, das heißt Mittelpunkt, Größe und Form des Ortungsmusters, werden von der Ortungsmuster-Suche berechnet. Wie in 59 (b) gezeigt, ist das Ortungsmuster eines wirklichen MaxiCode-Symbols ein Zielscheiben-Muster aus sechs konzentrischen abwechselnd schwarzen und weißen Kreisen, wobei der innere Kreis immer weiß und der äußere Kreis immer schwarz ist, so dass es drei weiße und drei schwarze Kreise gibt. Die Koordinaten für den Mittelpunkt des Ortungsmusters und die Positionskoordinaten für die Farbgrenzen zwischen den weißen und den schwarzen Kreisen des Ortungsmusters werden daher berechnet, um die Ortungsmuster-Forminformationen zu gewinnen.
  • Dann werden die Forminformationen für das lokalisierte Ortungsmuster mit den Forminformationen für ein Ortungsmuster in einem Standard-MaxiCode-Symbol verglichen, um, beruhend auf dem Winkel, unter welchem das Bild erfasst wurde, als der Fotodetektor 103 das Symbolbild unter einem Winkel abtastete, eine Neigungswinkel-Korrekturgleichung zu berechnen. Dann wird durch Anwenden der berechneten Winkelkorrekturgleichung eine Neigungswinkel-Korrekturtabelle erzeugt, um eine festgelegte Korrekturgenauigkeit zu erreichen. Die resultierende Neigungswinkel-Korrekturtabelle wird dann verwendet, um den Pixeldaten-Neigungswinkel zu korrigieren (S303).
  • 35 zeigt die Beziehung zwischen einem normalen MaxiCode-Symbol und dem unter einem Winkel erfassten abgetasteten Bild eines MaxiCode-Symbols. 35 ist eine Ansicht aus der positiven Richtung der y-Achse in einem rechtshändigen dreidimensionalen Raum, in welchem die y-Achse orthogonal zur x-Achse und zur z-Achse liegt.
  • In 35 hat Form S, für welche S = S(x, y, 0) gilt, in der x-y-Ebene Punkte A und B. Nachfolgend wird davon ausgegangen, dass Form S ein Kreis im Ortungsmuster eines MaxiCode-Symbols ist; Geradensegment AB ist der Durchmesser des Ortungsmusters; Punkt P war der Brennpunkt beim Abtasten des Bilds durch Fotodetektor 103; und Punkt C ist die Mitte des abgetasteten Bilds. In diesem Fall liegt das abgetastete Bild in einer zur Geraden PC orthogonalen Ebene und entspricht das abgetastete Geradensegment AB im abgetasteten Bild dem Geradensegment A'B'. Die Dreiecke A'B'P und A''B''P sind ähnlich, und die Gerade, auf welcher Geradensegment AB erfasst wurde, lässt sich als Geradensegment A''B'' denken. Punkt 0 ist der Mittelpunkt des Ortungsmusters.
  • Die Beziehung zwischen einem normalen MaxiCode-Symbol und einem unter einem Winkel erfassten abgetasteten Bild kann durch Berechnen der folgenden Gleichungen f und g oder h ermittelt werden. A'' = f(A') = f(g(A)) = h(A) B'' = f(B') = f(g(B)) = h(B) C = f(C') = f(g(C)) = h(C)
  • Die Beziehung zwischen einem normalen MaxiCode-Symbol und einem abgetasteten Bild kann auch durch Berechnen der folgenden Gleichungen f_1 und g_1 oder h_1 ermittelt werden. aA = g_1(A') = g_1(f_1(A'')) = h_1(A'') B = g_1(B') = g_1(f_1(B'')) = h_1(B'') C = g_1(C') = g_1(f_1(C)) = h_1(C)
  • Die Gleichungen f und g oder h und die Gleichungen f_1 und g_1 oder h_1 definieren mithin die Beziehung zwischen dem abgetasteten Bild und dem wirklichen MaxiCode-Symbol, wenn das MaxiCode-Symbol unter einem Winkel erfasst wird, und können somit als Neigungswinkel-Korrekturgleichungen verwendet werden. Dann wird mittels der berechneten Neigungswinkel- Korrekturgleichungen eine Neigungswinkel-Korrekturtabelle erzeugt, um die festgelegte Korrekturgenauigkeit zu erreichen.
  • Die erforderlichen Pixeldaten im abgetasteten Bild des MaxiCode-Symbols werden dann, beruhend auf der resultierenden Neigungswinkel-Korrekturtabelle, bild-korrigiert.
  • Ferner ist es, weil durch Auffinden der Orientierungsmodule des MaxiCode-Symbols alle Datenmodule gefunden werden können, nicht erforderlich, alle das abgetastete Bild des MaxiCode-Symbols bildenden Pixeldaten zu korrigieren. Genauer gesagt, es ist lediglich erforderlich, Pixeldaten in den Bereichen, in welchen die Orientierungsmodule liegen, zu korrigieren. Deshalb brauchen die berechneten Neigungswinkel-Korrekturgleichungen nur in dem Bereich zu gelten, in welchem die Orientierungsmodule des MaxiCode-Symbols liegen.
  • Dann werden alle mit einer bestimmten, vorher im Decodierungs-Datenspeicher 220 gespeicherten Farbenschablone übereinstimmenden bild-korrigierten Pixeldaten erkannt und werden die Positions- und Forminformationen für die Orientierungsmodule, beruhend auf den erkannten Pixeldaten, berechnet (S304).
  • Wie in 60 gezeigt und oben erwähnt, geben die Orientierungsmodule die Orientierung eines MaxiCode-Symbols an und sind sie an bestimmten Stellen im MaxiCode-Symbol angeordnet. Deshalb ist es möglich, durch Lokalisieren der Orientierungsmodule und anschließendes Berechnen von Position und Form der Orientierungsmodule die Orientierung des MaxiCode-Symbols zu erkennen. Ferner ist, sobald die Orientierung des MaxiCode-Symbols bekannt ist, die Position jedes Datenmoduls im MaxiCode-Symbol bekannt und ist auch die Farbe jedes Datenmoduls bekannt.
  • Alle Datenmodule im MaxiCode-Symbol werden dann entweder als ein Datenmodul auf einer Orientierungsachse oder als ein Datenmodul in einem Bereich zwischen Orientierungsachsen gruppiert, und dann werden der Ort und die Form jedes Datenmoduls berechnet (S305). Dies wird durch Korrigieren der Verzerrung der vom Fotodetektor 103 erfassten Bilddaten, beruhend auf der durch den Mittelpunkt des Ortungsmusters und die berechneten Orientierungsmodule verlaufenden Orientierungsachse und den für die Orientierungsmodule berechneten Orts- und Forminformationen, bewerkstelligt.
  • Der nächste Schritt (S306) identifiziert die Farbe jedes Datenmoduls, unterzieht alle Datenmodule einer Bit-Umwandlung, speichert die bit-umgewandelten Daten in der Bitmatrix-Tabelle, wandelt die Daten, beruhend auf einer bestimmten, vorher im Decodierungs-Datenspeicher 220 gespeicherten zweidimensionalen Codewort-Umwandlungstabelle, in Codewörter um und wendet einen Fehlerkorrekturprozess an. Dann werden die Codewörter, beruhend auf dem vorher im Decodierungs-Datenspeicher 220 gespeicherten festgelegten Vorgabe-Zeichenvorrat, in Datenzeichen umgewandelt und endet der Decodierprozess.
  • Es ist zu beachten, dass das Verfahren der vorliegenden Erfindung nicht unbedingt alle Schritte S302 bis S306 umfasst und auch nur aus einem einzigen der Schritte S302 bis S306 bestehen kann.
  • Die oben beschriebenen Ortungsmuster-Suchschritte werden nachfolgend anhand von 4, 26, 27, 28 und 29 ausführlicher erläutert.
  • 4 ist ein Ablaufdiagramm eines Ortungsmuster-Suchprozesses im in 3 gezeigten MaxiCode-Symbol-Decodierprozess gemäß der vorliegenden Erfindung.
  • Das MaxiCode-Symbol-Bild wird in einer ersten Abtastrichtung abgetastet, um durch Vergleichen des längs einer speziellen Abtastzeile erkannten Musters (der unten erwähnten "Farbenmuster-Beziehungsgleichung") mit einem Referenzmuster (der unten erwähnten "Ortungsmuster-Schablone") eine in der Nähe des Mittelpunkts des Ortungsmusters verlaufende Abtastzeile zu finden. Der Mittelpunkt wird dann aus der gefundenen Abtastzeile berechnet. Dieser Vorgang wird mehrere Male wiederholt, um mehrere solche Abtastzeilen zu finden, und der Mittelpunkt wird für jede der so identifizierten Abtastzeilen berechnet (S401). Es ist zu beachten, dass im folgenden die in einer ersten Abtastrichtung abgetastete Abtastzeile in der Nähe des Ortungsmuster-Mittelpunkts als die "Kandidaten-Mittellinie in der ersten Abtastrichtung" bezeichnet wird, der Mittelpunkt als der "Kandidaten-Mittelpunkt in der ersten Abtastrichtung" bezeichnet wird und der Satz aus mehreren Mittelpunkten als die "Kandidaten-Mittelpunkte-Gruppe in der ersten Abtastrichtung" bezeichnet wird. Daher werden mehrere Kandidaten-Mittellinien in der ersten Abtastrichtung gefunden, und es wird eine mehrere Kandidaten-Mittelpunkte in der ersten Abtastrichtung enthaltende Kandidaten-Mittelpunkte-Gruppe in der ersten Abtastrichtung berechnet. Ferner wird im folgenden davon ausgegangen, dass die erste Abtastrichtung die waagerechte Richtung ist (es ist zu beachten, dass die Begriffe "waagerecht" und "senkrecht", wie sie in diesem Text verwendet werden, nicht als eine den jeweiligen Richtungen auferlegte Einschränkung aufzufassen sind – sie sollen lediglich bedeuten, dass die waagerechte und die senkrechte Richtung senkrecht zueinander liegen).
  • 26 veranschaulicht eine Ortungsmuster-Schablone. 26 (a) zeigt ein Farbenmuster auf einer durch den Mittelpunkt des Ortungsmusters verlaufenden Gerade, und 26 (b) zeigt die Ortungsmuster-Schablone.
  • Wie in 26 (a) gezeigt, ist das Ergebnis des Absuchens der in der durch den Pfeil angegebenen Richtung durch den Ortungsmuster-Mittelpunkt verlaufenden Geraden 2601 ein Impulswellendiagramm, in welchem ein "High"-Impuls einen weißen Bereich und ein "Low"-Impuls einen schwarzen Bereich anzeigt. Wie in 26 (b) gezeigt, ist, wenn ein (relativer) Abstand vom Außenrand des ersten schwarzen Kreises (durch A gekennzeichnet) zum Außenrand des nächsten schwarzen Kreises (bei C) 1 ist, der Abstand vom Außenrand des ersten weißen Kreises (B) zum gleichen Rand des nächsten weißen Kreises (D) ebenfalls 1. Ferner sind der Abstand vom Außenrand (E) des den weißen zentralen Kreis direkt einschließenden schwarzen Kreises zum Innenrand (G) desselben schwarzen Kreises auf der anderen Seite der weißen Mitte und der Abstand vom ersten Rand (F) der weißen Mitte zum Innenrand des nächsten weißen Rings (H) beide 1,26.
  • Deshalb gilt, wenn das Zielscheiben-Muster wie oben beschrieben von links nach rechts (A nach L) durch die Mitte abgetastet wird und das Verhältnis der Abstände Schwarz-Schwarz (A-C), Weiß-Weiß (B-D), Schwarz-Schwarz (C-E), ... Weiß-Weiß (J-L) angesammelt wird, die Farbenmuster-Beziehung
    AC:BD:CE:DF:EG:FH:GI:HJ:IK:JL = 1:1:1:1:1,26:1,26:1:1:1:1
    wobei zum Beispiel AC den Abstand von Punkt A zu Punkt C angibt.
  • Diese die Beziehung des Farbenmusters eines normalen Ortungsmusters definierende Gleichung wird im Decodierungs-Datenspeicher 220 im ROM 107 als eine Ortungsmuster-Schablone gespeichert.
  • Ferner ist, wenn die Mitte von rechts nach links (L nach A) abgetastet wird und die Rand-zu-Rand-Abstände wieder als ein Verhältnis in der Reihenfolge Schwarz-Schwarz (L-J), Weiß-Weiß (K-I), Schwarz-Schwarz (J-H), ... Weiß-Weiß (C-A) ausgedrückt werden, das Verhältnis das gleiche, das heißt
    LJ:KI:JH:IG:HF:GE:FD:EC:BD:CA = 1:1:1:1:1,26:1,26:1:1:1:1.
  • Wie in 27 (a) gezeigt, besteht daher der erste Schritt darin, den Mittelteil des gesamten abgetasteten Bilds 2701 des MaxiCode-Symbols (in einer ersten Abtastrichtung) waagerecht abzutasten, um, beruhend auf dem Farbenmuster der Abtastzeile 2702, eine Impulswelle (siehe 27 (b)) zu erzeugen und die Farbenmuster-Beziehungsgleichung (das Farbenmuster-Verhältnis) längs dieser Abtastzeile zu berechnen. Das erkannte Verhältnis wird dann durch Musterabgleich mit der im Decodierungs-Datenspeicher 220 im ROM 107 gespeicherten MaxiCode-Ortungsmuster-Schablone (26 (b)) verglichen. Wenn das erkannte Verhältnis mit der Schablone übereinstimmt, wird diese Abtastzeile als eine Kandidaten-Mittellinie in der ersten Abtastrichtung definiert. Es ist zu beachten, dass diese Abtastzeile hier als eine Kandidaten-Mittellinie definiert wird, weil es andere Schwarz-Weiß-Daten geben kann, welche zufällig in den gleichen Intervallen wie die Schablone angeordnet sind.
  • Wenn, wie in 27 (b) gezeigt, die Anzahl von Vergleichspunkten im Farbenmuster-Verhältnis und die Anzahl von Vergleichspunkten in der Ortungsmuster-Schablone nicht gleich sind, steht fest, dass die Gerade nicht durch den Mittelpunkt 2703 des zentralen Kreises des Ortungsmusters verläuft. In diesem Fall wird das Bild, wie in 28 gezeigt, erneut abgetastet, wobei die Mittellinie 1 des gesamten Bilds 2801 in aufeinanderfolgenden Abtastungen oberhalb und unterhalb mit Abtastzeilen 2, 3 und so weiter umschlossen wird. Der Musterabgleich zwischen dem erkannten Farbenmuster-Verhältnis und der Ortungsmuster-Schablone wird nach jeder Abtastung wiederholt, um die mit einem bestimmten Muster übereinstimmende Abtastzeile wie oben beschrieben zu finden, und die als am besten mit der Schablone übereinstimmend ermittelte Abtastzeile wird als die Mittellinie in der waagerechten Richtung definiert.
  • Der Punkt in der Mitte zwischen dem Schnittpunkt dieser Mittellinie mit dem Innenrand des äußersten schwarzen Kreises (d.h. dem B in 26 (b) entsprechenden Punkt) und dem Schnittpunkt dieser Mittellinie mit dem Innenrand des äußersten schwarzen Kreises auf der gegenüberliegenden Seite (d.h. dem K in 26 (b) entsprechenden Punkt), das heißt zwischen zwei Punkten auf dem Außenrand des äußersten weißen Kreises des Ortungsmusters, wird dann gefunden und als ein Kandidaten-Mittelpunkt (Kandidaten-Mittelpunkt in der ersten Abtastrichtung) definiert.
  • Es ist zu beachten, dass der Punkt in der Mitte zwischen zwei Punkten auf dem Außenrand des äußersten weißen Kreises zur Gewinnung der Mitte-Koordinaten verwendet wird, statt den Punkt in der Mitte zwischen zwei Punkten auf dem Außenrand des äußersten schwarzen Kreises des Ortungsmusters zu verwenden, weil schwarze Pixeldaten den Außenrand des äußersten schwarzen Kreises des Ortungsmusters berühren können und die Lokalisierung dieses äußersten schwarzen Kreises daher fehlinterpretiert werden könnte.
  • Es gibt auch Fälle, in welchen eine genaue Übereinstimmung zwischen einer Abtastzeile und der Schablone nicht ermittelt werden kann und es mehrere Kandidaten-Mittellinien in der waagerechten Richtung gibt. In diesem Fall werden die x-Koordinaten der Kandidaten-Mitte-Koordinaten gerundet, und nur die auf denselben ganzzahligen Wert gerundeten Koordinaten werden als die Kandidaten-x-Koordinaten der mehreren Kandidaten-Mittelpunkte (Kandidaten-Mittelpunkte-Gruppe in der ersten Abtastrichtung) im RAM gespeichert. Ferner kann davon ausgegangen werden, dass der Ort mit der höchsten Verteilung von Kandidaten-Mitte-Koordinaten in der Richtung senkrecht zur waagerechten Abtastzeile mit größter Wahrscheinlichkeit der Ort ist, an welchem die Kandidaten-Mitte-Koordinaten in dieser senkrechten Richtung liegen.
  • Das Abtasten wird dann in der waagerechten Richtung oberhalb und unterhalb der Kandidaten-Mittellinie wiederholt, wobei der Abstand der Abtastzeilen von der Mittellinie allmählich zunimmt, und die abgetasteten Daten werden im Ortungsmuster-Informationen-Register 211 im VRAM 106 gespeichert.
  • Dann erfolgt das Abtasten in einer zweiten, sich von der ersten Abtastrichtung unterscheidenden Abtastrichtung und wird mit dem in den Abtastzeilen in dieser zweiten Abtastrichtung erkannten Farbenmuster-Verhältnis der gleiche Musterabgleich vorgenommen, um die Abtastzeilen in der Nähe des Mittelpunkts des Ortungsmusters zu finden und den Mittelpunkt aus den identifizierten Abtastzeilen zu berechnen. Dieser Vorgang wird mehrere Male wiederholt, um mehrere Abtastzeilen zu finden und die mehreren Mittelpunkte aus den Abtastzeilen zu berechnen (S402). Hier ist zu beachten, dass im folgenden eine in dieser zweiten Abtastrichtung abgetastete Abtastzeile in der Nähe der Mitte des Ortungsmusters als eine Kandidaten-Mittellinie in der zweiten Abtastrichtung, ein Mittelpunkt als ein Kandidaten-Mittelpunkt in der zweiten Abtastrichtung und ein Satz aus mehreren Mittelpunkten als eine Kandidaten-Mittelpunkte-Gruppe in der zweiten Abtastrichtung bezeichnet wird. Daher werden mehrere Kandidaten-Mittellinien in der zweiten Abtastrichtung gefunden und wird eine mehrere Kandidaten-Mittelpunkte in der zweiten Abtastrichtung enthaltende Kandidaten-Mittelpunkte-Gruppe in der zweiten Abtastrichtung berechnet.
  • Das Abtasten erfolgt in einer zweiten Abtastrichtung (senkrechten Richtung), die gegenüber der waagerechten Abtastrichtung um 90 Grad verdreht ist, und es wird der gleiche Musterabgleich wie in der waagerechten Richtung durchgeführt.
  • Die erste Abtastzeile in der senkrechten Richtung ist eine Gerade senkrecht zur vorher in der ersten Abtastrichtung gewonnenen Kandidaten-Mittellinie, welche durch den berechneten Mittelpunkt dieser waagerechten Kandidaten-Mittellinie verläuft. Die Geschwindigkeit, mit welcher die Mitte-Koordinate gewonnen werden kann, lässt sich steigern, indem die erste Abtastung in der senkrechten Richtung durch die im obigen waagerechten Abtastprozess gewonnenen Kandidaten-Mitte-Koordinaten gelegt wird, statt mit Abtasten durch den Mittelteil des gesamten Bilds zu beginnen, weil die Wahrscheinlichkeit am höchsten ist, dass die tatsächlichen Mitte-Koordinaten des Ortungsmusters auf diesem waagerechten Mittellinien-Kandidaten liegen.
  • Wie beim waagerechten Abtasten wird die senkrechte Abtastzeile mit einem Farbenmuster-Verhältnis, welches am besten mit der Schablone wie in 26 (b) gezeigt übereinstimmt, als die Mitte in der senkrechten Richtung definiert. Wo sich die Mittelpunkt-Koordinaten in der waagerechten und senkrechten Richtung schneiden, befindet sich die Mitte des Ortungsmusters. Wie beim waagerechten Abtasten wird der Punkt in der Mitte zwischen Punkten auf dem Außenrand des äußersten weißen Kreises des Ortungsmusters für die Mitte-Koordinaten in der senkrechten Richtung verwendet. Danach wird die Stelle in der waagerechten Richtung mit der höchsten Besetzung von beim Abtasten senkrechter Geraden gewonnenen Kandidaten-Mitte-Koordinaten (Kandidaten-Mittelpunkte-Gruppe in der zweiten Abtastrichtung) ermittelt.
  • Das Abtasten in der senkrechten Richtung wird dann wiederholt, wobei jede Abtastzeile allmählich im Abstand abwechselnd nach rechts und nach links von der senkrechten Mittellinie zunimmt, und die resultierenden Datenwerte werden im Ortungsmuster-Informationen-Register 211 im VRAM 106 gespeichert (siehe 28).
  • Es liegt auf der Hand, dass beim Ausführen des waagerechten und des senkrechten Abtastvorgangs jeder der beiden als erster ausgeführt werden kann.
  • Schließlich wird, beruhend auf den vorher berechneten Kandidaten-Mittelpunkte-Gruppen in der ersten und in der zweiten Abtastrichtung, der Mittelpunkt des Ortungsmusters berechnet (S403).
  • 29 veranschaulicht die Berechnung des Mittelpunkt des Ortungsmusters.
  • Wie in 29 gezeigt, bildet der Schnittpunkt der aus der Kandidaten-Mittelpunkte-Gruppe in der ersten Abtastrichtung berechneten Geraden senkrecht zur ersten Abtastrichtung mit der aus der Kandidaten-Mittelpunkte-Gruppe in der zweiten Abtastrichtung berechneten Geraden senkrecht zur zweiten Abtastrichtung den Mittelpunkt des Ortungsmusters. Das heißt, der Ortungsmuster- Mittelpunkt wird aus dem Schnittpunkt der senkrechten Geraden, wo der durch Abtasten in der waagerechten Richtung gewonnene Mittelpunkt am wahrscheinlichsten liegt, mit der senkrechten Geraden, wo der durch Abtasten in der senkrechten Richtung gewonnene Mittelpunkt am wahrscheinlichsten liegt, gewonnen.
  • Außerdem ist zu beachten, dass nach Abtasten und Musterabgleich in einer ersten Abtastrichtung (waagerechten Richtung in dieser Ausführungsform) die Abtastrichtung zum Abtasten und für den Musterabgleich in der zweiten Abtastrichtung (senkrechten Richtung in dieser Ausführungsform) um 90 Grad gedreht wird. Die Erfindung ist nicht auf eine erste und eine zweite Abtastrichtung, welche senkrecht zueinander liegen, beschränkt; der Winkel zwischen der ersten und der zweiten Abtastrichtung kann jeder beliebige Winkel sein, solange sich die zwei Abtastrichtungen schneiden. Dennoch sind die erste Richtung und die zweite Richtung vorzugsweise orthogonal zueinander, wenn nach Abtasten in der waagerechten Richtung eine senkrechte Zeile durch den Punkt gelegt wird, an welchem die Wahrscheinlichkeit, dass die Mitte-Koordinaten in der senkrechten Richtung liegen, am größten ist, wie oben beschrieben. Darüber hinaus erleichtert es, wenn die abgetasteten Datenwerte als zweidimensionale Daten in einem x-y-Koordinatensystem im VRAM gespeichert werden, das Lesen und Verarbeiten der Daten, wenn die erste und die zweite Richtung senkrecht zueinander liegen.
  • 5 ist ein Ablaufdiagramm des Prozesses zum Auffinden der Kandidaten-Mittelpunkte-Gruppe in der ersten Abtastrichtung im Ortungsmuster-Suchprozess.
  • Zunächst wird eine Suche nach dem Ortungsmuster in der waagerechten Richtung durchgeführt und die Suchrichtung auf "beidseitig" ("beide Richtungen") gesetzt (S501). Es ist zu beachten, dass "beidseitig", wie hier verwendet, oberhalb und unterhalb der aktuellen Abtastzeile in der waagerechten Richtung bedeutet. Dann beginnt die Suche mit einer Zeile im Mittelteil des erfassten Bilds (erfasste Bildhöhe/2) (S502). Der Grund hierfür ist, dass das Symbol im wesentlichen im Mittelteil eines das Symbol enthaltenden Bilds liegt und das Ortungsmuster eines MaxiCode- oder Aztec-Codesymbols im Mittelteil des Symbols liegt.
  • Dann wird eine Zeile von Daten in der waagerechten Richtung erfasst (S503) und ein Farbenmuster-Verhältnis (siehe 27 (b)) des Schwarz-Weiß-Musters erzeugt (S504). Dann wird das Farbenmuster-Verhältnis mit der oben beschriebenen Ortungsmuster-Schablone verglichen, um eine Übereinstimmung zwischen diesen zu erkennen (S505).
  • Wenn das Farbenmuster-Verhältnis und die Schablone nicht übereinstimmen (S505 ergibt Nein) und das Abtasten dieser waagerechten Zeile nicht abgeschlossen wurde (S507 ergibt Nein), ist bekannt, dass das Farbenmuster-Verhältnis für andere Bilddaten als das Ortungsmuster erzeugt wurde. Das Farbenmuster-Verhältnis wird deshalb neu erzeugt (Schritte S508 und S504) und erneut mit der Ortungsmuster-Schablone verglichen (S505).
  • Wenn das Farbenmuster-Verhältnis und die Schablone übereinstimmen (S505 ergibt Ja), werden die x-y-Koordinaten gewonnen und für den Punkt in der Mitte zwischen den Innenrändern des äußersten schwarzen Kreises (den Punkt in der Mitte zwischen B und K in 26 (a)) als die Koordinaten für den Mittelpunkt des zentralen Kreises des Ortungsmusters gespeichert (S506).
  • Wenn das Abtasten einer Zeile von Daten abgeschlossen ist (S507 ergibt Ja), wird die Anzahl von Kandidaten-Mittelpunkt-Koordinaten für diese Zeile ermittelt. Wenn eine Übereinstimmung mit der Schablone vorliegt, beträgt die Anzahl von Koordinatenpunkten eins (S509 ergibt Nein), und der Ablauf wird mit S510 fortgesetzt.
  • In Schritt S510 wird die Suchzeile um eine Zeile nach oben verschoben (entsprechend einer Zeile des CCD-Sensors) (auf Zeile 2 in 28), und die Schritte S503 bis S509 werden wiederholt. Wenn es infolge des Verschiebens um eine Zeile nach oben ein Paar von Mittelpunkt-Koordinaten gibt (S509 ergibt Nein) und der Ablauf mit Schritt S510 fortgesetzt wird, wird die Suchzeile um zwei Zeilen nach unten verschoben (entsprechend zwei Zeilen des CCD-Sensors) (auf Zeile 3 in 28), weil die Suchrichtung in S501 auf "beidseitig" gesetzt wird, und werden die Schritte S503 bis S509 wiederholt.
  • Wenn infolge des Verschiebens um zwei Zeilen nach unten Mittelpunkt-Koordinaten nicht gefunden werden (S509 ergibt Ja), wird der Ablauf mit S511 fortgesetzt, worin ermittelt wird, ob die Gesamtanzahl von beim Abtasten der Zeilen 1 bis 3 gewonnenen Kandidatenpunkten eins oder größer ist. Wenn es einen oder mehrere Kandidatenpunkte gibt (S511 ergibt Ja), setzt sich der Ablauf von S512 zu S513 fort und wird die Suchrichtung auf "oberhalb" gesetzt. Es ist zu beachten, dass die Suchrichtung hier auf "oberhalb" gesetzt wird, um unnötige Suchen zu verhindern, weil das Ortungsmuster durch Abtasten weiter unten nicht gefunden werden kann. Weil beim erstmaligen Absuchen der unterhalb liegenden Zeile (Zeile 3 in 28) ein Mittelpunkt nicht gefunden wurde, kann das Suchen auf eine oberhalb liegende Zeile gesetzt werden, indem ein Merker gesetzt wird, welcher besagt, dass es unterhalb keine Mittelpunkte gibt, wodurch die Abtastzeile des nächsten Abtastvorgangs auf die Zeile oberhalb von Zeile 2 in 28, das heißt, auf Zeile 4 in 28 geändert wird. In anderen Worten, es werden nur Zeilen oberhalb der obersten Zeile, für welche das Abtasten abgeschlossen wurde, abgetastet.
  • In diesem Fall werden, nachdem die Suchrichtung in Schritt S513 auf "oberhalb" gesetzt wurde, S503 bis S509 erneut wiederholt. Weil in Zeile 4 in 28 ein Mittelpunkt nicht gefunden wird, ergibt S509 Ja, ergibt S511 Ja und ergibt S512 Nein. Das Abtasten in der waagerechten Richtung ist daher abgeschlossen, und der Ablauf wird mit S514 fortgesetzt.
  • Wenn nach Abschluss des Abtastens einer Zeile eine Übereinstimmung mit der Schablone nicht gefunden wird (S505 ergibt Nein, S507 Ja und S509 Nein), wird der Ablauf mit S510 fortgesetzt, wird die Abtastzeile um eine Zeile nach oben oder nach unten verschoben und verzweigt der Ablauf zurück zu S503.
  • Ferner wird beim ersten Mal, dass nach Abtasten einer in der Richtung "oberhalb" liegenden Zeile ein Mittelpunkt nicht gefunden wird, während das Abtasten auf "beidseitig" gesetzt ist, ein Merker gesetzt, welcher besagt, dass es oberhalb keinen Mittelpunkt gibt. Infolgedessen erfolgen nachfolgende Abtastvorgänge nur in Zeilen unterhalb der untersten Zeile, für welche das Abtasten abgeschlossen wurde.
  • In den Schritten S514 und S515 werden die ganzzahligen Teile der x-Koordinaten der Kandidatenpunkte extrahiert und werden die Kandidatenpunkte so gruppiert, dass in jeder Gruppe alle x-Koordinaten den gleichen ganzzahligen Wert haben. Die Anzahl von Kandidatenpunkten in jeder Gruppe wird gezählt, und die Kandidatenpunkte der Gruppe mit dem höchsten gezählten Wert (der am stärksten besetzten Gruppe) werden als die endgültige Kandidaten-Mittelpunkte-Gruppe in der ersten Abtastrichtung ausgewählt (unter Verwendung der jeweiligen x-Koordinatenwerte bis zur zweiten Dezimalstelle und der mit jedem ausgewählten Kandidatenpunkt verknüpften y-Koordinate, ebenfalls bis zur zweiten Dezimalstelle) (S516).
  • Der Ablauf wird dann mit dem Suchen in der zweiten Abtastrichtung fortgesetzt. Dies wird gleich nachfolgend anhand von 6, einem Ablaufdiagramm des Prozesses zum Auffinden der Kandidaten-Mittelpunkte-Gruppe in der zweiten Abtastrichtung im Ortungsmuster-Suchprozess beschrieben.
  • Ein Prozess, welcher im wesentlichen dem Prozess für waagerechte Suchen gleicht, wird dann im Anschluss an S516 in 5 ausgeführt. Dieser Prozess ist mit dem waagerechten Suchprozess identisch, abgesehen davon, dass eine Zeile im in 5 gezeigten waagerechten Prozess einer Spalte entspricht; "oberhalb" und "unterhalb" der Suchrichtung in 5 entsprechen "links" beziehungsweise "rechts" in 6; und die x-Koordinate in 5 entspricht der y-Koordinate in 6. Die Prozesse sind im übrigen gleich, so dass auf eine weitere Beschreibung desselben hier verzichtet wird.
  • Andererseits, während S502 in 5 sich auf (Bildhöhe/2) bezieht, unterscheidet sich S602 in 6 dadurch, dass er den Wert der x-Koordinate des in der waagerechten Suche erhaltenen endgültigen Kandidaten verwendet. Der Wert der x-Koordinate des in der waagerechten Suche (Abtastung) erhaltenen endgültigen Kandidaten wird hier verwendet, weil mit diesem Wert der Wert der x-Koordinate des Mittelpunkts bereits im wesentlichen bekannt ist und die Verarbeitung durch Suchen in der senkrechten Richtung ab dort schneller abgeschlossen werden kann.
  • In den Schritten S614 bis S616 in 6 wird die am stärksten besetzte Gruppe von Kandidatenpunkten mit der gleichen ganzzahligen y-Koordinate auf eine zu der im Zusammenhang mit 5 erklärten Weise analoge Weise aus den Kandidatenpunkten ausgewählt. Die y-Koordinatenwerte (bis zur zweiten Dezimalstelle) der ausgewählten Gruppe und die entsprechenden x-Koordinatenwerte (bis zur zweiten Dezimalstelle) werden als die Koordinaten der endgültigen Kandidaten-Mittelpunkte-Gruppe in der zweiten Abtastrichtung gespeichert.
  • 7 ist ein Ablaufdiagramm des Prozesses zur Berechnung des Ortungsmuster-Mittelpunkts im Ortungsmuster-Suchprozess.
  • In S701 in 7 wird eine y-Koordinate aus denjenigen, welche in der in 5 gezeigten waagerechten Suche gespeichert wurden, deren ganzzahliger Teil mit demjenigen der in der in 6 gezeigten senkrechten Suche erhaltenen am stärksten besetzten Gruppe übereinstimmt, gewonnen und wird die x-Koordinate (bis zur zweiten Dezimalstelle) für diese y-Koordinate als die x-Koordinate (bis zur zweiten Dezimalstelle) des Mittelpunkts verwendet.
  • Ferner wird in S704 eine x-Koordinate aus denjenigen, welche in der in 6 gezeigten senkrechten Suche gespeichert wurden, deren ganzzahliger Teil mit demjenigen der in der in 5 gezeigten waagerechten Suche erhaltenen am stärksten besetzten Gruppe übereinstimmt, gewonnen und wird die y-Koordinate (bis zur zweiten Dezimalstelle) für diese x-Koordinate als die y-Koordinate (bis zur zweiten Dezimalstelle) des Mittelpunkts verwendet.
  • Wenn diese Koordinatenwerte in S702 und S705 nicht ausgewählt werden können, wird entschieden, dass die Mitte-Koordinaten nicht gefunden werden konnten.
  • Eine alternative Ausführungsform des Ortungsmuster-Suchschritts wird gleich nachfolgend beschrieben.
  • Ob das durch Abtasten des Ortungsmusters in der waagerechten Richtung gewonnene Schwarz-Weiß-Muster und das Schablonenmuster die Reihenfolge Schwarz-Weiß-Schwarz-Weiß-Schwarz-Weiß-Schwarz-Weiß-Schwarz-Weiß-Schwarz aufweisen, wird durch einfaches Vergleichen der Abfolge, in welcher Schwarz und Weiß erkannt werden, ermittelt (es ist nicht erforderlich, Verhältnisse zu vergleichen). Folglich ist, wenn das abgetastete Schwarz-Weiß-Muster mit der Schablone übereinstimmt, davon auszugehen, dass diese Abtastzeile im wesentlichen den Mittelteil des Ortungsmusters (26 (a)) durchquert. Dann werden die Schnittpunkte (Punkte B und K in 26 (a)) zwischen dieser Abtastzeile und dem den äußersten Teil des Ortungsmusters (den äußersten Kreis der drei schwarzen Kreise im MaxiCode-Symbol) bildenden Element gewonnen und wird der Punkt in der Mitte dazwischen als ein Kandidaten-Mittelpunkt verwendet.
  • Wie oben erwähnt, wird auf den Innenrand des äußersten schwarzen Kreises Bezug genommen, um aus dem Vorhandensein eines das Ortungsmuster berührenden schwarzen Pixels resultierende Interpretationsfehler zu vermeiden.
  • Dann wird die Abtastung parallel zur vorherigen Abtastzeile verschoben und wird der Punkt in der Mitte zwischen den Punkten B und K zum Mittelpunkt gemacht. Dies wird mehrere Male wiederholt.
  • Dann wird eine durch die mehreren durch Abtasten in der waagerechten Richtung gewonnenen Mittelpunkte verlaufende Gerade als die zweite Richtung (senkrechte Richtung) abgetastet. Wie beim waagerechten Abtasten wird der Punkt in der Mitte zwischen den Punkten B und K zum Mittelpunkt gemacht und wird dies mehrere Male wiederholt.
  • Die Koordinaten des Schnittpunkts einer die mehreren in der waagerechten Richtung (ersten Abtastrichtung) gewonnenen Mittelpunkte verbindenden Geraden und einer die mehreren in der senkrechten Richtung (zweiten Abtastrichtung) gewonnenen Mittelpunkte verbindenden Geraden können dann als die Mitte-Koordinaten (der Schnittpunkt der gestrichelten Geraden in dem vergrößerten Ausschnitt in 33) gewonnen werden.
  • Mittels dieser Ausführungsform ist es möglich, die Mitte-Koordinaten des zentralen Kreises des Ortungsmusters genau zu erhalten, auch wenn das Ortungsmuster-Bild unter einem Winkel erfasst wird oder wenn das Ortungsmuster kein Kreis, sondern eine Ellipse ist. In diesem Fall wird mindestens eine der beiden Richtungen, d.h. die erste oder die zweite Richtung, vorzugsweise auf die lange oder die kurze Achse des Ovals gelegt. (Siehe 34.) Eine weitere alternative Ausführungsform der oben beschriebenen Ortungsmuster-Suchschritte wird gleich nachfolgend anhand von 8, 26, 27, 28, 30 und 31 beschrieben.
  • 8 ist ein Ablaufdiagramm eines Ortungsmuster-Suchprozesses im in 3 gezeigten MaxiCode-Symbol-Decodierprozess gemäß der vorliegenden Erfindung.
  • Das MaxiCode-Symbol-Bild wird in einer ersten Abtastrichtung abgetastet, um durch Vergleichen des längs einer speziellen Abtastzeile erkannten Musters (der unten erwähnten "Farbenmuster-Beziehungsgleichung") mit einem Referenzmuster (der unten erwähnten "Ortungsmuster-Schablone") eine nahe dem Mittelpunkt des Ortungsmusters verlaufende Abtastzeile zu finden. Der Mittelpunkt wird dann aus der gefundenen Abtastzeile berechnet.
  • Das Bild wird dann von diesem Mittelpunkt aus in einer zweiten Abtastrichtung, welche von der ersten Abtastrichtung verschieden ist, abgetastet. Ein Musterabgleich zwischen der Ortungsmuster-Schablone und dem in dieser zweiten (senkrechten) Abtastrichtung erkannten Farbenmuster-Verhältnis dient dazu, einen Kandidaten-Mittelpunkt für das Ortungsmuster aus den Abtastzeilen zu berechnen (S801). Es ist zu beachten, dass die Abtastzeile in der Nähe der beim Abtasten in der ersten Abtastrichtung gefundenen Mitte des Ortungsmusters im folgenden als die Mittellinie der ersten Abtastrichtung bezeichnet wird, der Mittelpunkt derselben als der Mittelpunkt in der ersten Abtastrichtung bezeichnet wird und die Abtastzeile in der Nähe der beim Abtasten in der zweiten Abtastrichtung gefundenen Mitte des Ortungsmusters im folgenden als die Mittellinie der zweiten Abtastrichtung bezeichnet wird. Ferner wird im folgenden davon ausgegangen, dass die erste Abtastrichtung waagerecht durch das abgetastete Bild verläuft und dass die zweite Abtastrichtung senkrecht durch das abgetastete Bild verläuft.
  • 26 veranschaulicht eine Ortungsmuster-Schablone. 26 (a) zeigt ein Farbenmuster auf einer durch den Mittelpunkt des Ortungsmusters verlaufenden Gerade, und 26 (b) zeigt die Ortungsmuster-Schablone.
  • Wie in 26 (a) gezeigt, ist das Ergebnis des Absuchens der in der durch den Pfeil angegebenen Richtung durch den Ortungsmuster-Mittelpunkt verlaufenden Geraden 2601 ein Impulswellendiagramm, in welchem ein "High"-Impuls ein weißes Datenmodul und ein "Low"-Impuls ein schwarzes Datenmodul anzeigt. Wie in 26 (b) gezeigt, ist, wenn der Abstand vom Außenrand des ersten schwarzen Kreises (durch A gekennzeichnet) zum Außenrand des nächsten schwarzen Kreises (bei C) 1 ist, der Abstand vom Außenrand des ersten weißen Kreises (B) zum gleichen Rand des nächsten weißen Kreises (D) ebenfalls 1. Ferner sind der Abstand vom Außenrand (E) des den weißen zentralen Kreis direkt einschließenden schwarzen Kreises zum Innenrand (G) desselben schwarzen Kreises auf der anderen Seite der weißen Mitte und der Abstand vom ersten Rand (F) der weißen Mitte zum Innenrand des nächsten weißen Rings (H) beide 1,26.
  • Deshalb gilt, wenn das Zielscheiben-Muster wie oben beschrieben von links nach rechts (A nach L) durch die Mitte abgetastet wird und das Verhältnis der Abstände Schwarz-Schwarz (A-C), Weiß-Weiß (B-D), Schwarz-Schwarz (C-E), ... Weiß-Weiß (J-L) angesammelt wird, die Farbenmuster-Beziehung
    AC:BD:CE:DF:EG:FH:GI:HJ:IK:JL = 1:1:1:1:1,26:1,26:1:1:1:1
    wobei zum Beispiel AC den Abstand von Punkt A zu Punkt C angibt.
  • Diese die Beziehung des Farbenmusters eines normalen Ortungsmusters definierende Gleichung wird im Decodierungs-Datenspeicher 220 im ROM 107 als eine Ortungsmuster-Schablone gespeichert.
  • Ferner ist, wenn die Mitte von rechts nach links (L nach A) abgetastet wird und die Rand-zu-Rand-Abstände wieder als ein Verhältnis in der Reihenfolge Schwarz-Schwarz (L-J), Weiß-Weiß (K-I), Schwarz-Schwarz (J-H), ... Weiß-Weiß (C-A) ausgedrückt werden, das Verhältnis das gleiche, das heißt
    LJ:KI:JH:IG:HF:GE:FD:EC:BD:CA = 1:1:1:1:1,26:1,26:1:1:1:1.
  • Wie in 27 (a) gezeigt, besteht daher der erste Schritt darin, den Mittelteil des gesamten Bilds 2701 des das MaxiCode-Symbol enthaltenden abgetasteten Bilds (in einer ersten Abtastrichtung) waagerecht abzutasten, um, beruhend auf dem Farbenmuster der Abtastzeile 2702, eine Impulswelle (siehe 27 (b)) zu erzeugen und die Farbenmuster-Beziehungsgleichung (das Farbenmuster-Verhältnis) längs dieser Abtastzeile zu berechnen. Das erkannte Verhältnis wird dann durch Musterabgleich mit der im Decodierungs-Datenspeicher 220 im ROM 107 gespeicherten MaxiCode-Ortungsmuster-Schablone (26 (b)) verglichen. Wenn das erkannte Verhältnis mit der Schablone übereinstimmt, wird diese Abtastzeile als eine Kandidaten-Mittellinie in der ersten Abtastrichtung (Mittellinie der ersten Abtastrichtung) definiert. Es ist zu beachten, dass diese Abtastzeile hier als eine Kandidaten-Mittellinie definiert wird, weil es andere Schwarz-Weiß-Daten geben kann, welche zufällig in den gleichen Intervallen wie die Schablone angeordnet sind.
  • Wenn, wie in 27 (b) gezeigt, die Anzahl von Vergleichspunkten im Farbenmuster-Verhältnis und die Anzahl von Vergleichspunkten in der Ortungsmuster-Schablone nicht gleich sind, steht fest, dass die Gerade nicht durch den Mittelpunkt 2703 des zentralen Kreises des Ortungsmusters verläuft. In diesem Fall wird das Bild, wie in 28 gezeigt, erneut abgetastet, wobei die Mittellinie 1 des gesamten Bilds 2801 in aufeinanderfolgenden Abtastungen oberhalb und unterhalb mit Abtastzeilen 2, 3 und so weiter umschlossen wird. Der Musterabgleich zwischen dem erkannten Farbenmuster-Verhältnis und der Ortungsmuster-Schablone wird nach jeder Abtastung wiederholt, um die mit einem bestimmten Muster übereinstimmende Abtastzeile wie oben beschrieben zu finden, und die als am besten mit der Schablone übereinstimmend ermittelte Abtastzeile wird als die Mittellinie in der waagerechten Richtung definiert.
  • Der Punkt in der Mitte zwischen dem Schnittpunkt dieser Mittellinie mit dem Innenrand des äußersten schwarzen Kreises (d.h. dem B in 26 (b) entsprechenden Punkt) und dem Schnittpunkt dieser Mittellinie mit dem Innenrand des äußersten schwarzen Kreises auf der gegenüberliegenden Seite (d.h. dem K in 26 (b) entsprechenden Punkt), das heißt zwischen zwei Punkten auf dem Außenrand des äußersten weißen Kreises des Ortungsmusters, wird dann gefunden und als ein Kandidaten-Mittelpunkt (Mittelpunkt in der ersten Abtastrichtung) definiert.
  • Es ist zu beachten, dass der Punkt in der Mitte zwischen zwei Punkten auf dem Außenrand des äußersten weißen Kreises zur Gewinnung der Mitte-Koordinaten verwendet wird, statt den Punkt in der Mitte zwischen zwei Punkten auf dem Außenrand des äußersten schwarzen Kreises des Ortungsmusters zu verwenden, weil schwarze Pixeldaten den Außenrand des äußersten schwarzen Kreises des Ortungsmusters berühren können und die Lokalisierung dieses äußersten schwarzen Kreises daher fehlinterpretiert werden könnte.
  • 30 zeigt ein in einer zweiten Abtastrichtung abgetastetes Ortungsmuster. Es wird eine Abtastzeile nahe dem Mittelpunkt des Ortungsmusters gefunden und, durch Abtasten vom Mittelpunkt der ersten Abtastrichtung 3001 aus in einer zweiten Abtastrichtung, welche von der ersten Abtastrichtung verschieden ist, und Vergleichen des Farbenmuster-Verhältnisses längs dieser zweiten Abtastzeile mit der Ortungsmuster-Schablone, aus der gefundenen Abtastzeile ein Kandidaten-Mittelpunkt des Ortungsmusters berechnet.
  • Das Abtasten erfolgt in einer zweiten Abtastrichtung (senkrechten Richtung), die gegenüber der waagerechten Abtastrichtung um 90 Grad verdreht ist, und es wird der gleiche Musterabgleich wie in der waagerechten Richtung durchgeführt. Um in der senkrechten Richtung abzutasten, wird eine Gerade (die vorher gewonnene senkrechte Gerade), welche orthogonal zur waagerechten Mittellinie liegt und durch den vorher berechneten Mittelpunkt der Mittellinie verläuft, abgetastet. Es ist zu beachten, dass, statt in der senkrechten Richtung die gesamte Länge der durch den beim waagerechten Abtasten gewonnenen Mittelpunkt verlaufenden Geraden abzutasten, ein Farbenmuster-Verhältnis für nur eine einzige Ortungsmuster-Schablone berechnet wird, so dass der Mittelpunkt in der ersten Abtastrichtung in der Mitte derselben liegt, und dieses Farbenmuster-Verhältnis dann mit der Ortungsmuster-Schablone verglichen wird.
  • Die Geschwindigkeit, mit welcher die tatsächlichen Mitte-Koordinaten des Ortungsmusters gewonnen werden können, lässt sich somit steigern, weil der oben berechnete Mittelpunkt der waagerechten Abtastzeile die höchste Wahrscheinlichkeit besitzt, der tatsächliche Mittelpunkt des Ortungsmusters zu sein.
  • Wie beim waagerechten Abtasten wird, wenn das Farbenmuster-Verhältnis mit der in 26 (b) gezeigten Ortungsmuster-Schablone übereinstimmt, der Punkt in der Mitte zwischen in der senkrechten Richtung abgetasteten Punkten auf dem Außenrand des äußersten weißen Kreises als der Kandidaten-Mittelpunkt des Ortungsmusters definiert. Wenn das Farbenmuster-Verhältnis nicht mit der Ortungsmuster-Schablone in 26 (b) übereinstimmt, wird das waagerechte Abtasten längs einer senkrecht von der waagerechten Mittellinie getrennten Abtastzeile wiederholt und werden die erfassten Daten im Ortungsmuster-Informationen-Register 211 im VRAM 106 gespeichert (siehe 28).
  • Für einen Durchschnittsfachmann ist es offensichtlich, dass die Reihenfolge, in welcher der senkrechte und der waagerechte Abtastvorgang stattfinden, ohne Bedeutung ist und dass jede der beiden Richtungen als erste abgetastet werden kann.
  • Schließlich wird der Mittelpunkt des Ortungsmusters, beruhend auf dem berechneten Kandidaten-Mittelpunkt des Ortungsmusters, berechnet (S802).
  • 31 veranschaulicht das Berechnen des Ortungsmuster-Mittelpunkts.
  • Wie in 31 gezeigt, wird das Ortungsmuster in einer ersten Abtastrichtung 3102 vom Ortungsmuster-Kandidaten-Mittelpunkt 3101 aus nach rechts und links von neuem abgetastet und werden die Punkte, an welchen das Farbenmuster von Weiß zu Schwarz wechselt, mit P1 und P2 bezeichnet. Dann wird das Ortungsmuster in einer zweiten Abtastrichtung 3103 vom Ortungsmuster-Kandidaten-Mittelpunkt 3101 aus nach oben und unten von neuem abgetastet und werden die Punkte, an welchen das Farbenmuster von Weiß zu Schwarz wechselt, mit P3 und P4 bezeichnet. Dann wird der Schwerpunkt 3104 des von den Spitzen P1, P2, P3 und P4 gebildeten Vierecks berechnet, um die Mitte des Ortungsmusters zu erhalten. Während der Kandidaten-Mittelpunkt des Ortungsmusters als der tatsächliche Mittelpunkt des Ortungsmusters verwendet werden kann, bewirkt Verzerrung häufig eine Verschiebung des Mittelpunkts. Deshalb ist es vorzuziehen, den tatsächlichen Mittelpunkt des Ortungsmusters neu zu berechnen.
  • Außerdem ist zu beachten, dass nach Abtasten und Musterabgleich in einer ersten Abtastrichtung (waagerechten Richtung in dieser Ausführungsform) die Abtastrichtung zum Abtasten und für den Musterabgleich in der zweiten Abtastrichtung (senkrechten Richtung in dieser Ausführungsform) um 90 Grad gedreht wird. Die Erfindung ist jedoch nicht auf zueinander senkrechte Richtungen beschränkt, da der Winkel zwischen der ersten und der zweiten Abtastrichtung jeder beliebige Winkel sein kann, solange sich die zwei Abtastrichtungen schneiden. Darüber hinaus erleichtert es, wenn die abgetasteten Datenwerte als zweidimensionale Daten in einem x-y-Koordinatensystem im VRAM gespeichert werden, das Lesen und Verarbeiten der Daten, wenn die erste und die zweite Richtung senkrecht zueinander liegen.
  • 9 ist ein Ablaufdiagramm des Prozesses zum Auffinden der Kandidaten-Mittelpunkte-Gruppe im Ortungsmuster-Suchprozess.
  • Die Suche beginnt mit einer Zeile im Mittelteil des Bilds (erfasste Bildhöhe/2) (S901). Der Grund hierfür ist, dass das Symbol im wesentlichen im Mittelteil eines das Symbol enthaltenden Bilds liegt und das Ortungsmuster eines MaxiCode- oder Aztec-Codesymbols im Mittelteil des Symbols liegt.
  • Dann wird eine Zeile von Daten in der waagerechten Richtung erfasst (S902) und ein Farbenmuster-Verhältnis (siehe 27 (b)) des Schwarz-Weiß-Musters erzeugt (S903). Dann wird das Farbenmuster-Verhältnis mit der oben beschriebenen Ortungsmuster-Schablone verglichen, um eine Übereinstimmung zwischen diesen zu erkennen (S904).
  • Wenn das Farbenmuster-Verhältnis und die Schablone nicht übereinstimmen (S904 ergibt Nein) und das Abtasten dieser waagerechten Zeile nicht abgeschlossen wurde (S905 ergibt Nein), ist bekannt, dass das Farbenmuster-Verhältnis für andere Bilddaten als das Ortungsmuster erzeugt wurde. Das Farbenmuster-Verhältnis wird deshalb neu erzeugt (Schritte S907 und S903) und erneut mit der Ortungsmuster-Schablone verglichen (S904).
  • Wenn das Farbenmuster-Verhältnis und die Schablone übereinstimmen (S904 ergibt Ja), werden die x-y-Koordinaten für den Punkt in der Mitte zwischen den Innenrändern des äußersten schwarzen Kreises (den Punkt in der Mitte zwischen B und K in 26 (a)) als die Koordinaten für den Mittelpunkt des zentralen Kreises des Ortungsmusters gewonnen und gespeichert (S909).
  • Für den Vergleich mit einer Ortungsmuster-Schablone erforderliche Daten werden dann in einer Abtastzeile erfasst, welche senkrecht zur ersten Abtastrichtung liegt und durch den in Schritt S909 erhaltenen Mittelpunkt verläuft, wie in 30 gezeigt (S910). Das Farbenmuster-Verhältnis wird dann berechnet und kompiliert (S911) und mit der Ortungsmuster-Schablone verglichen (S912).
  • Wenn das Farbenmuster-Verhältnis und die Ortungsmuster-Schablone nicht übereinstimmen (S912 ergibt Nein), ist bekannt, dass der in Schritt S909 erhaltene Mittelpunkt nicht der Mittelpunkt des Ortungsmusters ist. Der Prozess verzweigt deshalb zurück, um eine andere Zeile in der waagerechten Richtung abzutasten (S912 bis S905).
  • Wenn das Farbenmuster-Verhältnis und die Ortungsmuster-Schablone übereinstimmen (S912 ergibt Ja), werden die x-y-Koordinaten für den Punkt in der Mitte zwischen den Innenrändern des äußersten schwarzen Kreises (den Punkt in der Mitte zwischen B und K in 26 (a)) als die Koordinaten für einen Kandidaten-Mittelpunkt des Ortungsmusters gewonnen und gespeichert (S913).
  • Wenn nach Abschluss des Abtastens einer Zeile keine Übereinstimmung mit der Schablone gefunden wird (S904 ergibt Nein, S912 Nein und S905 Ja), wird der Ablauf mit S906 fortgesetzt. Wenn das Abtasten aller Zeilen nicht abgeschlossen ist (S906 ergibt Nein), wird die Abtastzeile um eine Zeile über oder unter die vorherige Abtastzeile verschoben (S908) und verzweigt der Ablauf zurück zu S902. Wenn das Abtasten aller Zeilen abgeschlossen ist (S906 ergibt Ja), ist bekannt, dass der Ortungsmuster-Mittelpunkt nicht gefunden werden konnte, und endet der Prozess in einer fehlgeschlagenen Suche.
  • 10 ist ein Ablaufdiagramm eines Prozesses zum Suchen des Ortungsmuster-Mittelpunkts im Ortungsmuster-Suchprozess der vorliegenden Erfindung.
  • Zunächst werden in einer waagerechten Abtastrichtung links und rechts des wie in 9 gezeigt gewonnenen Ortungsmuster-Kandidaten-Mittelpunkts Daten erfasst (S1001) und werden die Punkte, an welchen die Pixelfarbe von Weiß zu Schwarz wechselt, mit P1 und P2 bezeichnet (S1002) (siehe 31). Dann werden durch Abtasten des Ortungsmusters in einer senkrechten Abtastrichtung vom wie in 9 gezeigt gewonnenen Ortungsmuster-Mittelpunkt aus Daten erfasst (S1003) und werden die Punkte, an welchen das Farbenmuster von Weiß zu Schwarz wechselt, mit P3 und P4 bezeichnet (S1004) (siehe 31).
  • Dann wird ein virtuelles Viereck aus den Spitzen P1, P2, P3 und P4 berechnet und werden die x,y-Koordinaten des Schwerpunkts dieses Vierecks berechnet (S1005). Der durch diese Berechnung gewonnene Schwerpunkt wird als Ortungsmuster-Mittelpunkt verwendet (S1006).
  • Diese Ausführungsform der vorliegenden Erfindung kann somit den Mittelpunkt des Ortungsmusters genau ermitteln, wenn das Ortungsmuster-Bild unter einem Winkel erfasst wird und das Ortungsmuster im abgetasteten Bild nicht mehr kreisförmig, sondern elliptisch ist. Dasselbe gilt, wenn das Ortungsmuster-Bild nicht unter einem Winkel erfasst wird, aber das Ortungsmuster im Codesymbol selbst elliptisch ist. Wenn das Bild des Ortungsmusters elliptisch ist, ist der im in 9 gezeigten Prozess gewonnene Kandidaten-Mittelpunkt 3201 häufig vom tatsächlichen Ortungsmuster-Mittelpunkt weg verschoben (siehe 32 (a)). Jedoch kann durch Ermitteln des Schwerpunkts 3202, wie in 10 gezeigt, der Ortungsmuster-Mittelpunkt genau lokalisiert werden (siehe 32 (b)).
  • Eine bevorzugte Ausführungsform des oben erwähnten Bildkorrekturschritts wird gleich nachfolgend anhand von 11, 36, 37 und 61 beschrieben.
  • 11 ist ein Ablaufdiagramm des in 3 als Schritt S303 gezeigten Bildkorrekturprozesses im MaxiCode-Symbol-Decodierprozess.
  • Wie oben beschrieben, sucht Schritt S302 des in 3 gezeigten MaxiCode-Symbol-Decodierprozesses nach dem Ortungsmuster und berechnet die Koordinaten für den Mittelpunkt des Ortungsmusters und Positionskoordinaten für die Farbgrenzen zwischen den weißen und den schwarzen Kreisen des Ortungsmusters als die Ortungsmuster-Forminformationen. Ferner genügt es, da alle Datenmodule durch Lokalisieren der Orientierungsmodule des MaxiCode-Symbols gefunden werden können, Bildkorrektur auf die Pixeldaten in dem Bereich, in welchem die Orientierungsmodule liegen, anzuwenden. Deshalb braucht die Neigungswinkel-Korrekturgleichung nur in dem Bildbereich zu gelten, in welchem die Orientierungsmodule des MaxiCode-Symbols liegen.
  • Ferner ist zu beachten, dass die Orientierungsmodule dem Ortungsmuster in einem MaxiCode-Symbol benachbart sind. Die Neigungswinkel-Korrekturgleichung für das Ortungsmuster kann daher auch auf die Orientierungsmodule angewendet werden.
  • Der Bildkorrekturprozess ermittelt daher, beruhend auf den Koordinaten des Ortungsmuster-Mittelpunkts und den Koordinatengruppen für die Übergangspunkte zwischen den schwarzen und den weißen Ringen des Ortungsmusters, ob Ringe des Ortungsmusters durch jeweilige Ellipsen angenähert werden können (S1101). Es ist zu beachten, dass die Ortungsmuster-Ringe in diesem Fall die Kreise des im abgetasteten Bild verzerrten normalen MaxiCode-Symbol-Ortungsmusters sind.
  • Wenn die Ortungsmuster-Ringe durch Ellipsen angenähert werden können (S1101 ergibt Ja), wird der Ablauf mit dem nächsten Schritt (S1103) fortgesetzt. In dieser bevorzugten Ausführungsform der Erfindung können die Ortungsmuster-Ringe durch Ellipsen angenähert werden, wenn zum Beispiel der Abstand zwischen dem Mittelpunkt C des abgetasteten Bilds und dem Mittelpunkt O des Ortungsmusters innerhalb eines definierten Bereichs liegt (siehe 35) (das heißt, wenn der Ortungsmuster-Mittelpunkt 0 in der Nähe des Mittelpunkts C des abgetasteten Bilds liegt) und wenn das Verhältnis zwischen dem Abstand zwischen Brennpunkt P und Mittelpunkt C und der Länge des Geradensegments AB, welches der Durchmesser des Ortungsmusters ist (= Länge der Stecke PC/Länge des Geradensegments AB) größer als ein oder gleich einem definierten Schwellenwert ist (das heißt, wenn der Radius des Ortungsmusters genügend kleiner als der Abstand zwischen Brennpunkt P und Mittelpunkt C ist).
  • Wenn die Ortungsmuster-Ringe nicht durch Ellipsen angenähert werden können (S1101 ergibt Nein), wird, beruhend auf den Mittelpunkt-Koordinaten des MaxiCode-Symbol-Ortungsmusters und den Koordinaten der Schwarz-Weiß-Grenzen im Ortungsmuster (S1102), eine Neigungswinkel-Korrekturgleichung berechnet und wird der Ablauf mit Schritt S1107 fortgesetzt.
  • Ferner ist zu beachten, dass eine Neigungswinkel-Korrekturtabelle, beruhend auf der Beziehung zwischen der Form des Ortungsmusters in einem wirklichen MaxiCode-Symbol und der Form des Ortungsmusters im abgetasteten Bild, direkt erzeugt werden kann, statt eine Neigungswinkel-Korrekturgleichung zu berechnen und dann Schritt S1107 auszuführen.
  • Nun wird die Beziehung zwischen den Kreisen in einem normalen Ortungsmuster und den Ellipsen des Ortungsmusters in einem abgetasteten Bild, wenn die Ortungsmuster-Ringe durch Ellipsen angenähert werden können, betrachtet.
  • 36 zeigt die Beziehung zwischen einem Kreis und einer Ellipse. Wenn ein Kreis im unter einem Winkel erfassten abgetasteten Bild zu einer Ellipse verzerrt ist wie in 36 gezeigt, ist Punkt P auf dem Kreis auf Punkt P' auf der Ellipse verschoben. Unter der Annahme, dass, wie in 36 gezeigt, die lange Achse der Ellipse auf der waagerechten Achse liegt, ist der Mittelpunkt Punkt 0, ist die lange Achse Geradensegment AC und ist die kurze Achse Geradensegment BD. Wenn Winkel AOP θ und Winkel AOP' θ' ist, lautet die Beziehung zwischen Winkel θ und Winkel θ' wie in der folgenden Neigungswinkel-Korrekturgleichung gezeigt, θ' = arctan(γ·tanθ)wobei γ das Verhältnis der Ellipse (= Länge des Geradensegments B0/Länge des Geradensegments A0) und "·" der Multiplikationsoperator ist.
  • Der beim Winkel θ auf einem Kreis liegende Punkt P wird so auf den Punkt P' beim Winkel θ' auf der Ellipse verschoben.
  • Dann wird, beruhend auf dieser Neigungswinkel-Korrekturgleichung, eine Neigungswinkel-Korrekturtabelle erzeugt. Das heißt, es wird eine Tabelle kompiliert, die θ-θ'-Umwandlungswerte enthält, das heißt, für jeden Inkrementalkorrekturwinkel α, welcher die Korrekturgenauigkeit bestimmt, erzeugte Werte für Umwandlungen zwischen Winkel θ und Winkel θ'.
  • Dies wird bewerkstelligt, indem zunächst die Winkelteilungen, beruhend auf dem Inkrementalkorrekturwinkel α, welcher die Korrekturgenauigkeit der Neigungswinkel-Korrekturtabelle bestimmt, gesetzt werden (S1103). Das heißt, die zum Korrigieren aller Winkel (360 Grad) verwendete Anzahl von Teilungen wird, beruhend auf Inkrementalkorrekturwinkel α zum Setzen der Winkelteilungen, berechnet. Es ist zu beachten, dass α ein ganzzahliger Teiler von 60 ist. Es ist bekannt, dass die Orientierungsmodule, welche die Orientierung des wirklichen MaxiCode-Symbols angeben, in 60-Grad-Abständen um den Mittelpunkt des MaxiCode-Symbols angeordnet sind. Die Winkelteilung teilt somit den Vollkreis jeweils in 60 Grad und teilt anschließend 60 Grad jeweils in Inkrementalkorrekturwinkel α. Das heißt, die Winkelteilung drückt Winkel θ mittels eines zweidimensionalen Datenfelds oder einer zweidimensionalen Matrix (i, j) aus, was in der folgenden Gleichung resultiert, wobei i eine Ganzzahl von 0 bis 5 und j eine Ganzzahl von 0 bis n ist. n = 60/α – 1 θ(i, j) = 60·i + α·j
  • Zum Beispiel wenn α = 1, das heißt wenn die Genauigkeit der θ-θ'-Umwandlungstabelle 1 Grad beträgt, wird Winkel θ(i, j) durch eine 6 × 60-Matrix ausgedrückt, wobei i = 0–5 und j = 0–59.
  • Dann wird ein Winkelversatz gesetzt (S1104), um eine Umwandlungstabelle von um einen Winkelversatz von Winkel θ weg verschobenen Werten zu erzeugen.
  • Wie oben erwähnt, haben die drei Orientierungsmodule, ein inneres Orientierungsmodul, ein äußeres Orientierungsmodul und ein mittleres Orientierungsmodul jeder Orientierungsmodul-Gruppe fast die gleiche Orientierung in einem MaxiCode-Symbol. Der Winkelversatz wird deshalb auf einen Winkel zwischen der Orientierung des inneren Orientierungsmoduls und des äußeren Orientierungsmoduls und der Orientierung des mittleren Orientierungsmoduls gesetzt.
  • 37 zeigt die Beziehung zwischen dem Winkel des inneren Orientierungsmoduls und des äußeren Orientierungsmoduls und dem Winkel des mittleren Orientierungsmoduls. 37 (a) zeigt die Orientierungsmodule in einem wirklichen MaxiCode-Symbol, und 37 (b) zeigt die Orientierungsmodule in einem abgetasteten Bild.
  • Wie in 37 (a) gezeigt, ist der Winkelversatz β durch die folgende Gleichung definiert. β = θ1 – θ2wobei Winkel θ1 der Winkel zwischen der waagerechten Achse und der Orientierung des inneren Orientierungsmoduls 3701 und des äußeren Orientierungsmoduls 3702 und Winkel θ2 der Winkel zwischen der waagerechten Achse und dem mittleren Orientierungsmodul 3703 ist.
  • Wie in 61 gezeigt, gelten die folgenden Gleichungen, wo Punkt 0 der Mittelpunkt des MaxiCode-Symbols ist, Punkt D der Punkt in der Mitte zwischen dem Mittelpunkt des inneren Orientierungsmoduls und dem Mittelpunkt des äußeren Orientierungsmoduls ist, Punkt A der Mittelpunkt des äußeren Orientierungsmoduls ist, Punkt C der Mittelpunkt des mittleren Orientierungsmoduls ist und W die Modulbreite (der Abstand zwischen benachbarte Modulmittelpunkten) ist. Länge des Geradensegments 0D = 6,5·W Länge des Geradensegments DC = Quadratwurzel von 3/2·W tanβ = Quadratwurzel von 3/(2·6)
  • Wie oben erwähnt, kann der Winkelversatz β dann ausgedrückt werden als β = arctan(Quadratwurzel von 3/(2·6)) ≈ 7,59
  • Wie in 37 (a) gezeigt, ist die Beziehung zwischen Winkel θ1(i, j) und Winkel θ2(i, j) durch die folgende Gleichung definiert: θ2(i, j) = θ1(i, j) – β.
  • Dann wird, beruhend auf den Winkelteilungen, mittels Ellipsenannäherung eine Neigungswinkel-Korrekturtabelle erzeugt (S1105).
  • Wie in 36 gezeigt, ist, wenn ein Kreis im unter einem Winkel erfassten abgetasteten Bild zu einer Ellipse verzerrt ist, Punkt P auf dem Kreis auf Punkt P' auf der Ellipse verschoben. Deshalb wird, wie in 37 (b) gezeigt, wenn Punkt P' der Mittelpunkt des inneren Orientierungsmoduls 3704 oder des äußeren Orientierungsmoduls 3705 ist, der Winkel θ1'(i, j) zwischen der waagerechten Achse und innerem Orientierungsmodul 3704 und äußerem Orientierungsmodul 3705 durch die folgende Neigungswinkel-Korrekturgleichung ermittelt: θ1'(i, j) = arctan(γ·tanθ1(i, j))wenn i = 0, 1 oder 2. θ1'(i, j) = θ1'(i – 3, j) + 180wenn i = 3, 4 oder 5.
  • Ferner wird, wenn der Winkelversatz β ist, der Winkel θ2'(i, j) zwischen der waagerechten Achse und dem mittleren Orientierungsmodul 3706 durch die folgende Neigungswinkel-Korrekturgleichung ermittelt: θ2'(i, j) = arctan(γ·tanθ2(i, j)) θ2(i, j) = θ1(i, j) – βwenn i = 0, 1 oder 2. θ2(i, j) = θ2'(i – 3, j) + 180wenn i = 3, 4 oder 5.
  • Deshalb werden Winkel θ2, Winkel θ1' und Winkel θ2' mittels der obigen Neigungswinkel-Korrekturgleichungen für den winkelgeteilten Winkel θ1 berechnet und die Ergebnisse als Elemente der Neigungswinkel-Korrekturtabelle gespeichert.
  • Dann wird ermittelt, ob die Elemente der Neigungswinkel-Korrekturtabelle für alle Winkelteilungen berechnet wurden (S1106). Wenn ja (S1106 ergibt Ja), wird der Ablauf mit Schritt S1107 fortgesetzt. Wenn nein (S1106 ergibt Nein), wird Schritt S1105 wiederholt, bis die Elemente der Neigungswinkel-Korrekturtabelle für alle Winkel berechnet sind.
  • Die Pixeldaten des abgetasteten Bilds werden dann, beruhend auf der resultierenden Neigungswinkel-Korrekturtabelle, korrigiert (S1107).
  • Schließlich wird die resultierende Neigungswinkel-Korrekturtabelle im Bildkorrekturdaten-Register 212 im VRAM 106 gespeichert (S1108). Für einen Durchschnittsfachmann ist es offensichtlich, dass statt der Neigungswinkel-Korrekturtabelle die Neigungswinkel-Korrekturgleichungen und Teilungsinformationen gespeichert werden könnten. Darüber hinaus kann die Neigungswinkel- Korrekturtabelle die Neigungswinkel-Korrekturgleichungen und Teilungsinformationen speichern.
  • Der oben erwähnte Orientierungsmodul-Suchschritt wird gleich nachfolgend anhand von 12, 38, 39 und 61 beschrieben.
  • 12 ist ein Ablaufdiagramm des Orientierungsmodul-Suchprozesses im MaxiCode-Symbol-Decodierprozess der vorliegenden Erfindung.
  • Der erste Schritt besteht darin, den Orientierungsmodul-Suchbereich einzustellen (S1201).
  • 61 zeigt die Beziehung zwischen dem Ortungsmuster und den Orientierungsmodulen in einem wirklichen MaxiCode-Symbol. Wie in 61 gezeigt, ist das die Mittelpunkte der inneren Orientierungsmodule des MaxiCode-Symbols verbindende virtuelle Vieleck 6101 ein regelmäßiges Sechseck, dessen Länge einer Seite dem Sechsfachen der Modulbreite W entspricht, und ist das die Mittelpunkte der äußeren Orientierungsmodule verbindende virtuelle Vieleck 6101 ein regelmäßiges Sechseck, dessen Länge einer Seite dem Siebenfachen der Modulbreite W entspricht. Es ist zu beachten, dass die Modulbreite W der Abstand zwischen den Mittelpunkten zweier benachbarter Module ist. Des weiteren ist Punkt 0 der Mittelpunkt des MaxiCode-Symbols, ist Punkt E der Mittelpunkt eines inneren Orientierungsmoduls, ist Punkt D der Punkt in der Mitte zwischen dem Mittelpunkt eines inneren Orientierungsmoduls und dem Mittelpunkt eines äußeren Orientierungsmoduls, ist Punkt A der Mittelpunkt eines äußeren Orientierungsmoduls und ist Punkt C der Mittelpunkt eines mittleren Orientierungsmoduls.
  • Der Mittelpunkt eines inneren Orientierungsmoduls findet sich daher auf einem Kreis, dessen Radius das Geradensegment 0E ist, der Mittelpunkt eines äußeren Orientierungsmoduls findet sich auf einem Kreis, dessen Radius das Geradensegment 0A ist, der Mittelpunkt eines mittleren Orientierungsmoduls findet sich auf einem Kreis, dessen Radius das Geradensegment 0C ist, und alle Längen hängen von der Modulbreite W ab. Die Längen der Geradensegmente 0E, 0A und 0C sind nachfolgend gezeigt. Länge des Geradensegments 0E = 6,000·W Länge des Geradensegments 0A = 7,000·W Länge des Geradensegments 0C = Quadratwurzel von ((Länge des Geradensegments 0D)2 + (Länge des Geradensegments DC)2) ≈ 6,543·W
  • Der Suchbereich für Orientierungsmodule im abgetasteten Bild eines MaxiCode-Symbols wird nachfolgend anhand von 38 beschrieben. 38 (a) zeigt die Modulbreite W, und 38 (b) zeigt die Beziehung zwischen der Modulbreite W und dem Mittelpunkt eines inneren Orientierungsmoduls.
  • Wie in 38 (a) gezeigt, wird die Modulbreite W aus dem Radius der Farbgrenze 3803 zwischen dem weißen Teil 3801 und dem schwarzen Teil 3802 des Ortungsmusters berechnet. Wie in 61 gezeigt, ist die Farbgrenze 6103 ein Kreis im von vorn (das heißt, nicht unter einem Winkel) erfassten abgetasteten Bild eines MaxiCode-Symbols, aber wenn das abgetastete Bild unter einem Winkel erfasst wird, ist die Farbgrenze 3803 eine einer Ellipse ähnelnde Form wie in 38 (a) gezeigt.
  • Wie ebenfalls in 61 gezeigt, gilt die folgende Gleichung, wo Punkt F ein Punkt auf der kreisförmigen Farbgrenze 6103 ist und R' der Radius des Kreises ist. R' < 4,0·W
  • Daher kann, wenn R der Radius der Farbgrenze 3803 in 38 (a) ist, die Modulbreite W berechnet werden als W = R/nwobei n das Größenverhältnis, das heißt eine Radius R und Modulbreite W in Wechselbeziehung bringende Variable ist. In diesem Fall ist das Größenverhältnis n ein Wert von 4,00 bis 3,00 in Inkrementen von 0,05.
  • Wie in 38 (b) gezeigt, wird das Größenverhältnis n während des Suchens nach dem Mittelpunkt des inneren Orientierungsmoduls variiert, weil der Mittelpunkt des inneren Orientierungsmoduls sich auf einem Kreis mit Radius L1 befindet. In dieser bevorzugten Ausführungsform ist Radius L1 = 6,000·W.
  • Desgleichen liegen die Mittelpunkte des äußeren Orientierungsmoduls und des mittleren Orientierungsmoduls auf Kreisen mit den Radien L2 beziehungsweise L3 (nicht gezeigt). Deshalb wird während des Variierens des Größenverhältnisses n auch nach den Mittelpunkten des äußeren und des mittleren Orientierungsmoduls gesucht. In dieser bevorzugten Ausführungsform ist Radius L2 = 7,000·W und Radius L3 = 6,543·W.
  • Ferner bildet, wie in 61 gezeigt, die den Mittelpunkt 0 und den Mittelpunkt C eines mittleren Orientierungsmoduls verbindende Gerade einen Winkel β zur den Mittelpunkt 0 und den Mittelpunkt A des äußeren Orientierungsmoduls verbindenden Gerade. Winkel β wird hier als der Winkelversatz des mittleren Orientierungsmoduls bezeichnet. Dieser Winkelversatz des mittleren Orientierungsmoduls ist definiert als: tanβ = (Länge des Segments DC)/(Länge des Segments 0D)β ≈ 7,59.
  • So wird der Orientierungsmodul-Suchbereich eingestellt.
  • Dann wird unter Verwendung der Bitwerte Schwarz = 1 und Weiß = 0 ein Farbenschablonen-Muster für die Gruppe der inneren Orientierungsmodule, die Gruppe der äußeren Orientierungsmodule und die Gruppe der mittleren Orientierungsmodule erzeugt (S1202). Es ist zu beachten, dass die Gruppe der inneren Orientierungsmodule aus dem Satz aus sechs inneren Orientierungsmodulen besteht (je eines in jeder der sechs Orientierungsmodul-Gruppen), die Gruppe der äußeren Orientierungsmodule aus dem Satz aus sechs äußeren Orientierungsmodulen besteht und die Gruppe der mittleren Orientierungsmodule aus dem Satz aus sechs mittleren Orientierungsmodulen besteht.
  • 39 zeigt ein beispielhaftes Farbenschablonen-Muster. Wie in 39 gezeigt, sind die sechs Orientierungen als Orientierung 0 bis Orientierung 5 dargestellt. Das Farbenschablonen-Muster wird durch zweimaliges Kompilieren eines Bitmusters, wobei Schwarz = 1 und Weiß = 0, für jede der Orientierungen 0 bis 5 erzeugt.
  • Die so kompilierten Farbenschablonen-Muster für die Gruppe der inneren Orientierungsmodule, die Gruppe der äußeren Orientierungsmodule und die Gruppe der mittleren Orientierungsmodule sind nachfolgend gezeigt.
    Farbenschablonen-Muster der Gruppe der inneren Orientierungsmodule = 101101101101
    Farbenschablonen-Muster der Gruppe der äußeren Orientierungsmodule = 001011001011
    Farbenschablonen-Muster der Gruppe der mittleren Orientierungsmodule = 101110101110.
  • Dann werden, beruhend auf dem Größenverhältnis n, mit dem Farbenschablonen-Muster übereinstimmende Kandidaten-Orientierungsmodule in der Gruppe der inneren Orientierungsmodule, der Gruppe der äußeren Orientierungsmodule und der Gruppe der mittleren Orientierungsmodule gesucht (S1203). Wenn es keine mit dem Farbenschablonen-Muster übereinstimmenden Orientierungsmodule gibt, wird schlussgefolgert, dass es keine Kandidaten-Orientierungsmodul-Daten gibt.
  • Dann wird ermittelt, ob es irgendwelche Kandidaten-Orientierungsmodul-Daten gibt, welche, beruhend auf allen definierten Größenverhältnissen n, gefunden wurden (S1204). Wenn ja (S1204 ergibt Ja), wird der Ablauf mit Schritt S1205 fortgesetzt. Wenn keine solchen Kandidaten-Orientierungsmodul-Daten gefunden wurden (S1204 ergibt Nein), wird Schritt S1203 wiederholt, bis Kandidaten-Orientierungsmodul-Daten, beruhend auf allen definierten Größenverhältnissen n, gefunden werden.
  • Dann wird ermittelt, ob irgendwelche Kandidaten-Orientierungsmodul-Daten vorhanden sind (S1205). Wenn ja (S1205 ergibt Ja), werden die Orientierungsmodule aus den Kandidaten-Orientierungsmodul-Daten ermittelt (S1206) und endet der Orientierungsmodul-Suchprozess.
  • Wenn es keine Kandidaten-Orientierungsmodul-Daten gibt (S1205 ergibt Nein), wird ein Fehler erzeugt, welcher besagt, dass ein Orientierungsmodul nicht gefunden werden konnte (S1207), und endet der Decodierprozess.
  • Der obige Prozess zum Auffinden von Kandidaten-Orientierungsmodul-Daten wird nachfolgend ausführlicher beschrieben.
  • 13 ist ein Ablaufdiagramm des Prozesses zur Suche nach Kandidaten-Orientierungsmodul-Daten im Orientierungsmodul-Suchprozess.
  • Wie in Schritt S1201 in 12 beschrieben, finden sich die Elemente der Gruppe der inneren Orientierungsmodule auf einem Kreis mit Radius L1, finden sich die Elemente der Gruppe der äußeren Orientierungsmodule auf einem Kreis mit Radius L2 und finden sich die Elemente der Gruppe der mittleren Orientierungsmodule auf einem Kreis mit Radius L3, beruhend auf dem Größenverhältnis n. Der Winkelversatz der mittleren Orientierungsmodule ist Winkel β. Des weiteren sind die die Gruppe der inneren Orientierungsmodule bildenden sechs inneren Orientierungsmodule in 60-Grad-Abständen um den Ortungsmuster-Mittelpunkt angeordnet. Dasselbe gilt für die sechs Orientierungsmodule der Gruppe der äußeren Orientierungsmodule und die sechs Orientierungsmodule der Gruppe der mittleren Orientierungsmodule.
  • Der Orientierungsmodul-Suchwinkel θ wird durch Teilen des Vollkreises jeweils in 60 Grad und anschließendes Teilen dieser 60-Grad-Teilungen jeweils in Suchinkrementwinkel α mittels einer zweidimensionalen Matrix (i, j) ausgedrückt, und dann werden die Orientierungsmodule gefunden. Es ist zu beachten, dass i eine ganze Zahl von 0 bis 5 ist und dass j eine ganze Zahl von 0 bis n ist. n = 60/α – 1 θ(i, j) = 60·i + α·j
  • Zum Beispiel wenn Suchinkrementwinkel α = 1 ist, wird Winkel θ(i, j) durch eine 6 × 60-Matrix ausgedrückt, wobei i eine ganze Zahl von 0 bis 5 und j eine ganze Zahl von 0 bis 59 ist. Der durch i dargestellte Winkelbereich ist Bereich i. Zum Beispiel ist der Bereich, wo i = 0, das heißt 0 ≤ θ < 60, Bereich 0.
  • Zunächst wird beim Suchwinkel θ eine mit dem Farbenschablonen-Muster der Gruppe der inneren Orientierungsmodule übereinstimmende Gruppe innerer Orientierungsmodule erkannt, um innere Orientierungsmodul-Kandidaten zu erkennen (S1301).
  • Dann wird ermittelt, ob innere Orientierungsmodul-Kandidaten gefunden wurden (S1302). Wenn ja (S1302 ergibt Ja), wird der Ablauf mit Schritt S1303 fortgesetzt. Wenn nein (S1302 ergibt Nein), wird der Ablauf mit Schritt S1307 fortgesetzt, um zum nächsten Suchwinkel zu wechseln.
  • Dann wird eine mit dem Farbenschablonen-Muster der Gruppe der äußeren Orientierungsmodule übereinstimmende Gruppe äußerer Orientierungsmodule erkannt, um äußere Orientierungsmodul-Kandidaten zu erkennen (S1303).
  • Dann wird ermittelt, ob äußere Orientierungsmodul-Kandidaten gefunden wurden (S1304). Wenn ja (S1304 ergibt Ja), wird der Ablauf mit Schritt S1305 fortgesetzt. Wenn nein (S1304 ergibt Nein), wird der Ablauf mit Schritt S1307 fortgesetzt, um zum nächsten Suchwinkel zu wechseln.
  • Dann wird eine mit dem Farbenschablonen-Muster der Gruppe der mittleren Orientierungsmodule übereinstimmende Gruppe mittlerer Orientierungsmodule erkannt, um mittlere Orientierungsmodul-Kandidaten zu erkennen (S1305).
  • Dann wird ermittelt, ob mittlere Orientierungsmodul-Kandidaten gefunden wurden (S1306). Wenn ja (S1306 ergibt Ja), wird der Ablauf mit Schritt S1307 fortgesetzt. Wenn nein (S1306 ergibt Nein), wird der Ablauf mit Schritt S1307 fortgesetzt, um zum nächsten Suchwinkel zu wechseln.
  • Dann wird ermittelt, ob jeder Suchwinkel verwendet wurde, um die Kandidaten-Daten zu lokalisieren (S1307). Wenn unter allen Suchwinkeln gesucht wurde (S1307 ergibt Ja), wird der Ablauf mit Schritt S1308 fortgesetzt. Wenn nein (S1307 ergibt Nein), werden die Schritte S1301 bis S1306 wiederholt, bis unter allen Suchwinkeln gesucht wurde.
  • Es ist zu beachten, dass, weil die Orientierungsmodule in regelmäßigen 60-Grad-Abständen um den Mittelpunkt des Ortungsmusters angeordnet sind, der Suchbereich von Suchwinkel θ eine Suchwinkelteilung zwischen 0 Grad und unter 60 Grad ist. Suchwinkel θ lässt sich daher als Bereich 0 denken.
  • Dann wird ermittelt, ob Kandidaten für die inneren Orientierungsmodule, die äußeren Orientierungsmodule und die mittleren Orientierungsmodule gefunden wurden (S1308). Wenn ja (S1308 ergibt Ja), werden beim Größenverhältnis n gefundene, aus den inneren Orientierungsmodul-Kandidaten, äußeren Orientierungsmodul-Kandidaten und mittleren Orientierungsmodul-Kandidaten bestehende Orientierungsmodul-Kandidaten fixiert (S1309) und endet der Orientierungsmodul-Kandidaten-Suchprozess.
  • Wenn es aber keinen inneren Orientierungsmodul-Kandidaten, äußeren Orientierungsmodul-Kandidaten oder mittleren Orientierungsmodul-Kandidaten gibt (S1308 ergibt Nein), wird ein Fehlerverarbeitungsprozess ausgeführt, weil beim Größenverhältnis n kein Orientierungsmodul-Kandidat gefunden wurde (S1310), und endet der Orientierungsmodul-Kandidaten-Suchprozess.
  • Es ist zu beachten, dass Schritt S1301 zum Erkennen innerer Orientierungsmodul-Kandidaten, Schritt S1303 zum Erkennen äußerer Orientierungsmodul-Kandidaten und Schritt S1305 zum Erkennen mittlerer Orientierungsmodul-Kandidaten im obigen Orientierungsmodul-Kandidaten-Suchprozess nicht von einer besonderen Reihenfolge abhängen. Diese Schritte können in beliebiger Reihenfolge ausgeführt werden, solange die inneren Orientierungsmodul-Kandidaten, die äußeren Orientierungsmodul-Kandidaten und die mittleren Orientierungsmodul-Kandidaten erkannt werden können.
  • Ein Prozess zum Erkennen der inneren Orientierungsmodul-Kandidaten im obigen Orientierungsmodul-Kandidaten-Suchprozess wird nachfolgend ausführlicher beschrieben.
  • 14 ist ein Ablaufdiagramm des Prozesses zur Suche innerer Orientierungsmodul-Kandidaten im obigen Orientierungsmodul-Kandidaten-Suchprozess.
  • Da in sechs Richtungen ein inneres Orientierungsmodul vorhanden ist, wird davon ausgegangen, dass beim Suchwinkel θ ein inneres Orientierungsmodul vorhanden ist, und werden die Positionen der inneren Kandidaten-Orientierungsmodule in den sechs Richtungen berechnet (S1401).
  • 40 zeigt die Position eines Kandidaten-Orientierungsmoduls beim Suchwinkel θ, wobei Punkt 0 der Ortungsmuster-Mittelpunkt ist, Punkt Aij der Mittelpunkt des inneren Kandidaten-Orientierungsmoduls auf einem Kreis mit Radius L1 im Bereich i ist und θij der Winkel zwischen Geradensegment 0Aij und der x-Achse ist, Punkt A'ij der Mittelpunkt des äußeren Kandidaten-Orientierungsmoduls auf einem Kreis mit Radius L2 ist, Punkt A''ij der Mittelpunkt des mittleren Kandidaten-Orientierungsmoduls auf einem Kreis mit Radius L3 ist und β der Winkelversatz des mittleren Orientierungsmoduls ist. Des weiteren sind (xij, yij) die Koordinaten von Punkt Aij, sind (x'ij, y'ij) die Koordinaten von Punkt A'ij, sind (x''ij, y''ij) die Koordinaten von Punkt A''ij und sind θ(i, j) die Koordinaten von Punkt θij.
  • Wie in 40 gezeigt, ist der Ort von Punkt A0j im Bereich i = 0 durch die folgenden Gleichungen definiert. x0j = L1·sin(θ0j) y0j = L1·cos(θ0j) θ0j = θ(0, j)
  • Die Mittelpunkte Aij der inneren Kandidaten-Orientierungsmodule in den sechs Richtungen können daher durch die folgenden Gleichungen ausgedrückt werden. xij = L1·sin(θij) yij = L1·cos(θij) θij = θ(i, j) = θ0j + 60·i
  • Die den in den sechs berechneten Richtungen liegenden inneren Kandidaten- Orientierungsmodulen entsprechende Pixeldaten-Farbe wird dann extrahiert und in ein Bitmuster umgewandelt, wobei, wie oben erwähnt, Schwarz = 1 und Weiß = 0 (S1402). Das die Bitmuster der in den umgewandelten sechs Richtungen liegenden inneren Kandidaten-Orientierungsmodule enthaltende Bitmuster der Gruppe der inneren Kandidaten-Orientierungsmodule wird dann als das Muster der inneren Kandidaten-Orientierungsmodule gesetzt.
  • Das Muster der inneren Kandidaten-Orientierungsmodule wird dann mit einem Teil des Farbenschablonen-Musters der Gruppe der inneren Orientierungsmodule verglichen, um eine Übereinstimmung zwischen diesen zu erkennen (S1403). Das Muster vom k-ten Wert von der linken Seite des Musters bis zum (k + 6)ten Wert im Farbenschablonen-Muster der Gruppe der inneren Orientierungsmodule wird dann als das innere Farbenschablonen-Teilmuster verwendet. Dieses Teilmuster und das Muster der inneren Kandidaten-Orientierungsmodule werden dann verglichen, um eine Übereinstimmung zwischen diesen zu erkennen. Es ist zu beachten, dass k hierin als die Startnummer bezeichnet wird und nur von 1 bis 6 zu variieren braucht.
  • Wenn das innere Farbenschablonen-Teilmuster und das Muster der inneren Kandidaten-Orientierungsmodule übereinstimmen (S1403 ergibt Ja), werden die in den sechs Richtungen liegenden inneren Kandidaten-Orientierungsmodule als die Kandidatendaten für die inneren Orientierungsmodule verwendet (S1404) und wird der Ablauf mit Schritt S1405 fortgesetzt, um mit dem nächsten inneren Farbenschablonen-Teilmuster zu vergleichen.
  • Wenn das innere Farbenschablonen-Teilmuster und das Muster der inneren Kandidaten-Orientierungsmodule nicht übereinstimmen (S1403 ergibt Nein), wird der Ablauf mit Schritt S1405 fortgesetzt, um mit dem nächsten inneren Farbenschablonen-Teilmuster zu vergleichen.
  • Zum Beispiel wenn das Muster der inneren Kandidaten-Orientierungsmodule 110110 ist, lautet das Farbenschablonen-Muster der Gruppe der inneren Orientierungsmodule 101101101101, und es liegt eine Übereinstimmung mit dem Muster der inneren Orientierungsmodule 110110 vor, wenn k = 3 und wenn k = 6. Das innere Kandidaten-Orientierungsmodul wird daher als der innere Orientierungsmodul-Kandidat erkannt. Wenn das Muster der inneren Kandidaten-Orientierungsmodule 100110 ist, gibt es jedoch kein inneres Farbenschablonen-Teilmuster, welches übereinstimmt.
  • Dann wird ermittelt, ob alle inneren Farbenschablonen-Teilmuster und Muster der inneren Kandidaten-Orientierungsmodule verglichen wurden (S1405). Genauer gesagt, es wird ermittelt, ob Vergleiche für alle Startnummern k von 1 bis 6 vorgenommen wurden. Wenn nicht alle inneren Farbenschablonen-Teilmuster und Muster der inneren Kandidaten-Orientierungsmodule verglichen wurden (S1405 ergibt Nein), werden die Schritte S1403 bis S1404 wiederholt, bis alle Muster verglichen wurden und S1405 Ja ergibt.
  • Wenn alle inneren Farbenschablonen-Teilmuster und Muster der inneren Kandidaten-Orientierungsmodule verglichen wurden (S1405 ergibt Ja), wird ermittelt, ob der innere Orientierungsmodul-Kandidat erkannt wurde (S1406). Wenn ja (S1406 ergibt Ja), endet der Prozess zur Erkennung des inneren Orientierungsmodul-Kandidaten. Wenn nein (S1406 ergibt Nein), stellt S1407 fest, dass es keine Kandidatendaten gibt, und endet der Prozess zur Erkennung des inneren Orientierungsmodul-Kandidaten.
  • Ein Prozess zum Erkennen eines äußeren Orientierungsmodul-Kandidaten im obigen Orientierungsmodul-Kandidaten-Suchprozess wird nachfolgend ausführlicher beschrieben.
  • 15 ist ein Ablaufdiagramm des Prozesses zur Suche äußerer Orientierungsmodul-Kandidaten im obigen Orientierungsmodul-Kandidaten-Suchprozess.
  • Weil in sechs Richtungen ein äußeres Orientierungsmodul liegt, wird davon ausgegangen, dass ein äußeres Orientierungsmodul beim Suchwinkel θ liegt und werden die Positionen der äußeren Kandidaten-Orientierungsmodule in den sechs Richtungen berechnet (S1501).
  • Wie in 40 gezeigt, ist der Ort von Punkt A'0j im Bereich i = 0 durch die folgenden Gleichungen definiert. x'0j = L2·sin(θ0j) y'0j = L2·cos(θ0j) θ0j = θ(0, j)
  • Die Mittelpunkte A'ij der äußeren Kandidaten-Orientierungsmodule in den sechs Richtungen können daher durch die folgenden Gleichungen ausgedrückt werden. x'ij = L2·sin(θij) y'ij = L2·cos(θij) θij = θ(i, j) = θ0j + 60·i
  • Die den in den sechs berechneten Richtungen liegenden äußeren Kandidaten-Orientierungsmodulen entsprechende Farbe der Pixeldaten wird dann extrahiert und in ein Bitmuster umgewandelt, wobei, wie oben erwähnt, Schwarz = 1 und Weiß = 0 (S1502). Das die Bitmuster der in den umgewandelten sechs Richtungen liegenden äußeren Kandidaten-Orientierungsmodule enthaltende Bitmuster der Gruppe der äußeren Kandidaten-Orientierungsmodule wird dann als das Muster der äußeren Kandidaten-Orientierungsmodule gesetzt.
  • Dann wird ermittelt, ob Startnummer k mit derjenigen der inneren Orientierungsmodul-Kandidaten übereinstimmt (S1503). Ein äußeres Farbenschablonen-Teilmuster wird, beruhend auf Startnummer k, aus dem Farbenschablonen-Muster der Gruppe der äußeren Orientierungsmodule auf die gleiche Weise erzeugt wie das innere Farbenschablonen-Teilmuster.
  • Wenn Startnummer k mit derjenigen der inneren Orientierungsmodul-Kandidaten übereinstimmt (S1503 ergibt Ja), werden das Muster der äußeren Kandidaten-Orientierungsmodule und das äußere Farbenschablonen-Teilmuster verglichen, um eine Übereinstimmung zwischen diesen zu erkennen (S1504).
  • Wenn Startnummer k nicht mit derjenigen der inneren Orientierungsmodul-Kandidaten übereinstimmt (S1503 ergibt Nein), wird der Ablauf mit Schritt S1506 fortgesetzt, um mit dem nächsten äußeren Farbenschablonen-Teilmuster zu vergleichen.
  • Wenn das äußere Farbenschablonen-Teilmuster und das Muster der äußeren Kandidaten-Orientierungsmodule übereinstimmen (S1504 ergibt Ja), werden die in den sechs Richtungen liegenden äußeren Kandidaten-Orientierungsmodule als die Kandidaten für die äußeren Orientierungsmodule verwendet (S1505) und wird der Ablauf mit Schritt S1506 fortgesetzt, um mit dem nächsten äußeren Farbenschablonen-Teilmuster zu vergleichen.
  • Wenn das äußere Farbenschablonen-Teilmuster und das Muster der äußeren Kandidaten-Orientierungsmodule nicht übereinstimmen (S1504 ergibt Nein), wird der Ablauf mit Schritt S1506 fortgesetzt, um mit dem nächsten äußeren Farbenschablonen-Teilmuster zu vergleichen.
  • Dann wird ermittelt, ob alle äußeren Farbenschablonen-Teilmuster und Muster der äußeren Kandidaten-Orientierungsmodule verglichen wurden (S1506). Wenn nicht alle äußeren Farbenschablonen-Teilmuster und Muster der äußeren Kandidaten-Orientierungsmodule verglichen wurden (S1506 ergibt Nein), werden die Schritte S1503 bis S1505 wiederholt, bis alle Muster verglichen wurden (S1506 ergibt Ja).
  • Wenn alle äußeren Farbenschablonen-Teilmuster und Muster der Äußeren Kandidaten-Orientierungsmodule verglichen wurden (S1506 ergibt Ja), wird ermittelt, ob der äußere Orientierungsmodul Kandidat erkannt wurde (S1507). Wenn ja (S1507 ergibt Ja), endet der Prozess zur Erkennung des äußeren Orientierungsmodul-Kandidaten. Wenn nein (S1507 ergibt Nein), stellt S1508 fest, dass es keine Kandidatendaten gibt, und endet der Prozess zur Erkennung des äußeren Orientierungsmodul-Kandidaten.
  • Ein Prozess zum Erkennen der mittleren Orientierungsmodul-Kandidaten im obigen Orientierungsmodul-Kandidaten-Suchprozess wird nachfolgend ausführlicher beschrieben.
  • 16 ist ein Ablaufdiagramm des Prozesses zur Suche mittlerer Orientierungsmodul-Kandidaten im obigen Orientierungsmodul-Kandidaten-Suchprozess.
  • Da in sechs Richtungen ein mittleres Orientierungsmodul vorhanden ist, wird davon ausgegangen, dass beim Suchwinkel θ – β, das heißt beim Suchwinkel θ minus Winkelversatz β, ein mittleres Orientierungsmodul vorhanden ist, und werden die Positionen der mittleren Kandidaten- Orientierungsmodule in den sechs Richtungen berechnet (S1601).
  • Wie in 40 gezeigt, ist der Ort von Punkt A''0j im Bereich i = 0 durch die folgenden Gleichungen definiert. x''0j = L3·sin(θ0j – β) y''0j = L3·cos(θ0j – β) θ0j = θ(0, j)
  • Die Mittelpunkte A''ij der mittleren Kandidaten-Orientierungsmodule in den sechs Richtungen können daher durch die folgenden Gleichungen ausgedrückt werden. x''ij = L3·sin(θij – β) y''ij = L3·cos(θij – β) θij = θ(i, j) = θ0j + 60·i
  • Die den in den sechs berechneten Richtungen liegenden mittleren Kandidaten-Orientierungsmodulen entsprechende Pixeldaten-Farbe wird dann extrahiert und in ein Bitmuster umgewandelt, wobei, wie oben erwähnt, Schwarz = 1 und Weiß = 0 (S1602). Das die Bitmuster der in den berechneten sechs Richtungen liegenden mittleren Kandidaten-Orientierungsmodule enthaltende Bitmuster der Gruppe der mittleren Kandidaten-Orientierungsmodule wird dann als das Muster der mittleren Kandidaten-Orientierungsmodule gesetzt.
  • Dann wird ermittelt, ob es eine Startnummer k gibt, welche mit derjenigen des mittleren Orientierungsmodul-Kandidaten übereinstimmt (S1603). Es ist zu beachten, dass die äußeren Orientierungsmodul-Kandidaten hier sowohl innere Orientierungsmodul-Kandidaten als auch äußere Orientierungsmodul-Kandidaten sind. Dann wird, beruhend auf Startnummer k, ein mittleres Farbenschablonen-Teilmuster aus dem Farbenschablonen-Muster der Gruppe der mittleren Orientierungsmodule auf die gleiche Weise erzeugt wie das innere Farbenschablonen-Teilmuster.
  • Wenn Startnummer k mit derjenigen des äußeren Orientierungsmodul-Kandidaten übereinstimmt (S1603 ergibt Ja), werden das Muster der mittleren Kandidaten-Orientierungsmodule und das mittlere Farbenschablonen-Teilmuster verglichen, um eine Übereinstimmung zwischen diesen zu erkennen (S1604).
  • Wenn Startnummer k nicht mit derjenigen des äußeren Orientierungsmodul-Kandidaten übereinstimmt (S1603 ergibt Nein), wird der Ablauf mit Schritt S1606 fortgesetzt, um mit dem nächsten mittleren Farbenschablonen-Teilmuster zu vergleichen.
  • Wenn das mittlere Farbenschablonen-Teilmuster und das Muster der äußeren Kandidaten-Orientierungsmodule übereinstimmen (S1604 ergibt Ja), werden die in den sechs Richtungen liegenden mittleren Kandidaten-Orientierungsmodule als die Kandidaten für die mittleren Orientierungsmodule verwendet (S1605) und wird der Ablauf mit Schritt S1606 fortgesetzt, um mit dem nächsten mittleren Farbenschablonen-Teilmuster zu vergleichen.
  • Wenn das mittlere Farbenschablonen-Teilmuster und das Muster der mittleren Kandidaten-Orientierungsmodule nicht übereinstimmen (S1604 ergibt Nein), wird der Ablauf mit Schritt S1606 fortgesetzt, um mit dem nächsten mittleren Farbenschablonen-Teilmuster zu vergleichen.
  • Dann wird ermittelt, ob alle mittleren Farbenschablonen-Teilmuster und Muster der mittleren Kandidaten-Orientierungsmodule verglichen wurden (S1606). Wenn nicht alle mittleren Farbenschablonen-Teilmuster und Muster der mittleren Kandidaten-Orientierungsmodule verglichen wurden (S1606 ergibt Nein), werden die Schritte S1603 bis S1605 wiederholt, bis alle Muster verglichen wurden (S1606 ergibt Ja).
  • Wenn alle mittleren Farbenschablonen-Teilmuster und Muster der mittleren Kandidaten-Orientierungsmodule verglichen wurden (S1606 ergibt Ja), wird ermittelt, ob der mittlere Orientierungsmodul-Kandidat erkannt wurde (S1607). Wenn ja (S1607 ergibt Ja), endet der Prozess zur Erkennung des äußeren Orientierungsmodul-Kandidaten. Wenn nein (S1607 ergibt Nein), stellt S1608 fest, dass es keine Kandidatendaten gibt, und endet der Prozess zur Erkennung des mittleren Orientierungsmodul-Kandidaten.
  • Ein Prozess zum Ermitteln der Orientierungsmodul-Kandidaten in den oben beschriebenen Orientierungsmodul-Kandidaten-Suchprozessen wird nachfolgend ausführlicher beschrieben.
  • 17 ist ein Ablaufdiagramm eines Orientierungsmodul-Kandidaten-Ermittlungsprozesses im Orientierungsmodul-Kandidaten-Suchprozess.
  • Beruhend auf den erkannten Kandidatendaten für mehrere innere Orientierungsmodule werden Kandidatendaten für ein inneres Orientierungsmodul beim Größenverhältnis n ermittelt.
  • Die Orientierungsmodule werden durch Identifizieren von Orientierungsmodul-Kandidaten mit der gleichen Orientierung, beruhend auf den erkannten Orientierungsmodul-Kandidaten, und Bestimmen des Durchschnitts der identifizierten Kandidatendaten ermittelt.
  • 41 zeigt die Umwandlung von Kandidatendaten für Orientierungsmodule mit der gleichen Orientierung. 41 (a) zeigt Kandidatendaten für Orientierungsmodule mit der gleichen Orientierung vor Datenumwandlung, und 41 (b) zeigt die Kandidatendaten für Orientierungsmodule mit der gleichen Orientierung nach Datenumwandlung.
  • Wie in 41 (a) gezeigt, können Kandidatendaten für mit der gleichen Orientierung erkannte Orientierungsmodule sowohl im Bereich i als auch im Bereich (i + 1) liegen. In 41 (a) sind die Punkte A10, A11, A12 und A0m Kandidatendaten für in den Bereichen i = 0 und i = 1 liegende Orientierungsmodule mit der gleichen Orientierung. Der als Orientierungsmodul-Kandidat erkannte Punkt Aij liegt im Bereich i und wurde bei der j-ten Suchwinkelteilung erkannt. Deshalb ist es mittels des Ausdrucks Aij nicht möglich, Kandidatendaten für Orientierungsmodule mit der gleichen Orientierung anzugeben. In der Form Aij ausgedrückte Daten werden deshalb in Datenpunkte der Form Bpq umgewandelt, was Kandidatendaten in Orientierungsmodulen mit der gleichen Orientierung bezeichnet, wobei p die Orientierungsmodulnummer und q die Kandidatennummer ist. Die Positionskoordinaten von Punkt Aij und Punkt Bpq sind identisch.
  • Dieser Umwandlungsprozess beginnt mit dem Erkennen, ob Kandidatendaten-Punkt Aij ein Kandidatendaten-Element für dasselbe Orientierungsmodul wie Punkt Bpq ist (S1701). Wenn ja (S1701 ergibt Ja), wird Punkt Aij in Punkt Bpq umgewandelt (S1702) und wird der Ablauf mit Schritt S1705 fortgesetzt.
  • Wie in 41 gezeigt, wird zum Beispiel Punkt A00, ein Kandidatendaten-Element für dasselbe Orientierungsmodul, in B00, A01 in B01 und A02 in B02 umgewandelt. Punkt A10, welcher ein Kandidatendaten-Element für ein um 60 Grad versetztes Orientierungsmodul ist, wird in B10, A11 in B11 und A12 in B12 umgewandelt.
  • Wenn die Kandidatendaten nicht für dasselbe Orientierungsmodul sind (S1701 ergibt Nein), wird erkannt, ob Kandidatendaten-Punkt Aij ein Kandidatendaten-Element für dasselbe Orientierungsmodul wie der von Punkt Bpq um 60 Grad versetzte Punkt B(p + 1)q ist (S1703).
  • Wenn er ein Kandidatendaten-Element für ein um 60 Grad versetztes Orientierungsmodul ist (S1703 ergibt Ja), wird Punkt Aij in Punkt B(p + 1)q umgewandelt (S1704) und wird der Ablauf mit Schritt S1705 fortgesetzt. Wenn er nicht ein Kandidatendaten-Element für ein um 60 Grad versetztes Orientierungsmodul ist (S1703 ergibt Nein), werden die Daten nicht umgewandelt und wird der Ablauf mit Schritt S1705 fortgesetzt.
  • Zum Beispiel ist, wie in 41 gezeigt, Punkt A0m ein Kandidatendaten-Element für ein anderes Orientierungsmodul als Punkt B02, aber ein Kandidatendaten-Element für dasselbe Orientierungsmodul wie Punkt B12. Orientierungsmodul-Kandidatenpunkt A0m wird daher in Punkt B13 umgewandelt.
  • Es ist zu beachten, dass, ob ein Datenpunkt ein Kandidatendaten-Element für ein um 60 Grad versetztes Orientierungsmodul ist, zum Beispiel wie folgt ermittelt wird. Wenn die folgende Gleichung für den Abstand zwischen Punkt A0m und Punkt A12 gilt, sind die Datenpunkte für verschiedene Orientierungsmodule.
    Abstand zwischen Punkten A0m und A12 < Modulhöhe V
    wobei die Modulhöhe V unter Verwendung der Modulbreite W durch die folgende Gleichung ermittelt wird. V = (2/Quadratwurzel von 3)·W
  • Dann wird ermittelt, ob die Kandidatendaten für alle erkannten Orientierungsmodule umgewandelt wurden (S1705). Wenn ja (S1705 ergibt Ja), wird der Ablauf mit Schritt S1706 fortgesetzt. Wenn nein (S1705 ergibt Nein), werden die Schritte S1701 bis S1704 wiederholt, bis alle Kandidatendaten umgewandelt sind.
  • Schließlich werden die Durchschnittskoordinaten für die für dasselbe Orientierungsmodul umgewandelten Kandidatendaten berechnet und werden die berechneten Koordinaten als die Koordinaten des Orientierungsmodul-Kandidaten beim Größenverhältnis n definiert (S1706). Es ist zu beachten, dass die Durchschnittskoordinaten in diesem Schritt durch Bestimmen der einfachen Durchschnitte der x- und y-Koordinatenwerte der Kandidatendaten in einem x-y-Koordinatenraum berechnet werden. Der Durchschnitt für die Polarkoordinaten ist der Durchschnittswinkel, wenn der Radius das Größenverhältnis n ist.
  • 42 zeigt ein Verfahren zum Ermitteln von Orientierungsmodul-Kandidaten beim Größenverhältnis n.
  • Wie in 42 gezeigt, ist, wenn die Durchschnittskoordinaten für die Punkte B10, B11, B12 und B13, für dasselbe Orientierungsmodul erkannte Kandidatendaten, diejenigen von Punkt Cn1 sind, Punkt Cn1 ein Orientierungsmodul-Kandidat beim Größenverhältnis n.
  • Ein Prozess zum Ermitteln der Orientierungsmodule im oben beschriebenen Orientierungsmodul-Suchprozess wird nachfolgend ausführlicher beschrieben.
  • 18 ist ein Ablaufdiagramm des Orientierungsmodul-Ermittlungsprozesses im Orientierungsmodul-Suchprozess.
  • Der erste Schritt besteht darin, die Durchschnittskoordinaten für beim Größenverhältnis n erkannte Orientierungsmodule zu berechnen und den Ort des Orientierungsmodul-Mittelpunkts zu ermitteln (S1801).
  • 43 veranschaulicht dieses bevorzugte Verfahren zum Ermitteln der Position des Mittelpunkts eines Orientierungsmoduls.
  • Wie in 43 gezeigt, ist Punkt D0 der Ort des Mittelpunkts des Orientierungsmoduls, wenn Punkt D0 der Punkt bei den Durchschnittskoordinaten der Punkte C(3,55; 0), C(3,5; 0) und C(3,45; 0) ist, wobei die Punkte C Kandidatendaten für ein beim Größenverhältnis n erkanntes Orientierungsmodul sind.
  • Dann wird der von der waagerechten Achse und der den Ortungsmuster-Mittelpunkt und den Orientierungsmodul-Mittelpunkt verbindenden Geraden gebildete Winkel θ berechnet (S1802).
  • Dann wird die Orientierungsmodulbreite W berechnet (S1803).
  • Schließlich werden, beruhend auf den Orientierungsmodul-Positionen, die Bilddaten des abgetasteten Bilds umgewandelt, um die Datenmodul-Positionen im MaxiCode-Symbol zu erkennen (S1804).
  • 44 beschreibt die Datenumwandlung durch Bilddrehung. 44 (a) zeigt den Datenumwandlungsprozess, und 44 (b) zeigt eine Tabelle mit Orientierungsmodul-Folgenummern.
  • Orientierungsmodul-Nummern werden in Folgenummern umgewandelt, wie in 44 (a) gezeigt. Die Orientierungsmodul-Nummern geben den Bereich an, in welchem das Orientierungsmodul sich befindet, und die Folgenummern entsprechen der Tabelle in 44 (b).
  • Ein Beispiel des oben erwähnten Datenmodul-Suchschritts wird gleich nachfolgend anhand von 19, 45 und 46 beschrieben.
  • 19 ist ein Ablaufdiagramm des Datenmodul-Suchprozesses im MaxiCode-Symbol-Decodierprozess.
  • Zunächst wird eine durch den Mittelpunkt des Ortungsmusters, den Mittelpunkt eines inneren Orientierungsmoduls und den Mittelpunkt eines äußeren Orientierungsmoduls verlaufende Orientierungsachse bestimmt und werden Orts- und Forminformationen für Datenmodule auf dieser Orientierungsachse berechnet (S1901).
  • 45 zeigt einen MaxiCode auf einer Orientierungsachse. 45 (a) zeigt ein wirkliches Modul und ein Kandidatenmodul auf der Orientierungsachse, und 45 (b) zeigt den Ort von Datenmodulen auf einer Orientierungsachse.
  • Wie in 45 (a) gezeigt, wird eine durch den Mittelpunkt des Ortungsmusters, den Mittelpunkt eines inneren Orientierungsmoduls und den Mittelpunkt eines äußeren Orientierungsmoduls verlaufende Orientierungsachse bestimmt und wird der Orientierungsachse eine Nummer zugeordnet. Um das Berechnen von Datenmodul-Orten zu beschreiben, werden nun zwei Module auf der angenommenen Orientierungsachse betrachtet, von welchen eines ein Modul ist, das Bestandteil des MaxiCode-Symbols ist (im folgenden ein "wirkliches Modul"), und eines ein Modul ist, das nicht Bestandteil des MaxiCode-Symbols ist (im folgenden ein "Kandidatenmodul").
  • Unter Verwendung des in 45 (b) gezeigten Beispiels wird der Ort des Mittelpunkts jedes Moduls für eine 10 wirkliche Module und 8 Kandidatenmodule auf Orientierungsachse 0 enthaltende Modulgruppe berechnet. Außerdem werden hier eine 11 wirkliche Module und 7 Kandidatenmodule enthaltende Modulgruppe auf Orientierungsachse 1, eine 11 wirkliche Module und 6 Kandidatenmodule enthaltende Modulgruppe auf Orientierungsachse 2, eine 9 wirkliche Module und 8 Kandidatenmodule enthaltende Modulgruppe auf Orientierungsachse 3, eine 11 wirkliche Module und 6 Kandidatenmodule enthaltende Modulgruppe auf Orientierungsachse 4 und eine 11 wirkliche Module und 7 Kandidatenmodule enthaltende Modulgruppe auf Orientierungsachse 5 betrachtet. Es ist zu beachten, dass, obwohl es 12 wirkliche Module auf Orientierungsachse 1 gibt, ein wirkliches Modul, das näher am Ortungsmuster-Mittelpunkt liegt als ein inneres Orientierungsmodul, nach Ermitteln der Position des Mittelpunkts dieses Moduls getrennt bit-umgewandelt wird. Die Modulgruppe auf Orientierungsachse 1 lässt sich daher als 11 wirkliche Module und 7 Kandidatenmodule enthaltend denken.
  • Dann wird aus den Pixeldaten für den Ort des berechneten Mittelpunkts jedes Moduls ein Bitmuster erzeugt (S1902). Wie oben erwähnt, entsprechen schwarze Pixel "1"-Bits und weiße Pixel "0"-Bits. Die Kandidatenmodule werden hier nicht in ein Bitmuster umgewandelt.
  • Dann werden Positionsinformationen für die im Bereich zwischen Orientierungsachsen liegenden MaxiCode-Symbol-Datenmodule berechnet (S1903).
  • 46 zeigt ein Modul zwischen Orientierungsachsen. 46 (a) zeigt ein wirkliches Modul und ein Kandidatenmodul zwischen Orientierungsachsen, und 46 (b) zeigt die Position eines Datenmoduls zwischen Orientierungsachsen.
  • Wie in 46 (a) gezeigt, ist der die Orientierungsachsen 0 und 1 enthaltende dreieckige Bereich Kandidaten-Symbolbereich mit 0 bezeichnet, ist der die Orientierungsachsen 1 und 2 enthaltende dreieckige Bereich mit Kandidaten-Symbolbereich 1 bezeichnet, ist der die Orientierungsachsen 2 und 3 enthaltende dreieckige Bereich mit Kandidaten-Symbolbereich 2 bezeichnet, ist der die Orientierungsachsen 3 und 4 enthaltende dreieckige Bereich mit Kandidaten-Symbolbereich 3 bezeichnet, ist der die Orientierungsachsen 4 und 5 enthaltende dreieckige Bereich mit Kandidaten-Symbolbereich 4 bezeichnet und ist der die Orientierungsachsen 5 und 0 enthaltende dreieckige Bereich mit Kandidaten-Symbolbereich 5 bezeichnet. Der MaxiCode-Symbol-Bereich im Kandidaten-Symbolbereich i enthält ein wirklichesw Modul (Sechseck aus einer durchgezogenen Linie), und die Bereiche außerhalb des MaxiCode-Symbols enthalten Kandidatenmodule (Sechsecke aus gestrichelten Linien).
  • Wie in 46 (b) gezeigt, sind die Mittelpunkte der Module auf Orientierungsachse i und die Mittelpunkte der Module auf Orientierungsachse i + 1 durch Geraden verbunden, und Punkte, welche diese Gerade in (Anzahl von Modulen zwischen Orientierungsachsen + 1) Abschnitte teilen, werden als Mittelpunkt jedes Moduls verwendet. In anderen Worten, wenn 18 Geraden im Kandidaten-Symbolbereich 0 gebildet sind und die Mittelpunkte der inneren Orientierungsmodule auf den Orientierungsachsen A1 und A'1 liegen, ist die die Punkte A1 und A'1 verbindende Gerade in 6 Teile geteilt und werden die getrennten Punkte als die Modulmittelpunkte verwendet. Des weiteren ist die Punkt Ak und Punkt A'k verbindende Gerade in (k + 5) Teile geteilt und werden die getrennten Punkte als die Modulmittelpunkte verwendet.
  • Dann werden die aus den berechneten Mittelpunkten jedes Moduls erkannten Pixeldaten verwendet, um ein Bitmuster zu erzeugen, wobei, wie oben erwähnt, Schwarz = 1 und Weiß = 0 (S1904), und endet der Datenmodul-Suchprozess. Es ist zu beachten, dass der Bitmuster-Umwandlungsschritt aus Schritt S1904 nur auf die wirklichen Module angewendet wird.
  • Ein Prozess zum Berechnen der Positions- und Forminformationen für die Datenmodule auf den oben erwähnten Orientierungsachsen wird gleich nachfolgend anhand von 20 und 47 beschrieben.
  • 20 ist ein Ablaufdiagramm des Prozesses zur Berechnung von Datenmodul-Positionen auf Orientierungsachsen im Datenmodul-Suchprozess.
  • Der erste Schritt besteht darin, durch Suchen längs der Orientierungsachse zur Außenseite des Symbols hin, beginnend bei einem inneren Orientierungsmodul, das als Suchbeginn-Modul verwendet wird, eine Gruppe von schwarzen Modulen zu finden (S2001). Genauer gesagt, eine fortlaufende Gruppe von schwarzen Modulen auf der Orientierungsachse wird, beruhend auf den im Pixeldaten-Register 210 im VRAM 106 gespeicherten Pixeldaten, gefunden und beginnt die Suche nach schwarzen Pixeldaten vom Mittelpunkt eines inneren Orientierungsmoduls aus. Es ist zu beachten, dass eine Gruppe schwarzer Module, wie hierin verwendet, eine Gruppe von Modulen einschließlich eines oder mehrerer aufeinanderfolgender schwarzer Module ist.
  • Der Orientierungsachsenwinkel wird dann, beruhend auf der lokalisierten Gruppe schwarzer Module, korrigiert (S2002). Verzerrung im abgetasteten Bild des Symbols bedeutet, dass die Position des in Schritt S304 in 3 gefundenen Orientierungsmoduls nicht unbedingt die Position eines Mittelpunkts eines Orientierungsmoduls ist. Deshalb werden die Datenmodul-Mittelpunkte nicht unbedingt auf der aus der Position des Ortungsmuster-Mittelpunkts und der Position des Orientierungsmoduls berechneten Orientierungsachse gefunden. Ferner werden, selbst wenn die Position des Orientierungsmoduls die Position des Mittelpunkts eines Orientierungsmoduls ist, im äußeren Teil eines Symbols, in welchem die Bildverzerrung groß ist, die Datenmodul-Mittelpunkte nicht unbedingt auf der Orientierungsachse gefunden. Deshalb ist es erforderlich, den Orientierungsachsenwinkel so zu korrigieren, dass die aus der Orientierungsmodul-Position und der Position des Ortungsmuster-Mittelpunkts berechnete Orientierungsachse nahe bei den Mittelpunkten der Orientierungsmodule und Datenmodule verläuft.
  • 47 zeigt eine Orientierungsachsenwinkel-Korrektur. Wie in 47 gezeigt, verschiebt das Korrigieren des Winkels der Orientierungsachse in Schritt S2001 die Orientierungsachse so, dass sie nahe bei den Mittelpunkten der Module verläuft.
  • Dann wird ermittelt, ob alle Gruppen schwarzer Module auf der Orientierungsachse (S2003) gefunden wurden. Genauer gesagt, es wird ermittelt, ob der Orientierungsachsenwinkel beruhend auf allen Gruppen schwarzer Module korrigiert wurde. Wenn nicht alle Gruppen schwarzer Module auf der Orientierungsachse gesucht wurden (S2003 ergibt Nein), verzweigt der Ablauf zurück zu S2001 und werden die Schritte S2001 bis S2002 wiederholt, bis alle Gruppen schwarzer Module auf Orientierungsachse i gefunden sind.
  • Wenn alle Gruppen schwarzer Module auf der Orientierungsachse gefunden sind (S2003 ergibt Ja), wird die Orientierungsachse i, nachdem der Orientierungsachsenwinkel, beruhend auf allen Gruppen schwarzer Module, korrigiert wurde, als die korrigierte Orientierungsachse definiert (S2204). Mithin ist es möglich, Orientierungsachse i durch auf allen Gruppen schwarzer Module beruhendes Korrigieren des Orientierungsachsenwinkels so zu korrigieren, dass sie im äußeren Bereich des Symbols, wo die Bildverzerrung stark ist, nahe den Mittelpunkten der Datenmodule verläuft.
  • Dann wird ermittelt, ob alle sechs Orientierungsachsen korrigiert wurden (S2005). Wenn nein (S2005 ergibt Nein), verzweigt der Ablauf zurück zu S2001 und werden die Schritte S2001 bis S2004 wiederholt, bis alle sechs Orientierungsachsen korrigiert sind.
  • Wenn hingegen alle sechs Orientierungsachsen korrigiert wurden (S2005 ergibt Ja), wird die Breite aller auf den winkelkorrigierten Orientierungsachsen liegenden wirklichen Module korrigiert (S2006), wird dann die Breite der Kandidatenmodule auf den winkelkorrigierten Orientierungsachsen korrigiert (S2007) und endet der Prozess.
  • Ein Prozess zum Korrigieren des Winkels der Orientierungsachsen wird gleich nachfolgend ausführlich anhand von 21, 24, 48, 49, 50, 51 und 52 beschrieben.
  • 21 ist ein Ablaufdiagramm des Orientierungsachsenwinkel-Korrekturprozesses des Prozesses zum Berechnen von Datenmodul-Positionen auf den Orientierungsachsen.
  • Zunächst wird, wenn der erste korrigierte Mittelpunkt des dem Ortungsmuster nächstgelegenen schwarzen Moduls in der Modulgruppe mit Punkt P0 der Gruppe schwarzer Module auf Orientierungsachse i bezeichnet ist, die Position von Punkt P0 berechnet (S2101). Es ist zu beachten, dass Orientierungsachse i in diesem Schritt eine beliebige der um den beruhend auf den sechs Orientierungsmodulen ermittelten Mittelpunkt des Ortungsmusters ermittelten sechs Orientierungsachsen ist. Ferner ist zu beachten, dass die Orientierungsachsennummern i entgegen dem Uhrzeigersinn um den Ortungsmuster-Mittelpunkt hochgezählt werden, dass i sich von 0 bis 5 erstreckt und dass bei i = 5 die nächste Orientierungsachse bei (i + 1) die Orientierungsachse 0 ist. Der Prozess zum Berechnen von Modulmittelpunkt-Positionsinformationen wird nachfolgend anhand von 24 weiter beschrieben.
  • Dann wird Orientierungsachse i entgegen dem Uhrzeigersinn um Punkt P0 herum um den Winkel θi gedreht, um eine benachbarte Reserveachse i' zu erhalten, und es wird nach einer Gruppe schwarzer Module, welche das schwarze Modul enthält, in dem Punkt P0 auf der benachbarten Reserveachse i' liegt, gesucht (S2102). Es ist zu beachten, dass Winkel θi ein Winkel zwischen Orientierungsachse i und Orientierungsachse (i + 1) ist.
  • 49 zeigt die Beziehung zwischen Orientierungsachse i und benachbarter Reserveachse i'. Wie in 49 gezeigt, ist die benachbarte Reserveachse i' die entgegen dem Uhrzeigersinn um Punkt P0 herum um den Winkel θi gedrehte Orientierungsachse i.
  • Beruhend auf der Gruppe schwarzer Module, welche auf der benachbarten Reserveachse i' liegt, wird ein Kandidat für den zweiten korrigierten Mittelpunkt des schwarzen Moduls, in welchem Punkt P0 liegt, mit Punkt P1 bezeichnet und wird der Ort von Punkt P1 berechnet (S2103).
  • 50 zeigt den Prozess zum Berechnen des Orts von Punkt P1, einem Kandidaten für den zweiten korrigierten Mittelpunkt des Moduls. Wie in 50 gezeigt, wird der Ort von Punkt P1 unter der Annahme berechnet, dass alle in der Gruppe schwarzer Module enthaltenen und auf der benachbarten Reserveachse i' liegenden Module die gleiche Größe haben.
  • Dann wird Orientierungsachse i im Uhrzeigersinn um Punkt P0 herum um den Winkel θi – 1 gedreht, um eine benachbarte Reserveachse i'' zu erhalten, und es wird nach einer Gruppe schwarzer Module, welche das schwarze Modul enthält, in dem Punkt P0 auf der benachbarten Reserveachse i'' liegt, gesucht (S2104). Es ist zu beachten, dass Winkel θi – 1 ein Winkel zwischen Orientierungsachse i und Orientierungsachse (i – 1) ist. Ferner ist, wenn Orientierungsachse i die Orientierungsachse 0 ist, Orientierungsachse (i – 1) die Orientierungsachse 5.
  • Beruhend auf der Gruppe schwarzer Module, welche auf der benachbarten Reserveachse i'' liegt, wird ein Kandidat für den zweiten korrigierten Mittelpunkt des schwarzen Moduls, in welchem Punkt P0 liegt, mit Punkt P2 bezeichnet und wird der Ort von Punkt P2 berechnet (S2105).
  • 51 zeigt den Prozess zum Berechnen des Orts von Punkt P2, einem Kandidaten für den zweiten korrigierten Mittelpunkt des Moduls. Wie in 51 gezeigt, wird der Ort von Punkt P2 unter der Annahme berechnet, dass alle in der Gruppe schwarzer Module enthaltenen und auf der benachbarten Reserveachse i'' liegenden Module die gleiche Größe haben.
  • Dann werden die Winkelkorrektur der benachbarten Reserveachse i' und die Winkelkorrektur der benachbarten Reserveachse i'' verglichen, um die Achse mit dem kleineren Korrekturfehler zu erkennen (S2106). Wenn die Winkelkorrektur der benachbarten Reserveachse i' kleiner ist (S2106 ergibt i'), wird Punkt P1 auf Punkt P3 gesetzt, wobei P3 der zweite korrigierte Mittelpunkt des schwarzen Moduls, in welchem P0 liegt, ist (S2107). Wenn die Winkelkorrektur der benachbarten Reserveachse i'' kleiner ist (S2106 ergibt i''), wird Punkt P2 auf Punkt P3 gesetzt, wobei P3 der zweite korrigierte Mittelpunkt des schwarzen Moduls, in welchem P0 liegt, ist (S2108). Die Größenordnung des Korrekturfehlers wird für die Gesamtanzahl von in der Gruppe schwarzer Module auf der Orientierungsachse enthaltenen Modulen beurteilt. In anderen Worten, weil davon ausgegangen wird, dass alle Module die gleiche Größe haben, nimmt mit abnehmender Anzahl von Modulen auch der Fehler ab. In den in 50 und 51 gezeigten Fällen wird daher P2 als der zweite Kandidaten-Mittelpunkt P3 gesetzt, weil die Anzahl von Modulen auf der benachbarten Reserveachse i' größer als die Anzahl von Modulen auf der benachbarten Reserveachse i'' ist.
  • Dann wird die das schwarze Modul, in welchem P3 auf der Reserve-Orientierungsachse j liegt, enthaltende Gruppe schwarzer Module gefunden (S2109) und wird der Ort von Punkt P, das heißt der Mittelpunkt des schwarzen Moduls, in welchem P3 liegt, berechnet (S2110). Es ist zu beachten, dass die Reserve-Orientierungsachse j hier die durch P3 und den Ortungsmuster-Mittelpunkt verlaufende Achse ist.
  • 52 zeigt den Prozess zum Berechnen der Position von Punkt P, dem Modulmittelpunkt. Wie in 52 gezeigt, wird der Ort von Modulmittelpunkt P unter der Annahme berechnet, dass alle in der Gruppe schwarzer Module, welche das schwarze Modul, in dem P3 liegt, enthält und auf der Reserve-Orientierungsachse j liegt, enthaltenen Module die gleiche Größe haben.
  • Eine durch Modulmittelpunkt P verlaufende Orientierungsachse k und der Ortungsmuster-Mittelpunkt werden auf die durch Winkelkorrektur der Orientierungsachse i gewonnene Orientierungsachse gesetzt, und es wird der Winkel αi zwischen dieser Orientierungsachse k und der waagerechten Orientierungsachse berechnet (S2111). Wie in 52 gezeigt, ist die durch Punkt P und den Ortungsmuster-Mittelpunkt verlaufende Gerade die durch Winkelkorrektur der Orientierungsachse i gewonnene Orientierung k. Es ist zu beachten, dass Orientierungsachse k und Reserve-Orientierungsachse j dieselbe Gerade sind.
  • Dann wird die Breite der die Gruppe schwarzer Module bildenden schwarzen Module auf Orientierungsachse k berechnet (S2112) und endet der Prozess.
  • 24 ist ein Ablaufdiagramm eines Prozesses zum Berechnen des Orts des Mittelpunkts von Modulen auf einer bestimmten Orientierungsachse.
  • Die Länge L einer Orientierungsachse i, welche eine ein einziges oder eine Vielzahl von aneinandergrenzenden Modulen enthaltende Modulgruppe durchquert, wird, beruhend auf den im Pixeldaten-Register 210 im VRAM 106 gespeicherten Pixeldaten, berechnet (S2401).
  • 48 veranschaulicht den Prozess zum Berechnen des Orts eines Modulmittelpunkts. 48 (a) zeigt den Bereich L in einer Modulgruppe auf einer Orientierungsachse, und 48 (b) zeigt den Ort des Mittelpunkts eines Moduls in der Modulgruppe.
  • Wie in 48 (a) gezeigt, wird die Länge L einer Orientierungsachse i, welche eine Modulgruppe von schwarzen Modulen durchquert, beruhend auf den Grenzen zwischen schwarzen und weißen Pixeln gemessen. Wenn diese Punkte A und B sind, gilt: Orientierungsachsen-Länge L = Strecke AB.
  • Dann wird, beruhend auf Modulbreite W (in Schritt S304 des in 3 gezeigten Orientierungsmodul-Suchprozesses berechnet) und der gerade berechneten Länge L, ein Wert n' (= L/W) berechnet. Danach wird, beruhend auf einer Randwert-Tabelle oder dem gerundeten Wert von n', die Anzahl n von Modulen in der Modulgruppe berechnet (S2402).
  • In 48 (a) ist n = 2, weil es zwei schwarze Module in der Modulgruppe gibt.
  • Schließlich wird, beruhend auf Reihenfolge r der Module in der Modulgruppe, der Ort des Modulmittelpunkts berechnet (S2403), wobei r = 1 das dem Ortungsmuster nächstgelegene Modul in der Modulgruppe bezeichnet und r = n das vom Ortungsmuster am weitesten entfernte Modul bezeichnet. Ferner wird davon ausgegangen, dass alle Module in der Modulgruppe die gleiche Größe haben, und der Ort des Modulmittelpunkts wird unter der Annahme berechnet, dass die Orientierungsachse i durch die Mittelpunkte aller Module verläuft. Genauer gesagt, es wird der Punkt, welcher die Länge L im Verhältnis (2r – 1):(2n – 2r + 1) teilt, zum Mittelpunkt des r-ten Moduls gemacht. Wie in 48 (b) gezeigt, ist, wenn bei r = 1 Punkt P0 der Modulmittelpunkt ist, Punkt P0 der Punkt, welcher die Länge L (das Geradensegment AB) im Verhältnis 1:3 teilt.
  • 22 ist ein Ablaufdiagramm eines Prozesses zum Korrigieren der Breite wirklicher Module auf einer Orientierungsachse im Prozess zur Berechnung von Datenmodul-Positionen auf einer Orientierungsachse.
  • Orientierungsachse i wird, bei einem inneren Orientierungsmodul beginnend und zur Außenseite des Symbols hin fortfahrend, abgesucht, um schwarze wirkliche Module enthaltende Module zu finden (S2201).
  • Die Orte aller Mittelpunkte wirklicher Module in der lokalisierten Modulgruppe werden berechnet (S2202), und dann wird die Breite der wirklichen Module berechnet (S2203).
  • Dann wird ermittelt, ob es auf Orientierungsachse i irgendwelche weißen wirklichen Module innenseitig der der Innenseite des Symbols (dem Ortungsmuster) nächstgelegenen schwarzen wirklichen Module gibt (S2204). Wenn ja (S2204 ergibt Ja), wird die Breite des der Symbolmitte nächstgelegenen schwarzen wirklichen Moduls zur Breite der weißen wirklichen Module gemacht (S2205).
  • Dann wird, unter Verwendung des der Außenseite des Symbols nächstgelegenen Moduls in der lokalisierten gleichfarbigen Modulgruppe, Orientierungsachse i zur Außenseite des Symbols hin nach einer Modulgruppe abgesucht, welche wirkliche Module einer Farbe, die von der Farbe der vorher gefundenen Modulgruppe verschieden ist, enthält (S2206).
  • Dann werden die Orte der Mittelpunkte aller die lokalisierte Modulgruppe bildenden wirklichen Module berechnet (S2207) und wird die Breite der wirklichen Module berechnet (S2208).
  • Dann wird ermittelt, ob im äußersten Teil des Symbols auf Orientierungsachse i eine schwarze wirkliche Module enthaltende Modulgruppe gefunden wurde (S2209). Wenn nein (S2209 ergibt Nein), verzweigt der Ablauf zurück zu S2201 und werden die Schritte S2206 bis S2208 wiederholt, bis eine ein schwarzes wirkliches Modul enthaltende Modulgruppe im äußersten Teil des Symbols gefunden wird.
  • Wenn eine solche Modulgruppe gefunden wird (S2209 ergibt Ja), wird dann ermittelt, ob die Orte der Mittelpunkte der wirklichen Module und die Breiten der wirklichen Module für alle sechs Orientierungsachsen berechnet wurden (S2210). Wenn die Berechnungen für alle Achsen abgeschlossen wurden (S2210 ergibt Ja), endet der Prozess. Wenn nicht alle Berechnungen abgeschlossen wurden (S2210 ergibt Nein), verzweigt der Ablauf zurück zu S2201 und werden die Schritte S2201 bis S2209 wiederholt, bis die Berechnungen für alle Achsen abgeschlossen sind.
  • 23 ist ein Ablaufdiagramm eines Prozesses zum Korrigieren der Breite von Kandidatenmodulen auf der Orientierungsachse im Prozess zum Berechnen von Datenmodul-Orten auf einer Orientierungsachse.
  • Zunächst wird aus den sechs Orientierungsachsen die Orientierungsachse mit der geringsten Verzerrung erkannt und als Referenz-Orientierungsachse m verwendet (S2301). Zum Beispiel kann das Maß an Verzerrung Ei einer Orientierungsachse mittels der folgenden Gleichung, beruhend auf dem Verhältnis Ri zwischen der Breite Wi im äußersten Teil des Symbols liegender schwarzer wirklicher Module, welche durch Breitenkorrektur der wirklichen Module, wie in 22 gezeigt, berechnet wurden, und der Breite W0i der durch Schritt S304 des in 3 gezeigten Orientierungsmodul-Suchprozesses berechneten wirklichen Module, berechnet werden. Es ist zu beachten, dass i die Achsennummer ist. Ei = |Ri_1| = |Wi/W0i_1|
  • So wird die Verzerrung Ei für jede der sechs Orientierungsachsen berechnet, und die Orientierungsachse mit der geringsten Verzerrung dient als Referenz-Orientierungsachse m.
  • Dann werden die Orte aller auf der Referenz-Orientierungsachse m nicht berechneten wirklichen Module und Kandidatenmodule berechnet (S2302), wobei davon ausgegangen wird, dass die Breite der wirklichen Module und die Breite der Kandidatenmodule, welche auf der Referenz-Orientierungsachse m nicht berechnet wurden, so groß wie die Breite schwarzer wirklicher Module im äußersten Teil des Symbols sind. Auch der Ort des Modulmittelpunkts auf Orientierungsachse (i + 1) wird, beruhend auf den Orten der Mittelpunkte der wirklichen Module und Kandidatenmodule auf Orientierungsachse i, wobei die Referenz-Orientierungsachse m die Orientierungsachse i ist, berücksichtigt.
  • Dann wird der Abstand L vom Mittelpunkt eines schwarzen wirklichen Moduls im äußersten Teil des Symbols auf Orientierungsachse (i + 1) zum Mittelpunkt eines Kandidatenmoduls im äußersten Teil des Kandidaten-Symbolbereichs auf Orientierungsachse (i + 1), beruhend auf dem Ort des Ortungsmuster-Mittelpunkts, dem Ort eines Moduls auf Orientierungsachse i und dem Ort des Mittelpunkts eines schwarzen wirklichen Moduls im äußersten Teil des Symbols auf Orientierungsachse (i + 1), berechnet (S2303). Es ist zu beachten, dass der Kandidaten-Symbolbereich der in 46 gezeigte Bereich ist, wie oben beschrieben.
  • Dann werden die Orte der Mittelpunkte aller auf Orientierungsachse (i = 1) nicht berechneten wirklichen Module und Kandidatenmodule, beruhend auf der berechneten Länge L und der Anzahl von Modulen vom schwarzen wirklichen Modul im äußersten Teil des Symbols auf Orientierungsachse (i + 1) bis zum Kandidatenmodul im äußersten Teil des Kandidaten-Symbolbereichs auf Orientierungsachse (i + 1), berechnet (S2304).
  • 53 zeigt den Prozess zum Berechnen der Länge L und der Orte der nicht berechneten Modulmittelpunkte.
  • Wie in 53 gezeigt, ist Punkt 0 der Ortungsmuster-Mittelpunkt, ist Punkt A' der Mittelpunkt des schwarzen wirklichen Moduls im äußersten Teil des Symbols auf Orientierungsachse (i + 1), ist Punkt B' die Mitte des Kandidatenmoduls im äußersten Teil des Kandidaten-Symbolbereichs auf Orientierungsachse (i + 1) und ist Punkt B die Mitte des Kandidatenmoduls im äußersten Teil des Kandidaten-Symbolbereichs auf Orientierungsachse i. Der Modulmittelpunkt auf Orientierungsachse i, bei welchem die Anzahl von Modulen vom inneren Orientierungsmodul auf Orientierungsachse i gleich der Anzahl von Modulen vom inneren Orientierungsmodul auf Orientierungsachse (i + 1) bis zum schwarzen wirklichen Modul im äußersten Teil des Symbols ist, wird als Punkt A gesetzt. Es ist zu beachten, dass der Abstand L von Punkt A' zu B' mittels der folgenden Gleichung berechnet werden kann: L = A'B' = AB·(OA'/OA)
  • Dann werden die Orte der Modulmittelpunkte unter der Annahme berechnet, dass die (n + 1) Module von dem Modul, in welchem Punkt A' liegt, bis zu dem Modul, in welchem Punkt B' liegt, gleich sind.
  • Zuletzt wird überprüft, ob die Orte der Mittelpunkte aller wirklichen Module und Kandidatenmodule für alle sechs Achsen berechnet wurden (S2305). Wenn der Berechnungsprozess für alle Orientierungsachsen abgeschlossen ist (S2305 ergibt Ja), endet der Prozess. Wenn nein (S2305 ergibt Nein), verzweigt der Ablauf zurück zu S2303 und werden die Schritte S2303 bis S2304 wiederholt, um, nach Einsetzen der Orientierungsachse (i + 1) als Orientierungsachse i für die nächste Berechnungsserie, die Berechnungen für alle Achsen zu vervollständigen.
  • Nun wird ein Beispiel für den Datenzeichen-Umwandlungsschritt beschrieben.
  • 25 ist ein Ablaufdiagramm des Datenzeichen-Umwandlungsprozesses im MaxiCode-Symbol-Decodierprozess gemäß der vorliegenden Erfindung.
  • Datenzeichen-Umwandlung wandelt die Datenmodule in ein Bitmuster von Einsen und Nullen um, wobei Schwarz einen Bitwert von 1 und Weiß einen Bitwert von 0 hat, dann werden die Bitmuster-Daten in ein Codewort umgewandelt, und danach werden die Codewörter in Datenzeichen umgewandelt.
  • 54 zeigt ein typisches Codewort.
  • Wie in 54 gezeigt, ist ein Codewort eine Bitfolge, welche ein Datenzeichen darstellt. Jedes Codewort besteht aus den sechs Datenbits aus den sechs Datenmodulen und zwei "0"-Bits. Die Codewort-Umwandlung berechnet also die Werte i und j, wobei der jeweilige Bitdatenwert dem j-ten Bit des i-ten Codeworts entspricht.
  • Das Bitmuster für den Ort des Datenmoduls im MaxiCode-Symbol wird als Bitdaten in einer Bitmatrix-Tabelle gespeichert (S2501), welche im folgenden als BT(n, m) bezeichnet wird, wobei n eine Ganzzahl von 0 bis 29 und m eine Ganzzahl von 0 bis 32 ist.
  • 55 zeigt eine Bitmatrix-Tabelle. 55 (a) zeigt die Beziehung zwischen dem Ort eines Datenmoduls in einem MaxiCode-Symbol und dem Ort der in der Bitmatrix-Tabelle gespeicherten Daten. 55 (b) zeigt die in der Bitmatrix-Tabelle gespeicherten Daten.
  • Wie in 55 gezeigt, wird der Wert des von rechts dritten und von oben dritten Datenmoduls im MaxiCode-Symbol in BT(27, 2) in der Bitmatrix-Tabelle gespeichert.
  • Auf Grundlage der Datenelemente der Codewort Bitmatrix-Tabelle werden die in der Bitmatrix-Tabelle gespeicherten Bitdaten bei der Codewort-Umwandlung in das j-te Bit im i-ten Codewort umgewandelt (S2502).
  • 56 zeigt eine typische Codewort-Bitmatrix-Tabelle, welche als CT(n, m) bezeichnet ist, wobei n eine Ganzzahl von 0 bis 29 und m eine Ganzzahl von 0 bis 32 ist.
  • Die Beziehung zwischen Werten i und j im Codewort-Umwandlungsvorgang und in der Codewort-Bitmatrix-Tabelle CT(n, m) wird durch die folgenden Gleichungen gezeigt: i = [CT(n, m)/256] j = CT(n, m) – i·256
  • Wie in 56 gezeigt, lautet der Wert dieser Codewort-Bitmatrix-Tabelle bei CT(27, 2) 8452. Folglich gilt i = [8452/256] = 33 und j = 8452 – 33·256 = 4, und diese Zelle speichert den Bitdatenwert für das 4. Bit im 33. Codewort. Es ist zu beachten, dass durch Ersetzen des i-ten Codeworts durch den durch Verschieben von (5 – j) Bits mit den in BT(n, m) angegebenen Bitwerten "1" oder "0" erhaltenen Wert ein Software-Prozess ausgeführt wird.
  • 57 zeigt die Beziehung zwischen den in der Bitmatrix-Tabelle gespeicherten Bitdaten und den Datenelementen in der Codewort-Matrix-Tabelle.
  • Wie in 57 gezeigt, ist der Bitdatenwert bei BT(n, m) der aus Codewort-Tabelle CT(n, m) berechnete Wert des j-ten Bits im i-ten Codewort. Zum Beispiel ist BT(27, 2) = 0, welches der Wert des 4. Bits im 33. Codewort ist.
  • Dann wird ermittelt, ob alle Datenmodule codewort-umgewandelt wurden (S2503). Wenn alle Datenmodule umgewandelt wurden (S2503 ergibt Ja), wird Schritt S2504 ausgeführt. Wenn nein (S2503 ergibt Nein), werden die Schritte S2501 und S2502 wiederholt, bis alle Datenmodule in Codewörter umgewandelt sind.
  • Infolge von Umwandlungsvorgängen und Datenverlusten verlorene Bitfolgen werden dann durch einen Fehlerkorrekturprozess wiederhergestellt (S2504). Es gibt auch Fälle, in welchen der Fehlerkorrekturprozess die richtigen Daten wegen der Menge verlorener Bitfolgen nicht wiederherstellen kann. Deshalb wird ermittelt, ob die richtigen Daten durch den Fehlerkorrekturprozess wiederhergestellt wurden (S2505). Wenn die richtigen Daten wiederhergestellt wurden (S2505 ergibt Ja), werden alle Codewörter, beruhend auf der Vorgabe-Zeichenvorratstabelle, in Datenzeichen umgewandelt (S2506) und endet der Decodierprozess. 58 zeigt einen Teil der Vorgabe-Zeichenvorratstabelle.
  • Wenn die richtigen Daten nicht wiederhergestellt werden konnten (S2505 ergibt Nein), wird ein Fehlerverarbeitungsprozess ausgeführt, weil das MaxiCode-Symbol nicht erkannt werden konnte (S2507), und endet der Decodierprozess.
  • Ein Datenspeicherungsmedium gemäß der vorliegenden Erfindung speichert ein von einem Computer ausführbares Programm einschließlich der Schritte des oben beschriebenen Verfahrens zum Lesen zweidimensionaler Strichcodes.
  • Ein Datenspeicherungsmedium gemäß der vorliegenden Erfindung kann eine Compact Disc, Diskette, Festplatte, magnetooptische Platte, Digital Versatile Disc (DVD), ein Magnetband, eine Speicherkarte oder ein anderes computerlesbares Medium sein.
  • Die vorliegende Erfindung bietet die folgenden Vorteile.
  • Die Mitte des Ortungsmusters eines Strichcode-Symbols, z.B. eines MaxiCode-Symbols, kann im abgetasteten Bild des Strichcode-Symbols schnell und einfach gefunden werden, indem die Erkennungsmuster aus das Bild durchquerenden Abtastzeilen nach einem Erkennungsmuster, welches mit einem bestimmten Referenzmuster längs einer durch den Ortungsmuster-Mittelpunkt verlaufenden Abtastzeile übereinstimmt, durchsucht werden. Ein zweidimensionaler Strichcode kann somit leicht decodiert werden.
  • Es ist auch möglich, die zum Verarbeiten eines abgetasteten Bilds eines Strichcode-Symbols, z.B. eines MaxiCode-Symbols, welches in dieser Beschreibung als Beispiel eines zweidimensionalen Strichcode-Symbols verwendet wird, erforderliche Zeit mittels eines Orientierungsmodul-Suchverfahrens, welches mit einem Farbenschablonen-Muster in den Pixeldaten des Orientierungsmodul-Suchbereichs des abgetasteten Bilds des Strichcode-Symbols übereinstimmende Pixeldaten erkennt und dann, auf Grundlage der erkannten Pixeldaten, alle Orientierungsmodule findet, zu verkürzen.
  • Es ist auch möglich, ein unter einem Winkel statt direkt von vorn erfasstes Strichcode-Symbol, z.B. ein MaxiCode-Symbol aus einem abgetasteten Bild, zu decodieren, indem man die Gleichung, welche die Beziehung zwischen dem Ortungsmuster des wirklichen Strichcode-Symbols und dem Ortungsmuster in einem unter einem Winkel erfassten abgetasteten Bild des Strichcode-Symbols beschreibt, die Gleichung eines Kreises und einer Ellipse annähern lässt und das abgetastete Bild auf Grundlage dieser Gleichung bild-korrigiert.
  • Ferner eignet sich das Verzerrungskorrekturverfahren der vorliegenden Erfindung für planare Verzerrung im abgetasteten Bild eines Strichcode-Symbols, z.B. eines MaxiCode-Symbols, und kann es, beruhend auf den Bereichen der auf der durch den Ortungsmuster-Mittelpunkt und die Orientierungsmodule verlaufenden Orientierungsachse liegenden Gruppen schwarzer Module, die Orientierungsachsen eines verzerrten abgetasteten Bilds durch Korrigieren der Winkel der Achsen so korrigieren, dass sie durch die Mitten der Orientierungsmodule und Datenmodule verlaufen.
  • Es ist auch möglich, die Orts- und Forminformationen von Modulen auf den Orientierungsachsen eines verzerrten abgetasteten Bilds auf Grundlage der Bereiche der gleichfarbigen Modulgruppen auf den korrigierten Orientierungsachsen zu korrigieren und die Positionen von Datenmodulen zwischen Orientierungsachsen auf Grundlage der Orts- und Forminformationen der Module auf den korrigierten Orientierungsachsen zu korrigieren.
  • Es ist sogar auch möglich, die zum Decodieren des abgetasteten Bilds eines Strichcode-Symbols, z.B. eines MaxiCode-Symbols, welches stellvertretend für zweidimensionale Strichcode-Symbole verwendet wird, erforderliche Zeit durch auf der oben beschriebenen Korrektur des abgetasteten Bilds beruhendes Erkennen der Modulpositions- und -forminformationen zu verkürzen.
  • Es ist sogar auch möglich, die zum Decodieren des abgetasteten Bilds eines Strichcode-Symbols, z.B. eines MaxiCode-Symbols, welches stellvertretend für zweidimensionale Strichcode-Symbole verwendet wird, erforderliche Zeit mittels eines Datenzeichen-Umwandlungsverfahrens, welches Bitdaten aus den erkannten Datenmodulen in einer Bitmatrix-Tabelle speichert, die Bitdaten, beruhend auf einer Codewort-Matrix-Tabelle, in Codewörter umwandelt und dann die Bitdaten in Datenzeichen umwandelt, zu verkürzen.
  • Ein die Schritte des Verfahrens zum Lesen zweidimensionaler Strichcodes der vorliegenden Erfindung umfassendes Programm kann auch als ein Software-Produkt auf ein Datenspeicherungsmedium, welches sich leicht vertreiben und vermarkten lässt, geschrieben werden.
  • Es ist auch möglich, eine Vorrichtung zum Lesen zweidimensionaler Strichcodes mit einer Einrichtung zum Ausführen des Verfahrens zum Lesen zweidimensionaler Strichcodes der vorliegenden Erfindung zu schaffen.

Claims (16)

  1. Verfahren zum Lesen eines zweidimensionalen Strichcode-Symbols mit Orientierungsmodulen und einem Ortungsmuster mit einem Mittelpunkt, welches Verfahren umfasst: 1) das Abtasten des Strichcode-Symbols, um ein abgetastetes Bild zu erhalten, 2) das Ermitteln des Ortungsmuster-Mittelpunkts in einem abgetasteten Bild des Strichcode-Symbols und 3) das Ausführen eines Datenmodul-Suchschritts zum Berechnen von Positions- und Forminformationen für alle das Strichcode-Symbol bildenden Module, dadurch gekennzeichnet, dass Schritt 3) umfasst: das Berechnen einer durch ein Orientierungsmodul und den Ortungsmuster-Mittelpunkt in einem abgetasteten Bild des Strichcode-Symbols verlaufenden Orientierungsachse durch: (a) Berechnen, beruhend auf Ortungsmuster-Positionsinformationen und Orientierungsmodul-Positionsinformationen und -Forminformationen, von Positions- und Forminformationen für eine Vielzahl von Modulen, welche eine Modulgruppe auf der Orientierungsachse bilden; (b) Erfassen eines Bitmusters der mehreren Datenmodule auf der Orientierungsachse, die durch den Schritt zur Berechnung der Modulpositionen auf der Orientierungsachse berechnet wurden; (c) Berechnen, beruhend auf den Positions- und Forminformationen der mehreren Module der Modulgruppe auf der Orientierungsachse, die durch den Schritt zur Berechnung der Modulpositionen auf der Orientierungsachse berechnet wurden, von Positionsinformationen für eine Vielzahl von Modulen, welche eine Modulgruppe zwischen benachbarten Orientierungsachsen bilden; und (d) Erfassen des Bitmusters der zwischen den Orientierungsachsen liegenden mehreren Datenmodule, die durch den Schritt zur Berechnung der Modulpositionen zwischen Orientierungsachsen berechnet wurden.
  2. Verfahren nach Anspruch 1, bei welchem Schritt (a) die folgenden Schritte umfasst: (a1) das Korrigieren des Winkels der Orientierungsachse dergestalt, dass die Orientierungsachse durch die Mittelpunkte der mehreren Module, welche eine Modulgruppe auf der Orientierungsachse bilden, verläuft; (a2) das Berechnen von Positionsinformationen für eine Vielzahl von wirklichen Modulen, die auf einer Orientierungsachse liegen, welche durch den Orientierungsachsenwinkel-Korrekturschritt korrigiert wurde, und, auf der Basis der berechneten Positionsinformationen, Korrigieren der Modulbreite, die eine Forminformation für die mehreren wirklichen Module ist; (a3) das Berechnen von Positionsinformationen für eine Vielzahl von auf der Orientierungsachse liegenden Kandidatenmodulen, beruhend auf Positions- und Forminformationen wirklicher Module, die durch den Schritt zur Korrektur der Breite wirklicher Module auf der Orientierungsachse berechnet wurden.
  3. Verfahren nach Anspruch 2, bei welchem Schritt (a1) die folgenden Schritte umfasst: (a11) das Berechnen, beruhend auf einem Bereich einer Gruppe schwarzer Module, welcher ein einziges oder eine Vielzahl von aneinandergrenzenden, auf der Orientierungsachse liegenden schwarzen Modulen enthält, eines ersten korrigierten Mittelpunkts eines schwarzen Moduls, welches in der Gruppe schwarzer Module dem Ortungsmuster am nächsten liegt; (a12) das Berechnen eines zweiten korrigierten Mittelpunkts eines schwarzen Moduls, beruhend auf dem Bereich einer Gruppe schwarzer Module, welcher ein einziges oder eine Vielzahl von aneinandergrenzenden schwarzen Modulen einschließlich des schwarzen Moduls enthält, welches auf einer benachbarten Reserveachse liegt, die parallel zu einer der Orientierungsachse benachbarten Orientierungsachse liegt und durch den im Schritt zur Berechnung eines ersten korrigierten Mittelpunkts berechneten ersten korrigierten Mittelpunkt eines schwarzen Moduls verläuft; (a13) das Berechnen eines Mittelpunkts eines schwarzen Moduls, beruhend auf dem durch den Schritt zur Berechnung des zweiten korrigierten Mittelpunkts berechneten zweiten korrigierten Mittelpunkt eines schwarzen Moduls und dem Bereich einer Gruppe schwarzer Module, welcher ein einziges oder eine Vielzahl von aneinandergrenzenden schwarzen Modulen einschließlich des auf einer durch den Ortungsmuster-Mittelpunkt verlaufenden Reserve-Orientierungsachse liegenden schwarzen Moduls enthält; und (a14) das Berechnen eines Korrekturwinkels einer durch den Ortungsmuster-Mittelpunkt und den durch den Mittelpunkt-Berechnungsschritt berechneten Mittelpunkt eines schwarzen Moduls verlaufenden Orientierungsachse.
  4. Verfahren nach Anspruch 2, bei welchem Schritt (a2) einen Schritt zum Berechnen, beruhend auf dem Bereich einer gleichfarbigen Gruppe wirklicher Module, welcher ein einziges oder eine Vielzahl von aneinandergrenzenden gleichfarbigen wirklichen Modulen auf derselben Orientierungsachse enthält, eines Mittelpunkts und einer Modulbreite wirklicher Module, welche eine Gruppe gleichfarbiger wirklicher Module bilden, enthält.
  5. Verfahren nach Anspruch 2, bei welchem Schritt (a3) die folgenden Schritte umfasst: (a31) das Erkennen einer Referenz-Orientierungsachse als die Orientierungsachse mit der geringsten Korrektur aller Orientierungsachsen; (a32) das Berechnen von Mittelpunkten und Modulbreiten für eine Vielzahl von auf einer Orientierungsachse liegenden Kandidatenmodulen, beruhend auf Forminformationen für das vom Ortungsmuster am weitesten entfernte schwarze Modul auf der durch den Referenz-Orientierungsachsen-Erkennungsschritt erkannten Referenz-Orientierungsachse; und (a33) das Berechnen von Mittelpunkten und Modulbreiten für eine Vielzahl von auf einer von der Referenz-Orientierungsachse verschiedenen Orientierungsachse liegenden Kandidatenmodulen, beruhend auf Positionen von wirklichen Modulen und Kandidatenmodulen auf der Referenz-Orientierungsachse.
  6. Verfahren nach einem der Ansprüche 1 bis 5, bei welchem das Strichcode-Symbol Daten mittels abwechselnd schwarzer und weißer Zellen codiert.
  7. Verfahren nach einem der Ansprüche 1 bis 5, bei welchem das Strichcode-Symbol ein MaxiCode-Symbol ist.
  8. Vorrichtung zum Lesen eines zweidimensionalen Strichcode-Symbols, enthaltend eine Datenmodul-Sucheinheit zum Berechnen von Positions- und Forminformationen für alle das Strichcode-Symbol bildenden Module, wobei die Datenmodul-Sucheinheit (206) eine Einrichtung zum Abtasten des Strichcode-Symbols zum Gewinnen eines abgetasteten Bilds enthält, und eine Ortungsmuster-Sucheinheit (203) zum Ermitteln des Ortungsmuster-Mittelpunkts in einem abgetasteten Bild des Strichcode-Symbols, gekennzeichnet dadurch, dass die Datenmodul-Sucheinheit außerdem eine Einrichtung zum Berechnen einer durch ein Orientierungsmodul und den Ortungsmuster-Mittelpunkt in einem abgetasteten Bild des Strichcode-Symbols verlaufenden Orientierungsachse enthält, enthaltend: eine Einheit zur Berechnung der Modulpositionen auf Orientierungsachsen zum Berechnen von Positions- und Forminformationen für eine Vielzahl von eine Modulgruppe auf der Orientierungsachse bildenden Modulen, beruhend auf Ortungsmuster-Positionsinformationen und Orientierungsmodul-Positionsinformationen und -Forminformationen; eine Einheit zur Erkennung von Datenmodul-Bitmustern auf Orientierungsachsen zum Erkennen eines Bitmusters der durch die Einheit zur Berechnung der Modulpositionen auf Orientierungsachsen berechneten mehreren Datenmodule auf der Orientierungsachse; eine Einheit zur Berechnung der Modulpositionen zwischen Orientierungsachsen zum Berechnen von Positionsinformationen für eine Vielzahl von eine Modulgruppe zwischen benachbarten Orientierungsachsen bildenden Modulen, beruhend auf den Positions- und Forminformationen der durch die Einheit zur Berechnung der Modulpositionen auf Orientierungsachsen berechneten mehreren Module der Modulgruppe auf der Orientierungsachse; und eine Einheit zur Erkennung von Datenmodul-Bitmustern zwischen Orientierungsachsen zum Erkennen des Bitmusters der durch die Einheit zur Berechnung der Modulpositionen zwischen Orientierungsachsen berechneten mehreren zwischen den Orientierungsachsen liegenden Datenmodule.
  9. Vorrichtung nach Anspruch 8, bei welcher die Einheit zur Berechnung der Modulpositionen auf Orientierungsachsen enthält: eine Orientierungsachsenwinkel-Korrektureinheit zum Korrigieren des Winkels der Orientierungsachse dergestalt, dass die Orientierungsachse durch die Mittelpunkte der mehreren eine Modulgruppe auf der Orientierungsachse bildenden Module verläuft; eine Einheit zur Korrektur der Breite wirklicher Module auf Orientierungsachsen zum Berechnen von Positionsinformationen für eine Vielzahl von auf einer durch die Orientierungsachsenwinkel-Korrektureinheit korrigierten und auf den berechneten Positionsinformationen, welche die Modulbreite korrigieren, die eine Forminformation für die mehreren wirklichen Module ist, beruhenden Orientierungsachse liegenden wirklichen Modulen; eine Einheit zur Korrektur der Breite von Kandidatenmodulen auf Orientierungsachsen zum Berechnen von Positionsinformationen für eine Vielzahl von auf der Orientierungsachse liegenden Kandidatenmodulen, beruhend auf von der Einheit zur Korrektur der Breite wirklicher Module auf Orientierungsachsen berechneten Positions- und Forminformationen wirklicher Module.
  10. Vorrichtung nach Anspruch 9, bei welcher die Orientierungsachsenwinkel-Korrektureinheit enthält: eine Einheit zur Berechnung eines ersten korrigierten Mittelpunkts zum Berechnen, beruhend auf einem Bereich einer Gruppe schwarzer Module, welcher ein einziges oder eine Vielzahl von aneinandergrenzenden, auf der Orientierungsachse liegenden schwarzen Modulen enthält, eines ersten korrigierten Mittelpunkts eines schwarzen Moduls, welches in der Gruppe schwarzer Module dem Ortungsmuster am nächsten liegt; eine Einheit zur Berechnung eines zweiten korrigierten Mittelpunkts zum Berechnen eines zweiten korrigierten Mittelpunkts eines schwarzen Moduls, beruhend auf dem Bereich einer Gruppe schwarzer Module, welcher ein einziges oder eine Vielzahl von aneinandergrenzenden schwarzen Modulen einschließlich des schwarzen Moduls enthält, welches auf einer benachbarten Reserveachse liegt, die parallel zu einer der Orientierungsachse benachbarten Orientierungsachse liegt und durch den von der Einheit zur Berechnung eines ersten korrigierten Mittelpunkts berechneten ersten korrigierten Mittelpunkt eines schwarzen Moduls verläuft; eine Mittelpunkt-Berechnungseinheit zum Berechnen eines Mittelpunkts eines schwarzen Moduls, beruhend auf dem durch die Einheit zur Berechnung des zweiten korrigierten Mittelpunkts berechneten zweiten korrigierten Mittelpunkt eines schwarzen Moduls und dem Bereich einer Gruppe schwarzer Module, welcher ein einziges oder eine Vielzahl von aneinandergrenzenden schwarzen Modulen einschließlich des auf einer durch den Ortungsmuster-Mittelpunkt verlaufenden Reserve-Orientierungsachse liegenden schwarzen Moduls enthält; und eine Orientierungsachsen-Korrekturwinkel-Berechnungseinheit zum Berechnen eines Korrekturwinkels einer durch den Ortungsmuster-Mittelpunkt und den durch den Mittelpunkt-Berechnungsschritt berechneten Mittelpunkt eines schwarzen Moduls verlaufenden Orientierungsachse.
  11. Vorrichtung nach Anspruch 9, bei welcher die Einheit zur Korrektur der Breite wirklicher Module auf Orientierungsachsen eine Berechnungseinheit zum Berechnen, beruhend auf dem Bereich einer gleichfarbigen Gruppe wirklicher Module, welcher ein einziges oder eine Vielzahl von aneinandergrenzenden gleichfarbigen wirklichen Modulen auf derselben Orientierungsachse enthält, eines Mittelpunkts und einer Modulbreite wirklicher Module, welche eine Gruppe gleichfarbiger wirklicher Module bilden, enthält.
  12. Vorrichtung nach Anspruch 9, bei welcher die Einheit zur Korrektur der Breite von Kandidatenmodulen auf Orientierungsachsen enthält: eine Referenz-Orientierungsachsen-Erkennungseinheit zum Erkennen einer Referenz-Orientierungsachse als Orientierungsachse mit der geringsten Korrektur von allen Orientierungsachsen; eine erste Recheneinheit zum Berechnen von Mittelpunkten und Modulbreiten für eine Vielzahl von auf einer Orientierungsachse liegenden Kandidatenmodulen, beruhend auf Forminformationen für das vom Ortungsmuster am weitesten entfernte schwarze Modul auf der durch die Referenz-Orientierungsachsen-Erkennungseinheit erkannten Referenz-Orientierungsachse; und eine zweite Recheneinheit zum Berechnen von Mittelpunkten und Modulbreiten für eine Vielzahl von auf einer von der Referenz-Orientierungsachse verschiedenen Orientierungsachse liegenden Kandidatenmodulen, beruhend auf Positionen von wirklichen Modulen und Kandidatenmodulen auf der Referenz-Orientierungsachse.
  13. Vorrichtung nach einem der Ansprüche 8 bis 12, bei welcher das Strichcode-Symbol Daten mittels abwechselnd schwarzer und weißer Zellen codiert.
  14. Vorrichtung nach einem der Ansprüche 8 bis 12, bei welcher das Strichcode-Symbol ein MaxiCode-Symbol ist.
  15. Maschinenlesbares Datenspeicherungsmedium, welches ein Programm zur Implementierung von Schritten des Verfahrens, welches in einem oder mehreren beliebigen der Ansprüche 1 bis 7 definiert ist, trägt.
  16. Datenspeicherungsmedium nach Anspruch 15, bei welchem das Datenspeicherungsmedium eine Compact Disc, Diskette, Festplatte, magnetooptische Platte, Digital Versatile Disc (DVD), ein Magnetband oder eine Speicherkarte ist.
DE60118051T 2000-04-06 2001-04-05 Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium Expired - Lifetime DE60118051T2 (de)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP2000104970A JP2001291051A (ja) 2000-04-06 2000-04-06 二次元バーコードの読み取り方法及び装置、情報記録媒体
JP2000104970 2000-04-06
JP2000201279 2000-07-03
JP2000201279A JP2002024752A (ja) 2000-07-03 2000-07-03 二次元コード読み取り方法、情報記録媒体及び二次元コード読み取り装置
JP2000237086 2000-08-04
JP2000237086A JP2002049889A (ja) 2000-08-04 2000-08-04 二次元コード読み取り方法、情報記録媒体及び二次元コード読み取り装置
JP2000355940A JP2002157549A (ja) 2000-11-22 2000-11-22 二次元コード読み取り方法、情報記録媒体及び二次元コード読み取り装置
JP2000355940 2000-11-22

Publications (2)

Publication Number Publication Date
DE60118051D1 DE60118051D1 (de) 2006-05-11
DE60118051T2 true DE60118051T2 (de) 2006-08-31

Family

ID=27481198

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60118051T Expired - Lifetime DE60118051T2 (de) 2000-04-06 2001-04-05 Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium

Country Status (8)

Country Link
US (1) US6604682B2 (de)
EP (1) EP1143372B1 (de)
KR (1) KR100579356B1 (de)
CN (1) CN1334544A (de)
AT (1) ATE321310T1 (de)
DE (1) DE60118051T2 (de)
ES (1) ES2256106T3 (de)
HK (1) HK1043852A1 (de)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6705526B1 (en) * 1995-12-18 2004-03-16 Metrologic Instruments, Inc. Automated method of and system for dimensioning objects transported through a work environment using contour tracing, vertice detection, corner point detection, and corner point reduction methods on two-dimensional range data maps captured by an amplitude modulated laser scanning beam
US20060082557A1 (en) * 2000-04-05 2006-04-20 Anoto Ip Lic Hb Combined detection of position-coding pattern and bar codes
US20020016750A1 (en) * 2000-06-20 2002-02-07 Olivier Attia System and method for scan-based input, storage and retrieval of information over an interactive communication network
US6666377B1 (en) 2000-07-18 2003-12-23 Scott C. Harris Bar code data entry device
WO2004051557A1 (en) * 2002-12-03 2004-06-17 Silverbrook Research Pty Ltd Rotationally symmetric tags
AU2003287495A1 (en) * 2002-11-04 2004-06-07 Deepq Technologies, A General Partnership Document processing based on a digital document image input with a confirmatory receipt output
JP4133298B2 (ja) * 2002-12-19 2008-08-13 株式会社リコー デジタルカメラ装置
CN2591284Y (zh) * 2002-12-27 2003-12-10 萧呈方 散热风扇
JP4257132B2 (ja) * 2003-02-21 2009-04-22 富士通株式会社 バーコード読取装置およびバーコード読取方法
SE0301143D0 (sv) * 2003-04-17 2003-04-17 C Technologies Ab Sätt och anordning för inläsning av data
US7156311B2 (en) * 2003-07-16 2007-01-02 Scanbuy, Inc. System and method for decoding and analyzing barcodes using a mobile device
US7387250B2 (en) * 2003-12-04 2008-06-17 Scanbuy, Inc. System and method for on the spot purchasing by scanning barcodes from screens with a mobile device
US20050227217A1 (en) * 2004-03-31 2005-10-13 Wilson Andrew D Template matching on interactive surface
US7296747B2 (en) 2004-04-20 2007-11-20 Michael Rohs Visual code system for camera-equipped mobile devices and applications thereof
KR100560330B1 (ko) * 2004-04-21 2006-03-30 에이디정보통신 주식회사 색상 보정이 가능한 대용량 2차원 칼라 바코드인코딩/디코딩 시스템 및 그 방법
US8316068B2 (en) 2004-06-04 2012-11-20 Telefonaktiebolaget Lm Ericsson (Publ) Memory compression
US7593593B2 (en) * 2004-06-16 2009-09-22 Microsoft Corporation Method and system for reducing effects of undesired signals in an infrared imaging system
US7309015B2 (en) * 2004-07-14 2007-12-18 Scanbuy, Inc. Mobile device gateway providing access to instant information
US20060050961A1 (en) * 2004-08-13 2006-03-09 Mohanaraj Thiyagarajah Method and system for locating and verifying a finder pattern in a two-dimensional machine-readable symbol
US7201321B2 (en) * 2004-08-27 2007-04-10 Symbol Technologies, Inc. Electro-optically reading direct part markings on workpieces by image capture
JP4089670B2 (ja) * 2004-09-09 2008-05-28 村田機械株式会社 文書管理装置
US7578436B1 (en) * 2004-11-08 2009-08-25 Pisafe, Inc. Method and apparatus for providing secure document distribution
WO2006089247A2 (en) * 2005-02-16 2006-08-24 Pisafe, Inc. Method and system for creating and using redundant and high capacity barcodes
EP1866043A1 (de) * 2005-04-06 2007-12-19 Eidgenössische Technische Hochschule Zürich (ETH) Verfahren zur durchführung einer anwendung in einer mobilen vorrichtung
EP1886246B1 (de) 2005-04-13 2011-07-06 Scanbuy, Inc. Visuelles codeverfahren für mit kamera ausgestattete mobile einrichtungen
US7775428B2 (en) 2005-05-06 2010-08-17 Berkun Kenneth A Systems and methods for generating, reading and transferring identifiers
JP4670464B2 (ja) * 2005-05-10 2011-04-13 日本電気株式会社 情報読取装置、情報処理装置、情報通信システム、情報読取方法、及びプログラム
EP1904952A2 (de) * 2005-05-23 2008-04-02 Nextcode Corporation Effiziente finder-muster und verfahren zur anwendung auf 2d-machine-vision-probleme
US7911444B2 (en) * 2005-08-31 2011-03-22 Microsoft Corporation Input method for surface of interactive display
US7974435B2 (en) * 2005-09-16 2011-07-05 Koplar Interactive Systems International Llc Pattern-based encoding and detection
US7942340B2 (en) * 2005-11-24 2011-05-17 Canon Kabushiki Kaisha Two-dimensional code, and method and apparatus for detecting two-dimensional code
WO2007075719A2 (en) * 2005-12-16 2007-07-05 Pisafe, Inc. Method and system for creating and using barcodes
US7584891B2 (en) * 2005-12-19 2009-09-08 Pitney Bowes Inc. Black fluorescent optical codes and process for printing and reading
US8016187B2 (en) * 2006-02-21 2011-09-13 Scanbury, Inc. Mobile payment system using barcode capture
CN100377167C (zh) * 2006-03-17 2008-03-26 北京紫光捷通科技有限公司 一种用于二维码识别的二维码区域精确定位方法
US8150163B2 (en) 2006-04-12 2012-04-03 Scanbuy, Inc. System and method for recovering image detail from multiple image frames in real-time
US7857219B2 (en) * 2006-05-26 2010-12-28 Symbol Technologies, Inc. Imaging reader target object finder system
WO2008073455A1 (en) * 2006-12-11 2008-06-19 Koplar Interactive Systems International, L.L.C. Spatial data encoding and decoding
US8212857B2 (en) 2007-01-26 2012-07-03 Microsoft Corporation Alternating light sources to reduce specular reflection
US8226007B2 (en) 2007-03-23 2012-07-24 Ltt, Ltd Method and apparatus for using a limited capacity portable data carrier
US7780084B2 (en) 2007-06-29 2010-08-24 Microsoft Corporation 2-D barcode recognition
US8472039B2 (en) 2007-07-10 2013-06-25 Samsung Electronics Co., Ltd. Copy apparatus having a copy prevention function and a copy prevention method thereof
EP2112817A4 (de) * 2007-08-03 2010-03-24 Univ Keio Zusammensetzungsanalyseverfahren, bildvorrichtung mit zusammensetzungsanalysefunktion, zusammensetzungsanalyseprogramm und computerlesbares aufzeichnungsmedium
US20090111584A1 (en) * 2007-10-31 2009-04-30 Koplar Interactive Systems International, L.L.C. Method and system for encoded information processing
KR20110002833A (ko) * 2008-01-29 2011-01-10 베리텍 인코포레이티드 이차원 심벌 및 이 심벌의 판독방법
JP5567908B2 (ja) * 2009-06-24 2014-08-06 キヤノン株式会社 3次元計測装置、その計測方法及びプログラム
WO2011011051A2 (en) * 2009-07-20 2011-01-27 The Regents Of The University Of California, Santa Cruz Image-based barcode reader
US8531401B2 (en) 2009-08-13 2013-09-10 Hewlett-Packard Development Company, L.P. Computer accessory device
US20110066504A1 (en) * 2009-09-17 2011-03-17 Ehud Chatow System for providing promotion information
US8788325B2 (en) * 2009-11-30 2014-07-22 Ncr Corporation Techniques for generating a product path with custom advertisements
CN101882220B (zh) * 2010-06-01 2013-07-17 福建新大陆电脑股份有限公司 一种基于动态模板的条码图像校正方法及校正点获取方法
KR101109510B1 (ko) * 2010-07-02 2012-01-31 (주) 애니모비 2차원 바코드 인식방법
US9396421B2 (en) 2010-08-14 2016-07-19 Rujan Entwicklung Und Forschung Gmbh Producing, capturing and using visual identification tags for moving objects
FR2968796B1 (fr) * 2010-12-10 2014-04-25 Samuel Boury Procede de detection d'un marqueur appose sur la surface d'un objet et systeme de mise en oeuvre
FR2968797A1 (fr) * 2010-12-10 2012-06-15 Samuel Boury Procede de generation d'un marqueur a apposer sur la surface d'un objet
AU2010257441B2 (en) * 2010-12-24 2012-09-20 Canon Kabushiki Kaisha Method, apparatus and system for identifying candidate pairs of finder patterns of a barcode
WO2012136902A1 (fr) 2011-04-05 2012-10-11 Franck Guigan Code-barres de sécurité
KR101865197B1 (ko) * 2011-11-29 2018-07-16 삼성전자주식회사 휴대용 단말기에서 코드 이미지를 획득하기 위한 장치 및 방법
CN102708349B (zh) * 2012-05-11 2014-11-05 深圳市天朗时代科技有限公司 一种矩阵式二维码的解码方法
EP2711866A1 (de) * 2012-09-21 2014-03-26 Biomerieux Verfahren und System zur Erkennung eines 2D-Strichcodes in einem kreisförmigen Etikett
US9171203B2 (en) 2013-09-10 2015-10-27 Dropbox, Inc. Scanbox
JP6393226B2 (ja) * 2015-03-31 2018-09-19 日本電産サンキョー株式会社 スタック型バーコード読取装置およびスタック型バーコード読取方法
US9760819B2 (en) 2015-12-14 2017-09-12 International Business Machines Corporation Encoding and decoding data in two-dimensional symbology
EP3199953B1 (de) * 2016-02-01 2021-03-24 Roche Diagniostics GmbH Verfahren zum einlernen der positionierung eines strichcodescanners und vorrichtung zur verarbeitung einer probe oder eines reagens
CN106156684B (zh) * 2016-06-30 2019-01-18 南京理工大学 一种二维码识别方法及装置
CN111291584B (zh) 2016-07-22 2023-05-02 创新先进技术有限公司 识别二维码位置的方法及其系统
US9928632B1 (en) * 2017-06-14 2018-03-27 Capital One Services, Llc Systems and methods for generating and reading intrinsic matrixed bar codes
CN107590522B (zh) * 2017-08-23 2020-08-21 阿里巴巴集团控股有限公司 一种识别码生成及识别的方法及装置
US10802498B2 (en) 2018-05-30 2020-10-13 Datalogic Ip Tech S.R.L. Target direction estimation using centroid follower
CN110332897A (zh) * 2019-08-08 2019-10-15 珠海博明视觉科技有限公司 一种提高系统对小圆测量精度的补偿模型

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4889367A (en) * 1988-10-07 1989-12-26 Frito-Lay, Inc. Multi-readable information system
US5189292A (en) * 1990-10-30 1993-02-23 Omniplanar, Inc. Finder pattern for optically encoded machine readable symbols
JP2764224B2 (ja) 1993-03-01 1998-06-11 ユナイテツド パーセル サービス オブ アメリカ インコーポレイテツド 補足目標の位置を求める方法および装置
US5591956A (en) * 1995-05-15 1997-01-07 Welch Allyn, Inc. Two dimensional data encoding structure and symbology for use with optical readers
GB9408626D0 (en) * 1994-04-29 1994-06-22 Electronic Automation Ltd Machine readable binary code
EP0764307B1 (de) 1994-06-07 1998-08-12 United Parcel Service Of America, Inc. Verfahren und gerät zu dekodierung von zweidimensionalen zeichen im raumbereich
US5515447A (en) 1994-06-07 1996-05-07 United Parcel Service Of America, Inc. Method and apparatus for locating an acquisition target in two-dimensional images by detecting symmetry in two different directions
JP3448120B2 (ja) * 1994-12-27 2003-09-16 シャープ株式会社 デジタル情報記録担体
US5637849A (en) * 1995-05-31 1997-06-10 Metanetics Corporation Maxicode data extraction using spatial domain features
US5786583A (en) 1996-02-16 1998-07-28 Intermec Corporation Method and apparatus for locating and decoding machine-readable symbols
US5742041A (en) * 1996-05-29 1998-04-21 Intermec Corporation Method and apparatus for locating and decoding machine-readable symbols, including data matrix symbols
US5761219A (en) * 1996-07-12 1998-06-02 Intermec Technologies Corporation Error correction for PDF417 and other machine-readable symbologies
EP0917081B1 (de) * 1997-11-17 2001-10-10 DATALOGIC S.p.A. Maxicode-Lokalisierungsverfahren
US6267296B1 (en) * 1998-05-12 2001-07-31 Denso Corporation Two-dimensional code and method of optically reading the same
TW434520B (en) * 1998-06-30 2001-05-16 Sony Corp Two-dimensional code recognition processing method, device therefor and medium
US6412695B1 (en) * 2000-04-07 2002-07-02 Motorola, Inc. Optical code and delineator apparatus and method

Also Published As

Publication number Publication date
EP1143372A2 (de) 2001-10-10
DE60118051D1 (de) 2006-05-11
HK1043852A1 (zh) 2002-11-08
KR20010098464A (ko) 2001-11-08
ATE321310T1 (de) 2006-04-15
US20020020747A1 (en) 2002-02-21
ES2256106T3 (es) 2006-07-16
CN1334544A (zh) 2002-02-06
KR100579356B1 (ko) 2006-05-12
EP1143372A3 (de) 2002-04-24
US6604682B2 (en) 2003-08-12
EP1143372B1 (de) 2006-03-22

Similar Documents

Publication Publication Date Title
DE60118051T2 (de) Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium
US5814801A (en) Maxicode data extraction using spatial domain features exclusive of fourier type domain transfer processing
DE69930536T2 (de) Schräglage-verarbeitung für raster-abtast-bilder
DE69835358T2 (de) Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes
EP2417561B1 (de) Zweidimensionaler symbolcode und verfahren zum lesen des symbolcodes
DE102015219541A1 (de) Dekodieren von strichcodes
EP2100258B1 (de) Vorrichtung, verfahren und computerprogramm zum identifizieren eines verkehrszeichens in einem bild
DE69625583T2 (de) Datenformleser
DE69332771T2 (de) Verfahren und Vorrichtung zum Dekodieren von strichkodierten Symbolen
DE102007028866B4 (de) Vorrichtung zum optischen Lesen eines graphischen Symbols, das aus einer Mehrzahl von optisch erkennbaren Informationseinheitsabschnitten aufgebaut ist
US5506918A (en) Document skew detection/control system for printed document images containing a mixture of pure text lines and non-text portions
EP1469420B1 (de) Verfahren, System und Programm zur Rekonstruktion eines Bar Codes
EP0669593A2 (de) Erkennungsverfahren für eine zweidimensionale Kodierung
DE19722439A1 (de) Verfahren und Vorrichtung zur Auffindung und Dekodierung maschinenlesbarer Symbole einschließlich Datenmatrixsymbolen
US9014479B2 (en) Method and system for text-image orientation
DE19960555A1 (de) Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes
DE602004011145T2 (de) Vorrichtung und Verfahren zum Lesen von optischen Informationen
US20140003723A1 (en) Text Detection Devices and Text Detection Methods
DE60300476T2 (de) System zum Erkennen eines Barcodes
DE19705747A1 (de) Verfahren und Vorrichtung zur Ermittlung und Decodierung von maschinenlesbaren Symbolen
DE19622199B4 (de) Lesegerät für ein Datensymbol
US9858506B2 (en) Methods and systems for processing of images of mathematical expressions
CN113177959B (zh) 一种快速运动过程中qr码实时提取方法
JPH06101049B2 (ja) 文字列検出方法
CN109101854A (zh) 一种多条形码定位方法

Legal Events

Date Code Title Description
8364 No opposition during term of opposition