DE69728482T2 - Zweidimensionaler Codeleser - Google Patents

Zweidimensionaler Codeleser Download PDF

Info

Publication number
DE69728482T2
DE69728482T2 DE69728482T DE69728482T DE69728482T2 DE 69728482 T2 DE69728482 T2 DE 69728482T2 DE 69728482 T DE69728482 T DE 69728482T DE 69728482 T DE69728482 T DE 69728482T DE 69728482 T2 DE69728482 T2 DE 69728482T2
Authority
DE
Germany
Prior art keywords
edge
dimensional code
recognized
edges
gradient
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
DE69728482T
Other languages
English (en)
Other versions
DE69728482D1 (de
Inventor
Tetsuya Mino-shi Kannon
Yoshihiro Neyagawa-shi Kojima
Katsushi Kyoto-shi Inoue
Keiichi Higashi Osaka-shi Kobayashi
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.)
Panasonic Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of DE69728482D1 publication Critical patent/DE69728482D1/de
Application granted granted Critical
Publication of DE69728482T2 publication Critical patent/DE69728482T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • G06K7/1093Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices sensing, after transfer of the image of the data-field to an intermediate store, e.g. storage with cathode ray tube
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1478Methods for optical code recognition the method including quality enhancement steps adapting the threshold for pixels in a CMOS or CCD pixel sensor for black and white recognition

Landscapes

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

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft einen zweidimensionalen Codeleser zum Lesen von zweidimensionalem Code.
  • Eine herkömmliche Einrichtung zum Lesen von zweidimensionalem Code verwendet einen CCD-Flächen-Sensor als Sensor und führt die Verarbeitungsschritte in folgender Reihenfolge durch: (1) Binarisieren der analogen Bildinformationen vom CCD-Flächen-Sensor, (2) Erkennen von zweidimensionalem Code aus den binarisierten Bilddaten und (3) Auslesen von Zellendaten des erkannten zweidimensionalen Codes. Diese drei Schritte (1), (2), (3), auf die sich der vorliegende Text später noch detaillierter bezieht, werden im veröffentlichten japanischen Patent Nr. Hei 7-234915 beschrieben. Aus diesem Schriftstück, das EP0669593 entspricht, ist ein Leser für zweidimensionalen Code bekannt, der umfasst: eine Umwandlungseinrichtung zum Empfangen von Licht, das von einem zweidimensionalen Code reflektiert wird, und zum Umwandeln des Lichts in ein Bildsignal; eine Speichereinrichtung; eine Codeerkennungseinrichtung zum Bereitstellen eines erkannten zweidimensionalen Codes aus dem Bildspeicher; und eine Binarisierungseinrichtung zum Bilden von Binärwerten. Im Gegensatz zur vorliegenden Erfindung bildet das bekannte Gerät zuerst Binärwerte für alle Pixel des abgetasteten Bildes und sucht erst anschließend in dem binarisierten Datensatz nach einem Code.
  • Aus US5278400 ist eine Mehrfach-Schwellenwert-Codierung für maschinenlesbaren Code bekannt. Aus EP0287913 ist ein optischer Codeleser bekannt. Aus EP0389124 ist eine adaptive Schwellenwert-Technik bekannt. Aus US5464974 sind ein dynamisch veränderbarer, maschinenlesbarer Binärcode und ein Verfahren zum Lesen und Erzeugen desselben bekannt. Aus US5136145 ist ein Symbolleser bekannt. Ein Verfahren und ein Gerät zum Lesen eines optischen zweidimensionalen Codes sind aus EP0672994 bekannt.
  • Folgende drei Verfahren werden in EP0669593 zum Ausführen von obigem Schritt (1) verwendet:
  • Beim ersten Binarisierungsverfahren wird zum Binarisieren ein vom CCD-Flächen-Sensor gesendetes Bildsignal mit einem gegebenen Schwellenwert verglichen. 26(b) zeigt ein Beispiel einer Binarisierungsschaltung mit einem festen Schwellenwert. Die analoge Signalspannungsausgabe des CCD-Flächen-Sensors wird an Eingang Vin eingegeben und mit Spannung E0 verglichen. Falls die analoge Signalspannung größer ist als die Spannung E0, wird ein Signal von 1 ausgegeben; ist die analoge Signalspannung niedriger als die Spannung E0, so wird ein Signal von 0 ausgegeben. In 26(b) wird der Teil der Wellenform Vin, der höher liegt als der Wert der Spannung E0, gleich 0 (weiß), und der Teil der Wellenform Vin, der kleiner ist als der Wert der Spannung E0, wird 1 (schwarz).
  • Das zweite Binarisierungsverfahren vergleicht zum Binarisieren ein Bildsignal mit einem schwebenden Schwellenwert, der sich aus einem kurz zuvor existenten Bildsignal ergibt. 26(c) zeigt ein Beispiel einer Binarisierungsschaltung mit einem schwebenden Schwellenwert. Die Binarisierungsschaltung verwendet das von dem niederfrequenten, filternden (integrierenden) Eingangssignal Vin bereit gestellte EV als Schwellenwert. Der Schwellenwert EV wird zu EV aus 26(a). Wenn Vin größer ist als Ev, wird 0 (weiß) ausgegeben; ist Vin kleiner als EV, wird 1 (schwarz) ausgegeben.
  • Das dritte Binarisierungsverfahren ist ein Verfahren, bei dem ein analoges Ausgangsbildsignal vom CCD-Flächen-Sensor in eine digitale Form umgewandelt wird, ein 1-Schirm-Bildsignal in einem Bildspeicher gespeichert wird und zum Binarisieren die Information einer Graustufenverteilung des Bildes benutzt wird. 23 ist ein Beispiel dieses Binarisierungsverfahrens. Zuerst wird in Schritt 51 der gesamte Schirm des im Bildspeicher gespeicherten Bildes einer Dunkelkorrektur (Korrektur von Luminanzunregelmäßigkeiten) unterzogen, um die Auswirkungen von Luminanzunregelmäßigkeiten, etc. zu entfernen. Für die Durchführung der Dunkelkorrektur existiert beispielsweise ein Verfahren zum Entfernen einer niederfrequenten Komponente aus dem Bild mittels eines homomorphen Filters. Anschließend wird ein Graustufen-Verteilungshistogramm des Bildes vorbereitet, und in Schritt 52 wird durch ein 2-Moden-Verfahren ein Schwellenwert festgelegt.
  • In dem mit (2) gekennzeichneten Schritt wird nach der Binarisierung zweidimensionaler Code erkannt. Zweidimensionalen Code zu entdecken bedeutet, die Position des zweidimensionalen Codes zu erkennen. Zur Ermittlung der Position von zweidimensionalem Code wird häufig ein Verfahren benutzt, das Kettencodierung verwendet, wie etwa jenes, das in der japanischen Patentveröffentlichung Nr. Hei 1-35385 enthüllt wurde.
  • Bei der Kettencodierung, einem Verfahren, das die Umrisse einer Figur findet, wird der Grenze zwischen schwarzen Pixeln 241 und weißen Pixeln 242 (243) nachgelaufen, die Umrisse der Figur werden gefunden und der zweidimensionale Code wird erkannt.
  • Im veröffentlichten japanischen Patent Nr. Hei 7-234915 wird als Erkennungsverfahren für einen zweidimensionalen Code, der mindestens zwei Außenlinien besitzt, die gerade Linien sind, (wie etwa der zweidimensionale Code 20) im Speziellen ein Verfahren verwendet, das die Hough-Transformation benutzt.
  • Die Hough-Transformation ist ein Verfahren zum globalen Extrahieren von Punkten, die in einem Bild auf einer Linie angeordnet sind, und ist als effektives Linienerkennungsverfahren bekannt. Im oben erwähnten, veröffentlichten japanischen Patent Nr. Hei 7-234915 wird die Hough-Transformation dazu verwendet, zwei Sätze von Linien zu erkennen, wodurch wiederum der zweidimensionale Code erkannt wird.
  • Mit Verweis auf die 25(a) und (b) wird nun die Linienerkennung mit Hilfe der Hough-Transformation besprochen. Um einen Kantenpunkt zu finden, wird der Bildspeicher in Längs- und Querrichtung mit einem vorgegebenen Zeilenabstand abgetastet. Eine Sinuskurve, die den Koordinaten des gefundenen Kantenpunkts entspricht, wird in die θ (Winkel) – ρ (Abstand) – Ebene eingezeichnet. Die Kantenpunkte 251, 252, 253 und 254 werden beispielsweise in die Kurven 256, 257, 258 und 259 in der θ-ρ-Ebene umgewandelt. Sind die Kantenpunkte in einer Linie angeordnet wie die Kantenpunkte 251, 252 und 253, so schneiden sich die drei Sinuskurven in einem Punkt, wie es in Punkt 260 in 25(b) zu sehen ist. Tatsächlich wird in der θ-ρ-Ebene eine Quantisierung durchgeführt, und allen Punkten (θ, ρ) werden der Reihe nach Stimmen entsprechend der Anzahl der Sinuskurven gegeben, die durch den jeweiligen Punkt verlaufen.
  • Indem solche Punkte, denen wie Punkt 260 eine größere Anzahl an Stimmen gegeben wurden, herausgefiltert werden, kann schließlich die Linie 255 erkannt werden.
  • Nachdem der zweidimensionale Code erkannt wurde, werden in oben erwähntem Schritt (3) die Positionen der Mittelpunkte von jeder Zelle des zweidimensionalen Codes bestimmt und Binärdaten der Mittelpunkte von jeder Zelle ausgelesen. Da die Binarisierung bereits in Schritt (1) durchgeführt wurde, werden zu diesem Zeitpunkt einfach die Graustufen der Pixel an den Mittelpunkten jeder Zelle ausgelesen, wodurch die Binärdaten der Zelle extrahiert werden können.
  • Die Binarisierungsverfahren in den herkömmlichen Beispielen haben folgende Probleme:
  • Beim ersten Binarisierungsverfahren, das einen festen Schwellenwert verwendet, kann eine genaue Binarisierung durchgeführt werden, wenn der Kontrast des Bildes gut ist und keine Luminanzunregelmäßigkeiten, etc. existieren; ist der Kontrast schwach oder werden durch die Anwendung von künstlicher Beleuchtung Luminanzunregelmäßigkeiten hervorgerufen, kann keine korrekte Binarisierung durchgeführt werden. Dehnen sich feine Linien oder kleine Punkte über die lichtempfangenden Elemente des Sensors aus, so werden diese häufig ignoriert, da keine hinreichende Ausgabe erzeugt wird (siehe 221 in 26(a)).
  • Das zweite Binarisierungsverfahren, das unter Verwendung eines schwebenden Schwellenwerts binarisiert, löst die Probleme des ersten Binarisierungsverfahrens, wie etwa Luminanzunregelmäßigkeiten und den Verlust von feinen Linien, etc. Für eine Wellenform, bei der ein schwarzes Signal mit geringerer Stärke als E0 aufgrund von Luminanzunregelmäßigkeiten ständig unter dem Wert von E0 bleibt, kann jedoch selbst beim zweiten Binarisierungsverfahren keine normale Binarisierung durchgeführt werden. Das bedeutet, dass ein Gebiet, in dem sich eine schwarze Fläche in der Richtung längs zum Bildsignal weiter ausbreitet, und in dem Luminanzunregelmäßigkeiten existieren, nicht korrekt binarisiert werden kann.
  • Das dritte Binarisierungsverfahren löst die Probleme des ersten und des zweiten Binarisierungsverfahrens. Da die gesamte Bildinformation jedoch auf ein Mal im Bildspeicher gespeichert wird, und die Dunkelkorrektur sowie der Binarisierungsprozess an der gesamten Bildinformation durchgeführt werden, wird hierfür eine sehr lange Verarbeitungszeit beansprucht.
  • Ein herkömmlicher Erkennungsprozess für zweidimensionalen Code beinhaltet folgende Probleme:
  • Wenn wie in 24(b) eine Figur mit einem Fehler 244 eingelesen wird, wird beim Erkennungsverfahren mit Hilfe der oben beschriebenen Kettencodierung der fehlerhafte Teil als Kontur erkannt (in 24 mit einem Pfeil 245 angezeigt); es wird also eine Kontur erkannt, die sich von der Originalkontur unterscheidet, und der zweidimensionale Code kann nicht korrekt ermittelt werden.
  • Beim oben beschriebenen Erkennungsverfahren mit Hilfe der Hough-Transformation wird – anders als beim Erkennungsverfahren unter Verwendung der Kettencodierung – wie oben beschrieben eine globale Linienerkennung durchgeführt; es wird also eine Linienerkennung ausgeführt, ohne dass sich die Auswirkungen eines Fehlers, etc. bemerkbar machen. Um eine Linienerkennung mit Hilfe der Hough-Transformation auszuführen, muss jedoch eine große Anzahl an Kantenpunkten in Sinuskurven umgewandelt werden, weshalb der Rechenaufwand steigt und mehr Verarbeitungszeit benötigt wird.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Daher ist es ein Ziel der Erfindung, einen Leser für zweidimensionalen Code bereit zu stellen, der einen zweidimensionalen Code mit einem charakteristischen Muster, das zur Erkennung aus geraden Liniensegmenten aufgebaut ist, schnell und genau erkennen sowie Zellen mit hoher Geschwindigkeit und exakt binarisieren kann.
  • Die vorliegende Erfindung stellt einen Leser für zweidimensionalen Code bereit, wie er in den Ansprüchen definiert ist.
  • Nur wenn der Leser für zweidimensionalen Code ein Gebiet mit zweidimensionalem Code erkennt, binarisiert er anschließend auch die Werte der vorherbestimmten Pixel der Zellen des von der Codeerkennungseinrichtung erkannten Gebiets mit zweidimensiona lem Code. Die Anzahl der binarisierten Pixel kann somit drastisch reduziert werden, so dass wiederum die für den Binarisierungsprozess benötigte Zeit extrem verkürzt werden kann.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • In den begleitenden Zeichnungen ist:
  • 1 ein Flussdiagramm einer Zellenbinarisierungseinrichtung;
  • 2 eine Illustration eines Pixels in der Mitte einer Zelle;
  • 3 eine Illustration eines kleinen Bereichs, bestehend aus 2 × 2 Pixeln;
  • 4(a) eine erste Erläuterung der Art, wie ein Schwellenwert festgelegt wird, und 4(b) eine zweite Erläuterung der Art, wie ein Schwellenwert festgelegt wird;
  • 5 ein Flussdiagramm des Zellenbinarisierungsprozesses;
  • 6 ein Blockdiagramm eines Berührungslesers für zweidimensionalen Code;
  • 7 ein Arbeitsflussdiagramm des Lesers für zweidimensionalen Code aus 6;
  • 8 eine Illustration, die eine zweidimensionale Codekennung (Datenmatrix) veranschaulicht;
  • 9 eine Illustration, die eine zweidimensionale Codekennung (Code 1) veranschaulicht;
  • 10 ein Flussdiagramm zur Erklärung einer Erkennungseinrichtung des Lesers für zweidimensionalen Code;
  • 11(a) eine Illustration, die eine Abtastzeile veranschaulicht, wie sie zur Kantenpunkterkennung benutzt wird, 11(b) eine Illustration, die Graustufen auf der Ab tastzeile veranschaulicht; und 11(c) eine Illustration, die Differenzwerte veranschaulicht;
  • 12 eine erste Illustration zur Erklärung einer Kantenpunktgradienten-Bestimmungseinrichtung;
  • 13 eine Illustration, die ein Beispiel zeigt, bei dem kein Kantenpunktgradient bestimmt werden kann;
  • 14 eine zweite Illustration zur Erklärung einer Kantenpunktgradienten-Bestimmungseinrichtung;
  • 15 eine Illustration zur Erklärung der Linienerkennung;
  • 16 ein Flussdiagramm zur Erklärung der Erkennungseinrichtung des Lesers für zweidimensionalen Code;
  • 17 eine Illustration zur Erklärung der Erkennung von charakteristischen Kantenmustern;
  • 18 eine Illustration zur Erklärung der Erkennung von Mittenmustergradienten;
  • 19 eine Erläuterung des Nachlaufens von Kanten;
  • 20 eine Illustration zur Veranschaulichung eines verschmutzten Mittenmusters;
  • 21 eine Veranschaulichung des Abtastens;
  • 22 eine Erläuterung der Art, wie vier Eckpunkte des zweidimensionalen Codes 20 gefunden werden;
  • 23 ein Flussdiagramm eines herkömmlichen Binarisierungsverfahrens unter Verwendung von Software;
  • 24(a) eine Erläuterung der herkömmlichen Kettencodierung und 24(b) eine Illustration, die die Tatsache veranschaulicht, dass die herkömmliche Kettencodierung nicht normal gelesen werden kann;
  • 25(a) eine erste Illustration der herkömmlichen Hough-Transformation und 25(b) eine zweite Illustration der herkömmlichen Hough-Transformation; und
  • 26(a) eine Veranschaulichung herkömmlicher binarisierter Schwellenwerte, 26(b) ein Diagramm, das eine Binarisierungsschaltung mit einem festen Schwellenwert zeigt, und 26(c) ein Diagramm, das eine Binarisierungsschaltung mit einem schwebenden Schwellenwert zeigt.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Mit Verweis auf 6 wird der Aufbau eines Berührungslesers für zweidimensionalen Code beschrieben.
  • Der Berührungsleser für zweidimensionalen Code benutzt einen Flächensensor 9 als Sensor, einen A/D-Wandler 11 als Analog-Digital-Wandlereinrichtung und eine Hauptschaltung 10 als Arbeitseinrichtung.
  • Ein Gehäuse 1 besitzt an einer Ausbuchtung ein Lesefenster 2. An der Oberseite 3 des Gehäuses ist eine Lichtquelle 4 angebracht, die beispielsweise aus einer Vielzahl von Leuchtdioden („light emitting diodes" – LEDs) bestehen kann. Das Beleuchtungslicht von Lichtquelle 4 wird an einem Reflexionsspiegel 5 reflektiert, durch das Lesefenster 2 ins Äußere des Gehäuses 1 ausgegeben und auf dem auf einem Trägermedium 6 aufgedruckten, zweidimensionalen Code 7 unregelmäßig reflektiert. Anschließend fällt das unregelmäßig reflektierte Licht wieder durch das Lesefenster 2 ins Gehäuse 1 ein und wird durch eine Linse 8 auf den Flächensensor 9 projiziert.
  • Wenn der Flächensensor 9 von der Hauptschaltung 10 ein Leseaufforderungssignal empfängt, wandelt er die durch die Linse 8 projizierte zweidimensionale Information in ein analoges Bildsignal um und gibt das analoge Bildsignal aus. Das von Flächensensor 9 ausgegebene Bildsignal wird von A/D-Wandler 11 in digitale Bildinformationen mit ei ner Abstufung von 256 umgewandelt. Diese digitale Bildinformation wird in einem Bildspeicher 12 gespeichert. Die Hauptschaltung 10 verarbeitet die in dem Bildspeicher gespeicherte Bildinformation basierend auf einem Programm, decodiert die in dem zweidimensionalem Code codierte Information und überträgt Daten zu einem Leitrechner 13, etc.
  • Mit Verweis auf 7 wird der Fluss der Bearbeitungsschritte der Hauptschaltung beschrieben.
  • In Schritt 1 (Leseprozess) gibt die Hauptschaltung 10 ein Leseaufforderungssignal an den Flächensensor 9 aus, der daraufhin projizierte Bildinformationen als Bildsignal ausgibt. Das Ausgangsbildsignal wird nach dem Durchlaufen von A/D-Wandler 11 in Bildspeicher 12 abgespeichert. Nachdem alle Bildinformationen vom Flächensensor 9 ausgegeben wurden, wird vom Flächensensor 9 ein Leseprozessbeendigungssignal an die Hauptschaltung ausgegeben.
  • Wenn die Hauptschaltung das Leseprozessbeendigungssignal erhält, führt sie Schritt 2 (Erkennungsprozess) aus. Während des Erkennungsprozesses liest Hauptschaltung 11 einen Teil des Bildspeichers 12 ein und ermittelt die Position und die Orientierung des zweidimensionalen Codes sowie die Anzahl der Zellen, die den zweidimensionalen Code bilden.
  • War der Erkennungsprozess erfolgreich, führt die Hauptschaltung Schritt 3 (Zellenbinarisierungsprozess) aus. Während des Zellenbinarisierungsprozesses ermittelt die Hauptschaltung aus der im Erkennungsprozess ermittelten Position und Orientierung des zweidimensionalen Codes sowie der Anzahl der Zellen, die den zweidimensionalen Code bilden, die Position der Zellen und greift auf den Bildspeicher zu, um Binärdaten der Zellen zu finden.
  • Wenn die Binärdaten der Zellen im Zellenbinarisierungsprozess ermittelt werden konnten, wandelt die Hauptschaltung anschließend in Schritt 4 (Datenumwandlungsprozess) basierend auf einer bestimmten Regel die Binärdaten in eine ASCII-Code-Zeichenkette um. Falls ein Fehler in den Binärdaten einen erlaubten Fehler übersteigt und die Umwandlung in den ASCII-Code fehlerhaft wird, kehrt die Hauptschaltung zu diesem Zeit punkt zu Schritt 2 (Erkennungsprozess) zurück und ermittelt einen beliebigen anderen zweidimensionalen Code. Wenn es unmöglich wird, im Bildspeicher einen zweidimensionalen Code zu erkennen, kehrt die Hauptschaltung zu Schritt 1 (Leseprozess) zurück.
  • War der Datenumwandlungsprozess in Schritt 4 erfolgreich, überträgt die Hauptschaltung in Schritt 5 die ASCII-Code-Zeichenkette und kehrt zu Schritt 1 (Leseprozess) zurück.
  • Als nächstes wird der zweidimensionale Code besprochen, wie er durch die Leser für zweidimensionalen Code in den einzelnen Ausführungsformen gelesen wird.
  • Der zweidimensionale Code 20 (eine sogenannte Datenmatrix) aus 8 besteht aus einem L-förmigen Muster 21, einer Taktzelle 22 und einem Datenbereich 23. Das L-förmige Muster 21 ist ein L-förmiges Muster, das sich auf zwei Außenseiten des zweidimensionalen Strichcodes 20 befindet. Die Taktzelle 22 befindet sich auf den anderen beiden Seiten des zweidimensionalen Codes als das L-förmige Muster. Das L-förmige Muster besteht aus durchgängig schwarzen Zellen und die Taktzelle aus einem Muster aus sich abwechselnden schwarzen und weißen Zellen. Der Datenbereich 23 wird vom L-förmigen Muster 21 sowie dem Taktzellenmuster 22 eingeschlossen und umfasst Zellen, die wie in einem Gitter angeordnet sind. Weiße und schwarze Zellen innerhalb des Datenbereichs stellen Daten dar, die in dem zweidimensionalen Code codiert sind.
  • Der in 9 gezeigte zweidimensionale Code 24 (CODE 1) besteht aus einem Mittenmuster 25, vertikalen Bezugsmustern 26 und Datenbereichen 27.
  • Das Mittenmuster 25, das sich in der Mitte des zweidimensionalen Codes 24 befindet, belegt einen rechteckigen Bereich, der sich in der horizontalen Richtung über die Länge des zweidimensionalen Codes 24 erstreckt, und umfasst ein Muster aus sich abwechselnden, in horizontaler Richtung zueinander parallelen Strichen und Zwischenräumen. Ein in der vertikalen Richtung kürzerer Strich berührt die Enden einiger der horizontalen Striche. Die Striche und Zwischenräume haben fast die selbe Breite, können sich allerdings in der Breite abhängig von den Druckbedingungen, etc. ein wenig unterscheiden. Die Anzahl der vertikalen und horizontalen Zellen des zweidimensionalen Codes wird aus der Anzahl der Striche des Mittelmusters 25 sowie der Länge der vertikal kurzen Striche bestimmt. Ein Vielzahl an vertikalen Bezugsmustern 26 befindet sich an bestimmten vertikalen Positionen des zweidimensionalen Codes 24, und eines der vertikalen Bezugsmuster 26 besteht aus einem Strich-Zwischenraum-Paar. Die Datenbereiche 27 befinden sich über und unter dem Mittenmuster 25, und die schwarzen und weißen Zellen stellen Daten dar, die in dem zweidimensionalen Code 24 codiert sind.
  • Erstes Beispiel:
  • 10 ist ein Flussdiagramm zur Erklärung einer Erkennungseinrichtung des Lesers für zweidimensionalen Code.
  • Die Erkennungseinrichtung des Lesers für zweidimensionalen Code im ersten Beispiel der Erfindung wird unter Verwendung des zweidimensionalen Codes 20 aus 8 besprochen.
  • Als erstes wird in Schritt 31 zur Erkennung von Kantenpunkten ein zweidimensionaler Bildbereich in Längs- und Querrichtung abgetastet. Die Abtastzeilen besitzen einen vorgegebenen Zwischenraum, weshalb auf den Bildspeicher weniger oft zugegriffen und die Verarbeitungszeit verkürzt wird.
  • Mit Verweis auf 11 wird ein Verfahren zum Erkennen von Kantenpunkten besprochen. Ein 512 × 512-Pixel Bild wird mit 15 Zeilen in Längs- und 15 Zeilen in Querrichtung sowie einer Pixelbreite von 32 abgetastet. Die Graustufen der Pixel auf jeder Abtastzeile werden der Reihe nach eingelesen und in einem Speicher in der Hauptschaltung gespeichert. Die Kantenpunkte werden aus den gespeicherten Graustufen ermittelt.
  • Nun wird das Verfahren zum Erkennen von Kantenpunkten besprochen:
  • Die Graustufen der Pixel auf Abtastlinie A in 11(a) werden der Reihe nach in einem Vektor a[i] abgespeichert. Die Graustufen nehmen Werte in einer Abstufung von 256 ein (0–255); je kleiner der Wert, desto dunkler ist das Pixel und je größer der Wert, desto heller ist das Pixel. 11(b) stellt die Graustufen a[i] dar.
  • Der Wert von i repräsentiert die Nummer eines Elements des Vektors a[i], und Startpixel B auf der Abtastlinie entspricht i = 0. Aus den Graustufen a[i] wird der Differenzwert d[i] ermittelt aus: d[i] = a[i + 1] – a[i – 1], wobei i = 1, 2, ...
  • Obwohl der Differenzwert in dieser Ausführungsform aus einem 2-Pixel-Intervall gebildet wird, kann das Intervall ebenso gut aus einem Pixel, drei Pixeln oder mehr Pixeln bestehen.
  • Aus dem so ermittelten Differenzwert d[i] resultiert der in 11(c) gezeigte Graph. Anschließend werden das i, bei dem der Differenzwert d[i] maximal wird, sowie jenes i, bei dem der Differenzwert d[i] minimal wird, ermittelt, wodurch die Kantenpunkte auf der Abtastzeile gefunden werden.
  • Die Punkte M und O, bei denen der Differenzwert d[i] in 11(c) einen Maximalwert annimmt, entsprechen den Kantenpunkten D und F aus 11(a). Die Punkte L und N, bei denen der Differenzwert d[i] in 11(c) einen Minimalwert annimmt, entsprechen den Kantenpunkten C und E aus 11(a). An dem Punkt, an dem der Differenzwert ein Maximum erreicht, beginnt eine Graustufenzunahme, d. h. der Punkt ist ein solcher Kantenpunkt, an dem in der Abtastrichtung ein Wechsel von einer schwarzen Zelle oder einem Strich hin zu einer weißen Zelle oder einem Zwischenraum stattfindet, was in 11(a) mit einem schwarzen Punkt • eingezeichnet ist. An dem Punkt, an dem der Differenzwert ein Minimum erreicht, beginnt eine Graustufenabnahme, d. h. der Punkt ist ein solcher Kantenpunkt, an dem in der Abtastrichtung ein Wechsel von einer weißen Zelle oder einem Zwischenraum hin zu einer schwarzen Zelle oder einem Strich stattfindet, was in 11(a) mit einem weißen Punkt 0 eingezeichnet ist.
  • Die Maximal- und Minimalwerte des Differenzwerts d[i] werden somit aus den Graustufen auf den Abtastzeilen ermittelt, wodurch die Koordinaten von zwei Typen von Kantenpunkten gefunden werden.
  • Als nächstes wird für jeden der in Schritt 31 ermittelten Kantenpunkten bestimmt, ob dieser einen lokalen Gradienten besitzt oder nicht, und falls der Kantenpunkt einen lokalen Gradienten besitzt, wird dieser Gradient in Schritt 32 ermittelt.
  • Um zu bestimmen, ob ein Kantenpunkt a einen lokalen Gradienten besitzt oder nicht, werden zwei Kantenpunkte des selben Typs in der näheren Umgebung von Kantenpunkt a gesucht, für jeden Punkt wird die Richtung vom Kantenpunkt a aus ermittelt und es wird bestimmt, ob die Richtung die selbe ist oder die in entgegengesetzter Richtung. Das Verfahren zum Erkennen des lokalen Gradienten des Kantenpunkts wird mit Verweis auf 12 besprochen.
  • In Schritt 31 wird der Kantenpunkt mit zunehmender Kante F ermittelt. Die kurzen Abtastzeilen Q und R, die parallel liegen zur Abtastzeile P, werden links und rechts von Kantenpunkt F entlang geleitet, und auf diesen Abtastzeilen Q und R werden die Kantenpunkte mit zunehmender Kante S und T erkannt. Die Start- und Endpunkte der Abtastzeile Q sind die bestimmten Punkte VV und WW, und jene der Abtastzeile R sind die bestimmten Punkte XX und YY. So können die Kantenpunkte S und T erkannt werden, wenn der Kantenpunkt F einen Gradienten besitzt, der mit der Abtastzeile P einen Winkel von 45–135 Grad bildet. Können die Kantenpunkte auf diese Weise ermittelt werden, werden die Vektoren c und d mit dem Kantenpunkt F als Startpunkt und den Kantenpunkten S beziehungsweise T als Endpunkt gebildet, und es wird überprüft, ob die Richtungskomponenten der zwei Vektoren c und d gleich sind. Wenn die Richtungskomponenten fast die selben sind, wird festgelegt, dass der Kantenpunkt F einen lokalen Gradienten besitzt. Der Durchschnittswert der Richtungskomponenten der zwei Vektoren wird als Gradient des Kantenpunkts F angenommen.
  • 13 zeigt ein Beispiel, bei dem der Gradient eines Kantenpunkts nicht ermittelt werden kann. Die Abtastzeilen V und W werden in der näheren Umgebung des Kantenpunkts U entlang geleitet. Auf der Abtastzeile W kann Kantenpunkt X des selben Typs erkannt werden. Auf der Abtastzeile V kann jedoch kein Kantenpunkt erkannt werden. In diesem Fall wird die Kantenpunkterkennung fehlerhaft. Wenn zwei Kantenpunkte des selben Typs auf den zwei Abtastzeilen erkannt werden können, wird kein Kantenpunktgradient ermittelt – es sei denn, die Vektorrichtungen sind die selben. Da ausschließlich Kantenpunkte erkannt werden, deren Gradienten ermittelt werden können, wird zum ei nen die fehlerhafte Erkennung von Segmenten mit geraden Linien verringert und es kann zum anderen die Verarbeitungszeit verkürzt werden.
  • Wie in 14 gezeigt wird, werden drei oder mehr Kantenpunkte des selben Typs in der näheren Umgebung von Kantenpunkt F erkannt und Richtungsvektoren der Kantenpunkte ermittelt. Wenn Abweichungen in den Richtungsvektorgradienten einen vorgegebenen Wert annehmen oder unter diesem liegen, wird angenommen, dass der Kantenpunkt einen Gradienten besitzt, und ein Durchschnittswert könnte ermittelt werden, um den Kantenpunktgradienten zu bestimmen.
  • In Schritt 32 wird die Bestimmung des Kantenpunktgradienten für alle Kantenpunkte durchgeführt.
  • Als nächstes werden in Schritt 33 in jedem vorgegebenen Intervall in der Richtung des Kantenpunktgradienten eines jeden Kantenpunkts, dessen Gradient in Schritt 32 bestimmt wurde, Kantenpunkte des selben Typs ermittelt.
  • In 15 wird der Gradient des Kantenpunkts F ermittelt. Die Kantenpunkte AA, BB und CC werden in Richtung des gefundenen Gradienten ermittelt. Wenn ein Kante verschmutzt ist, wie etwa an Punkt DD, und der Kantenpunkt DD nicht ermittelt werden kann, wird in der selben Richtung von Kantenpunkt CC aus mit einem doppelten Intervall ein Kantenpunkt gefunden, und Kantenpunkt EE wird ermittelt. Wird der Kantenpunkt EE nicht erkannt, wird ein Kantenpunkt mit einem dreifachen Intervall ermittelt. Wird kein Kantenpunkt mit einem vorgegebenen Abstand oder einer größeren Distanz gefunden, wird der Prozess gestoppt. Der Arbeitsablauf wird zudem in der entgegengesetzten Richtung von Kantenpunkt F aus durchgeführt, und es werden die Kantenpunkte GG und HH ermittelt. Die gefundenen Kantenlinien werden als Segmente mit geraden Linien interpretiert.
  • Dieser Arbeitsablauf wird für alle in Schritt 32 ermittelten Kantenpunkte durchgeführt.
  • Als nächstes werden in Schritt 34 die Koordinaten der vier Ecken des zweidimensionalen Codes 20 ermittelt. Aus den in Schritt 33 gefundenen Segmenten mit geraden Linien wird eine Verbindung von Linien ermittelt, die sich im rechten Winkel schneiden (etwa die Linien 261 und 262 in 22). Die Endlinien 263 und 264, die zwei gegenüberliegende Seiten eines Rechtecks (mit den Linien 261 und 262 als die ersten zwei Seiten) bilden, werden gezeichnet, und kurze Abtastzeilen 265, von denen jede eine der zwei Endlinien 263 und 264 senkrecht schneidet, werden zum Ermitteln der Kanten 266 gezeichnet. Zu diesem Zeitpunkt bilden zwei Seiten des zweidimensionalen Codes 20 das aus einem Muster von sich abwechselnden weißen und schwarzen Zellen bestehende Taktzellenmuster, wodurch die Abtastzeilen in solche Zeilen aufgeteilt werden, auf denen Kanten erkannt werden können, und in solche, auf denen keine Kanten erkannt werden können. Die erkannten Kantenpunkte gehören zu den Endlinien 263 und 264. Die Kantenpunkte, die zu den Segmenten mit geraden Linien 261, 262, 263 und 264 gehören, werden als Musterpunkte zum Ermitteln von vier geraden Linien 267, 268, 269 und 270 unter Verwendung eines Annäherungsverfahrens mittels des geringsten Quadrats benutzt. Die vier Schnittpunkte der vier Linien ergeben die vier Eckpunkte des zweidimensionalen Codes 20.
  • Die Anzahl an vertikalen und horizontalen Zellen des zweidimensionalen Codes wird in Schritt 35 ermittelt. Die Anzahl der Zellen kann durch das Zählen der Anzahl der Taktzellen heraus gefunden werden. Um die Anzahl der Taktzellen zu zählen, werden die Taktzellen abgetastet und die Anzahl der Kanten gezählt. Die Anzahl an vertikalen und horizontalen Zellen kann gezählt werden, indem die Anzahl der Taktzellen auf den zwei Seiten gezählt wird.
  • Für zwei Seitenlinien eines Erkennungsmusters des zweidimensionalen Codes 20 wird zuerst der Bildspeicher mit einem breiten Intervall vertikal und horizontal abgetastet, so dass Kanten ermittelt werden, anschließend werden die Gradienten der Kanten bestimmt und den Linien wird in der Richtung der Kantengradienten nachgelaufen, und zum Schluss wird zum Erkennen der Linien das Annäherungsverfahren mittels des geringsten Quadrats benutzt, wodurch der zweidimensionale Code 20 im Vergleich zur Linienextraktion mit Hilfe der Hough-Transformation (wie sie im herkömmlichen Verfahren angewandt wird) mit hoher Geschwindigkeit und unter geringem Verarbeitungszeitaufwand erkannt werden kann. Falls auf den zwei Linien des Erkennungsmusters des zweidimensionalen Codes 20 Schmutz vorhanden ist, wird ein Kantengradient von einer Kante in einem sauberen Teil der Linie ermittelt, und einer Kante wird basierend auf diesem Kantengradienten nachgelaufen. Der verschmutzte Teil wird übergangen, und das Nachlaufen zum Erkennen der Linien wird weiter ausgeführt, weshalb der zweidimensionale Code exakt erkannt werden kann. Die Kanten werden direkt aus mehrwertigen Bildinformationen ermittelt und nicht aus einem binarisierten Bild, wie es im herkömmlichen Verfahren verwendet wird, und können daher exakt extrahiert werden, selbst dann, wenn Luminanzunregelmäßigkeiten, etc. existieren.
  • Im ersten Beispiel wird zur Erkennung eines zweidimensionalen Codes beispielhaft ein L-förmiges Muster wie etwa der zweidimensionale Code 20 verwendet. Ebenso kann auch ein zweidimensionaler Code, der an allen vier Seiten Striche (schwarze Zellen) besitzt, erkannt werden. In diesem Fall werden in Schritt 33 alle Striche der vier Seiten extrahiert, und die Koordinaten der vier Ecken können mit Hilfe dieser Information leicht ermittelt werden.
  • Zweites Beispiel:
  • 16 ist ein Flussdiagramm zur Erklärung der Funktionsweise der Erkennungseinrichtung des Lesers für zweidimensionalen Code. Die Erkennungseinrichtung des Lesers für zweidimensionalen Code in der zweiten Ausführungsform der Erfindung wird unter Verwendung des zweidimensionalen Codes 24 aus 9 besprochen.
  • Als erstes wird in Schritt 41 ein zweidimensionaler Bildbereich in Längs- und Querrichtung abgetastet, um Kantenpunkte zu erkennen. Da die Abtastzeilen einen Zwischenraum mit einer vorgegebenen Breite besitzen, wird auf den Bildspeicher weniger oft zugegriffen und die Verarbeitungszeit wird verkürzt.
  • Anschließend wird in Schritt 42 basierend auf den in Schritt 41 ermittelten Koordinateninformationen über die Kanten sowie den Informationen über den Kantentyp (i oder 0) ein Teil erkannt, der das Mittenmuster schneidet. Wenn eine Abtastzeile das Mittenmuster schneidet, tauchen in einem vorgegebenen Abschnitt auf dem zweidimensionalen Code 24, wie in 17 gezeigt, abwechselnd zwei Typen von Kanten auf. Zu diesem Zeitpunkt können sich die Striche und Zwischenräume aufgrund von Druckbedingungen des zweidimensionalen Codes in ihrer Breite unterscheiden. Wenn Kanten des selben Typs den gleichen Abstand zueinander haben, werden diese Kanten daher in dieser Ausführungsform als Kanten bezeichnet, die auf Abtastlinien liegen, die das Mittenmus ter schneiden, und die Koordinaten der Kanten sowie der Kantentyp werden gespeichert.
  • Wird in 17 angenommen, dass der Abstand zwischen den Punkten 42 und 44 d1 ist, dass der Abstand zwischen den Punkten 43 und 45 d2 ist und dass der Abstand zwischen den Punkten 44 und 46 d3 beträgt, zeigt sich, dass eine Reihe dieser Kantenpunkte einem Teil entspricht, der das Mittenmuster schneidet, sofern die Abstände d1, d2 und d3 fast den selben Wert besitzen.
  • Als nächstes wird in Schritt 43 in der näheren Umgebung der Kantenpunktreihe 41 eine Kantenpunktreihe 48 ermittelt, bei der die Gradienten jener Vektoren, welche die entsprechenden Kanten zwischen den in Schritt 41 ermittelten Kantenpunktreihen 41 und 48 verbinden, den selben Wert besitzen, wodurch ein Gradient des Mittenmusters herausgefunden wird. Genauer gesagt wird eine kleine Abtastzeile 47, die parallel ist zu einer Abtastzeile 40, in der näheren Umgebung um die in Schritt 42 ermittelte Kantenpunktreihe 41 entlang geführt, und Kanten auf der Abtastzeile 47 werden durch ein Verfahren ermittelt, das dem aus Schritt 41 gleicht. Jeweils einer der gefundenen Kantenpunkte bezieht sich auf jeweils einen der Kantenpunkte der in Schritt 42 ermittelten Kantenpunktreihe 41. Die jeweils nächsten Kanten des selben Typs gehören zueinander. Der Vektor der Linie, welche die zueinander gehörenden Kantenpunkte verbindet, wird als Kantenpunktgradient (t, ui) bezeichnet, wobei i die Kantennummer ist. In 18 existieren fünf Kantenpunkte, weshalb fünf Gradientenvektoren gefunden werden. Die Richtung des Mittenmusters wird aus dem Durchschnittswert der ui ermittelt. Obwohl die Richtung des Mittenmusters in dieser Ausführungsform aus dem Durchschnittswert der ui ermittelt wird, wird ein Histogramm der ui gebildet, und es könnte der Wert, der am häufigsten auftritt, ebenso gut als Richtung des Mittenmusters angenommen werden. Sind die Variationen in ui zu diesem Zeitpunkt stark, wird angenommen, dass die Erkennung fehlerhaft war, und der Prozess könnte erneut vom Startpunkt 42 aus durchgeführt werden.
  • Der Startpunkt (a, b1) und der Endpunkt (a, b2) der Abtastzeile zum Ermitteln der Gradientenvektoren werden wie folgt herausgefunden: als erstes werden der Durchschnittswert der Strichbreite, tb, und der Durchschnittswert der Zwischenraumbreite, ts, aus den Koordinaten der in Schritt 42 ermittelten Kanten bestimmt. Als Intervall t zwi schen den Abtastzeilen 40 und 47 wird entweder tb oder ts benutzt, je nachdem, welcher der kleinere Wert ist. Die Koordinaten der obersten der in Schritt 42 ermittelten Kanten werden als (m, n1) und die Koordinaten der untersten Kante werden als (m, n2) angenommen. Zu diesem Zeitpunkt werden (a, b1) und (a, b2) wie folgt bestimmt: a = m + t b1 = n1 – t b2 = n2 + t
  • Je größer der Wert von t ist, desto exakter wird die Kantenrichtung bestimmt. Ist der Wert von t jedoch zu groß, können die Kanten auf zwei Abtastzeilen allerdings nicht zueinander in Verbindung gebracht werden. t sollte daher kleiner sein als (tb + ts)/2. Wird t durch das obige Verfahren ermittelt, können die Kanten selbst dann zueinander in Verbindung gebracht werden, wenn der Rotationswinkel 45 Grad erreicht.
  • Als nächstes wird den Kanten des selben Typs gemäß des in Schritt 43 aus den in Schritt 42 bestimmten Koordinaten der Kanten ermittelten Kantengradientenvektors (t, u) nachgelaufen, und in Schritt 44 werden die Kanten auf den Grenzen zwischen den horizontalen Strichen und Zwischenräumen des Mittenmusters ermittelt. Die genauen Arbeitsvorgänge werden im Folgenden beschrieben:
  • 19 zeigt das den-Kanten-Nachlaufen aus Schritt 44. Ziffer 50 ist die in Schritt 42 gefundene Kantenpunktreihe. Eine Abtastzeile wird horizontal um t2 von der Kantepunktreihe wegbewegt, und es werden Kanten auf der Abtastzeile ermittelt. Um die Kanten zu erkennen, kann ein Verfahren ähnlich dem in Schritt 41 beschriebenen verwendet werden. Nachdem die Kanten auf der Abtastzeile erkannt wurden, werden die ermittelten Kanten basierend auf dem Kantengradienten (t1, u) mit den Kanten der Kantenpunktreihe 50 in Verbindung gebracht. Daraufhin wird die Abtastzeile ein weiteres Mal um t2 nach rechts bewegt, und es werden Kanten auf der Abtastzeile erkannt und mit den Kanten auf der vorangegangenen Abtastzeile in Verbindung gebracht. Wenn zwei oder mehr Kanten in Verbindung gebracht werden können, wird das Nachlaufen weiterhin ausgeführt; ansonsten wird das Nachlaufen nach rechts beendet. Der selbe Vorgang wird von der Kantenpunktreihe 50 auch nach links durchgeführt.
  • Da also den Kanten nachgelaufen wird, kann korrekten Kantenpunkten selbst dann nachgelaufen werden, wenn wie in 20 Schmutz 51 auf dem Mittenmuster vorhanden ist.
  • Die zueinander gehörenden Kantenpunkte entsprechen den Punkten auf den Grenzen zwischen horizontalen Strichen und Zwischenräumen des Mittenmusters.
  • Um als Musterpunkte Liniensegmente mit den ermittelten Kantenpunkten auf den Grenzen exakt zu bestimmen, wird das Annäherungsverfahren mittels des geringsten Quadrats verwendet.
  • In Schritt 45 werden Kanten in der erweiterten Richtung der Endlinien der Grenzen zwischen den horizontalen Strichen und Zwischenräumen der in Schritt 44 gefundenen Mittellinie ermittelt, und es wird die Position sowie der Rotationswinkel des Mittenmusters bestimmt. Die Anzahl der vertikalen und horizontalen Zellen des zweidimensionalen Codes 24 kann aus der Information über die Anzahl der Grenzen des Mittenmusters ermittelt werden.
  • Wie oben beschrieben wird zum Ermitteln von Kanten zuerst der Bildspeicher mit einem breiten Intervall vertikal und horizontal abgetastet, anschließend wird eine Kantenpunktreihe ermittelt, die Kanten des selben Typs und im selben Abstand zueinander umfasst, und weitere Kanten werden anschließend in der näheren Umgebung der ermittelten Kantenpunktreihe gesucht, wobei der Gradient des Mittenmusters bestimmt und Kanten basierend auf dem Mittenmustergradienten nachgelaufen wird. Zum Schluss wird das Annäherungsverfahren mittels des geringsten Quadrats verwendet, um Linien zu ermitteln, die zur Erkennung des Mittenmusters benötigt werden. Dadurch kann der zweidimensionale Code 24 mit hoher Geschwindigkeit und in einer im Vergleich zur Linienextraktion mit Hilfe der Hough-Transformation wie im herkömmlichen Verfahren kurzen Verarbeitungszeit erkannt werden.
  • Wenn auf dem Mittenmuster des zweidimensionalen Codes 24 Schmutz vorhanden ist, wird der Mittenmustergradient in einem sauberen Teil bestimmt. Selbst dann können also noch Linien werden ermittelt, weshalb der zweidimensionale Code 24 exakt erkannt werden kann. Da die Kanten direkt aus der mehrwertigen Bildinformation ermittelt wer den und nicht aus einem binarisierten Bild wie im herkömmlichen Verfahren, können sie exakt extrahiert werden, auch wenn z. B. Luminanzunregelmäßigkeiten, etc. existieren.
  • Im zweiten Beispiel werden in Schritt 42 die Kanten miteinander in Verbindung gebracht und Gradienten ermittelt. Die Kantenpunktreihe 40 aus 18 wird jedoch zum Beispiel als Grundmuster verwendet, und ein Muster, das dem Grundmuster in einem hohen Maße gleicht, wird auf Abtastzeile 47 erkannt. Dadurch wird der Mittenmustergradient ermittelt und Kantenpunktreihen, die dem Grundmuster sehr ähnlich sind, werden der Reihe nach gemäß des Mittenmustergradienten erkannt. Dieses Verfahren, das einen Musterabgleich verwendet, ist gegenüber Schmutz und Fehlern unempfindlich und in der Lage, das Mittenmuster mit hoher Genauigkeit zu erkennen.
  • Drittes Beispiel:
  • Mit Verweis auf die 7, 16 und 21 und unter Zuhilfenahme des zweidimensionalen Codes 24 als Beispiel wird der Erkennungsprozess im Leser für zweidimensionalen Strichcode besprochen.
  • Als erstes wird Schritt 1 (erster Leseprozess) ausgeführt, anschließend werden in Schritt 2 (Erkennungsprozess) die Schritte 41 (Kantenerkennungsprozess) und 42 (Prozess zur Erkennung eines charakteristischen Kantenmusters) in 21 auf einer Abtastzeile 60 ausgeführt. Das Symbol aus dem Beispiel enthält jedoch Schmutz 62, und ein Abschnitt, in dem Kanten des selben Typs mit dem selben, konstanten Abstand zueinander liegen, kann nicht erkannt werden, weshalb zuerst der Leseprozess ein weiteres Mal ausgeführt werden muss und anschließend der Erkennungsprozess von neuem ausgeführt wird. Während des Erkennungsprozesses wird die Position der Abtastzeile verändert, und der Kantenerkennungsprozess wird auf einer Abtastzeile 61 erneut durchgeführt. Da die Position der Abtastzeile verändert wurde, kann zu diesem Zeitpunkt ein Abschnitt 63, in dem Kanten des selben Typs mit dem selben, konstanten Abstand zueinander liegen, während des Prozesses zur Erkennung eines charakteristischen Kantenmusters bestimmt werden, und es kann ein Mittenmuster 64 ermittelt werden. Die Position der Abtastzeile wird also weiterbewegt, wodurch schmutziger Code oder kleiner Code auch dann verlässlich gelesen werden kann, wenn das Abtastzeilenintervall groß bleibt.
  • Somit kann nach diesem Verfahren fehlerhafter Code oder kleiner Code verlässlich gelesen werden, indem die Decodierung mehrmals durchgeführt wird.
  • Viertes Beispiel:
  • Der Leser für zweidimensionalen Code wird nun weitergehend besprochen.
  • Hier findet eine Erkennungseinrichtung die Koordinaten der vier Ecken eines zweidimensionalen Codes (oder die Koordinaten der vier Ecken des Mittenmusters im Falle des zweidimensionalen Codes 24) sowie die Anzahl der vertikalen und horizontalen Zellen eines zweidimensionalen Codes heraus, und eine Zellenbinarisierungseinrichtung ermittelt basierend auf diesen Informationen Binärdaten.
  • Im herkömmlichen Verfahren werden alle Pixel binarisiert, bevor der zweidimensionale Code von der Erkennungseinrichtung ermittelt wird, die Pixel der Mittelpunkte der Zellen werden basierend auf der von der Erkennungseinrichtung bereit gestellten Information bestimmt, und es wird auf die den Pixeln entsprechenden Bildspeicheradressen zugegriffen, wodurch Zellenbinärdaten ermittelt werden.
  • Um für den Leser von zweidimensionalen Code dieser Ausführungsform eine Hochgeschwindigkeits-Erkennungseinrichtung bereitzustellen, die von Luminanzunregelmäßigkeiten nicht beeinflusst wird, wird der zweidimensionale Code jedoch aus mehrwertiger Bildinformation ermittelt. Wenn auf die Bildspeicheradressen zugegriffen wird, die den Pixeln an den Mittelpunkten der Zellen entsprechen, werden daher ausschließlich mehrwertige Graustufen der Pixel weitergegeben. Deshalb müssen die sich ergebenden Graustufen der Mittenpixel der Zellen durch irgendein Verfahren binarisiert werden.
  • Um die Graustufen der Pixel an den Mittelpunkten der Zellen zu binarisieren, kann zum Binarisieren der Mittenpixel der Zellen zum Beispiel der Durchschnittswert des Maximal- und des Minimalwerts der Graustufen aller Pixel in einem erkannten Gebiet als Schwellenwert benutzt werden.
  • Dieses Verfahren, das auf alle Pixel des Gebiets zugreift, benötigt jedoch viel Verarbeitungszeit. Wenn durch die Auswirkungen der Benutzung von künstlicher Beleuchtung Luminanzunregelmäßigkeiten, etc. auftreten, kann keine normale Binarisierung durchgeführt werden.
  • In diesem Fall ermittelt die Binarisierungseinrichtung des Lesers für zweidimensionalen Code dieser Ausführungsform einen Binarisierungsschwellenwert nur aus den Graustufen der Pixel an den Mittelpunkten der Zellen, wodurch gleichzeitig die Verarbeitungszeit verkürzt wird. Das Gebiet zweidimensionalen Codes wird in kleine Bereich aufgeteilt, ein lokaler Schwellenwert wird für jeden kleinen Bereich ermittelt, und es werden Binärdaten heraus gefunden, wodurch gleichzeitig die Möglichkeit von negativen Einwirkungen durch Luminanzunregelmäßigkeiten verringert wird.
  • Der Arbeitsablauf der Zellenbinarisierung wird nun mit Verweis auf 1 besprochen.
  • Die von einem Erkennungsprozess bereit gestellt Information besteht, wie in 2 gezeigt, aus den Positionen der vier Eckpunkte 14, 15, 16 und 17 sowie der Anzahl an vertikalen und horizontalen Zellen des zweidimensionalen Codes. Aus dieser Information wird die Position eines Mittenpixels 19 einer jeden Zelle 18 ermittelt, und die Graustufen der Pixel an diesen Positionen werden in Schritt 11 der Reihe nach gespeichert.
  • Als nächstes wird der erkannte zweidimensionale Code in kleine Bereiche aufgeteilt, von denen jeder wie in 3 gezeigt aus mehreren vertikalen und horizontalen Zellen (in diesem Beispiel 2 × 2) besteht, und es werden in Schritt 12 der Maximalwert sowie der Minimalwert der Graustufen für jeden kleinen Bereich aus den in Schritt 11 ermittelten Graustufen der Mittenpixel der Zellen bestimmt.
  • In Schritt 13 werden basierend auf den beiden in Schritt 12 bestimmten Werten (Maximalwert max und Minimalwert min) der Schwellenwert th und die Amplitude d für jeden kleinen Bereich ermittelt.
  • Der Schwellenwert th für jeden kleinen Bereich wird aus dem Maximalwert max und dem Minimalwert min der Graustufen der Pixel an den Mittelpunkten der Zellen in den kleinen Bereichen ermittelt. Die Amplitude ist die Differenz zwischen max und min.
  • Die Werte der Amplituden d aus aneinander grenzenden kleinen Bereichen werden verglichen, um einen kleinen Bereich zu erkennen, der im Vergleich zu den ihn umgebenden kleinen Bereichen für die Amplitude d einen geringen Wert besitzt. Anschließend wird der Schwellenwert des erkannten kleinen Bereichs aus dem Durchschnittswert der Schwellenwerte th der angrenzenden kleinen Bereiche ermittelt.
  • Die Amplitude d des kleinen Bereichs wird hier mit der Amplitude d der angrenzenden kleinen Bereiche verglichen, um feststellen zu können, ob der kleine Bereich ausschließlich schwarze (oder ausschließlich weiße) Zellen beinhaltet. Wenn der kleine Bereich ausschließlich schwarze (oder ausschließlich weiße) Zellen beinhaltet, kann der in diesem kleinen Bereich gefundene Schwellenwert nicht zur korrekten Binarisierung verwendet werden. Der Schwellenwert eines solchen kleinen Bereichs wird daher ermittelt, indem der Schwellenwert jenes kleinen Bereichs unter den angrenzenden kleinen Bereichen benutzt wird, der sowohl weiße als auch schwarze Zellen beinhaltet. Somit kann eine präzise Binarisierung durchgeführt werden.
  • Zum Abschluss werden in Schritt 15 die Graustufen der Pixel am Mittelpunkt jeder Zelle gemäß des Schwellenwerts th des kleinen Bereichs, das die Zelle enthält, binarisiert.
  • Mit Verweis auf 4 wird nun ein spezielles Beispiel der vierten Ausführungsform besprochen. Hierbei besteht der kleine Bereich aus 2 × 1 Zellen. Kleine Bereiche, die an den betrachteten kleinen Bereich angrenzen, sind ein linker Bereich und ein rechter Bereich.
  • Die Ziffer 40 in 4(a) bezeichnet die Graustufen der Pixel auf einer Abtastzeile, die sich durch die Mittelpunkte der Zellen des zweidimensionalen Codes bewegt. In der Wellenform tritt eine Verdunklung prinzipiell rechts der Basis auf, und es kann kein fester Schwellenwert zur korrekten Binarisierung benutzt werden.
  • Bei diesem Verfahren werden zuerst in Schritt 11 die Graustufen 41 der Mittenpixel jeder Zelle ermittelt. Anschließend werden in Schritt 12 der Maximalwert max sowie der Minimalwert min jedes kleinen Bereichs bestimmt. In Schritt 13 werden aus den in Schritt 12 bestimmten Werten die Differenz zwischen dem Maximalwert max und dem Minimalwert min, d45, sowie der Durchschnittswert aus dem Maximalwert max und dem Minimalwert min, th44, berechnet. Ist d aus dem betrachteten kleinen Bereich halb so groß wie oder kleiner als der Maximalwert von d aus zwei aneinander grenzenden kleinen Bereichen, wird in Schritt 14 festgestellt, dass der betrachtete kleine Bereich ausschließlich schwarze oder weiße Zellen beinhaltet, der kleine Bereich wird markiert (wie 46, 47), und der Wert von th des bezeichneten kleinen Bereichs wird durch Interpolation der th aus den kleinen Bereichen ermittelt, die an den kleinen Bereich (etwa 46) angrenzen. Werden zwei nacheinander folgende kleine Bereiche markiert (etwa 47), wird th durch die Interpolation der th der angrenzenden kleinen Bereiche interpoliert. Es ergibt sich ein Wert, der in 4 mit th43 bezeichnet wird. Dieser Wert wird zu einem Wert, der in 4(a) mit 42 gekennzeichnet wird.
  • Hier besteht jeder kleine Bereich aus 2 × 1 Zellen. Ein kleiner Bereich kann jedoch ebenso aus einer anderen, beliebigen Anzahl an Zellen bestehen. Die Anzahl an Zellen, die einen kleinen Bereich bilden, kann abhängig von der Anzahl der Pixel, die zu einer Zelle gehören, verändert werden. Die kleinen Bereiche dürfen sich zudem überlappen. In der oben dargelegten Beschreibung wird der Vergleich der Differenz d zwischen dem Maximalwert max und dem Minimalwert min in den rechten und linken kleinen Bereichen durchgeführt, er kann aber ebenso gut in vier Richtungen durchgeführt werden, also nach oben und unten und links und rechts.
  • Die Graustufen der Pixel an den Mittelpunkten der Zellen werden ermittelt, ein lokaler Schwellenwert wird aus ausschließlich den Graustufen der Pixel an den Mittelpunkten bestimmt, und die Graustufen der Pixel an den Mittelpunkten der Zellen werden zum Binarisieren mit dem lokalen Schwellenwert verglichen. Dadurch benötigt der Zellenbinarisierungsprozess nur eine kurze Verarbeitungszeit und kann ohne Beeinflussung von Luminanzunregelmäßigkeiten durchgeführt werden.
  • Fünftes Beispiel:
  • Wenn ein erkannter Bereich zweidimensionalen Codes keine Luminanzunregelmäßigkeiten beinhaltet oder der monochrome Kontrast stark ist, werden die Zellen gemäß eines vorgegebenen Schwellenwerts binarisiert, und wenn ein erkannter Bereich zweidimensionalen Codes Luminanzunregelmäßigkeiten beinhaltet oder der monochrome Kontrast schwach ist, dann werden die Zellen mit einem Verfahren ähnlich dem der ersten Einrichtung binarisiert.
  • 5 ist ein Flussdiagramm des Zellenbinarisierungsprozesses des fünften Beispiels der Erfindung. Im Anschluss an Schritt 11 wird in Schritt 21 ein Graustufenhistogramm (eine Graustufenverteilung) gebildet. Da in Schritt 11 nur die Graustufen der Pixel an den Mittelpunkten der Zellen ermittelt werden, sollten sich in der Graustufenverteilung – falls keine Luminanzunregelmäßigkeiten auftreten – deutlich zwei separate Kuppen ausbilden. Selbst wenn Luminanzunregelmäßigkeiten auftreten, sollte die Graustufenverteilung für den Fall, dass der monochrome Kontrast stark ist, in zwei Kuppen aufgeteilt sein. Wenn eine derartige Verteilung ermittelt werden kann, kann die Binarisierung mit einem festen Schwellenwert durchgeführt werden.
  • Ist die Helligkeitsverteilung komplett in zwei separate Kuppen aufgeteilt, wird in Schritt 23 die Graustufe zwischen den zwei Kuppen als Schwellenwert angenommen und die Graustufen werden gemäß des ermittelten Schwellenwerts binarisiert.
  • Ist die Helligkeitsverteilung nicht in zwei Kuppen aufgeteilt, läuft die Steuerung weiter zu Schritt 12 und die Binarisierung wird mit einem Verfahren gleich dem der ersten Einrichtung durchgeführt.
  • Wenn das erkannte Gebiet mit zweidimensionalem Code keine Luminanzunregelmäßigkeiten enthält oder der monochrome Kontrast stark ist, wird das Binarisierungsverfahren also abhängig von der Helligkeitsverteilung verändert, wodurch die Zellen mit einer höheren Geschwindigkeit binarisiert werden können. Falls das erkannte Gebiet mit zweidimensionalem Code Luminanzunregelmäßigkeiten enthält, wird die Binarisierung mit einem Verfahren gleich dem der ersten Einrichtung durchgeführt, wodurch auch ungeachtet dieser Luminanzunregelmäßigkeiten eine Hochgeschwindigkeits-Binarisierung realisiert werden kann.
  • Gemäß der besprochenen Beispiele wird ein lokaler Schwellenwert ausschließlich aus den Grausstufen der Pixel an den Mittelpunkten jener Zellen bestimmt, die aus der Position, dem Rotationswinkel und der Anzahl der Zellen des von der Erkennungseinrichtung gefundenen zweidimensionalen Codes ermittelt wurden. Die Binarisierung wird daher so ausgeführt, dass die Verarbeitungszeit der Zellenbinarisierungseinrichtung verkürzt und die Binarisierung ohne den Einfluss von Luminanzunregelmäßigkeiten durchgeführt werden kann.
  • Nachdem die Graustufen der Pixel an den Mittelpunkten der Zellen ermittelt wurden, wird ein Histogramm der Graustufen vorbereitet. Wenn gemäß der Graustufenverteilung festgestellt wird, dass keine Luminanzunregelmäßigkeiten existieren, wird aus den Graustufen ein Schwellenwert ermittelt und alle Zellen werden binarisiert. Daher kann die Verarbeitungszeit der Zellenbinarisierungseinrichtung weiter verkürzt werden. Wird festgestellt, dass Luminanzunregelmäßigkeiten existieren, wird ein lokaler Schwellenwert bestimmt und die Binarisierung wird ausgeführt, wodurch die Zellen ohne den Einfluss von Luminanzunregelmäßigkeiten binarisiert werden können.
  • Da die vertikalen und horizontalen Abtastzeilen in einem weiten Abstand zueinander angelegt werden können, wird die Anzahl der Zugriffe auf den Bildspeicher verkleinert und ein Bild muss nicht schon vor dem Erkennungsprozess binarisiert werden. Der zweidimensionale Code kann also mit hoher Geschwindigkeit erkannt werden. Da der zweidimensionale Code als Reaktion auf Veränderungen in den Graustufen der Pixel auf den Abtastzeilen erkannt wird, kann er ohne den Einfluss von Luminanzunregelmäßigkeiten erkannt werden.
  • Geht eine Kante auf Grund von Schmutz, etc. verloren, kann der zweidimensionale Codes durch Verschieben der Abtastzeile verlässlich erkannt werden.

Claims (18)

  1. Ein Leser für zweidimensionalen Code, der umfasst: eine Umwandlungseinrichtung (9) zum Empfangen von Licht, das von einem zweidimensionalen Code (7) reflektiert wird, und zum Umwandeln des Lichts in ein Bildsignal; eine Speichereinrichtung (12) zum Speichern des Bildsignals in einem Bildspeicher; eine Codeerkennungseinrichtung (11) zum Bereitstellen eines erkannten Gebiets mit zweidimensionalem Code (7) aus dem Bildspeicher; eine Zellenbinärisierungseinrichtung (11) zum Bilden von Binärwerten aus Werten vorherbestimmter Pixel der jeweiligen Zellen (18) innerhalb des Gebiets mit zweidimensionalem Code (7).
  2. Der Leser für zweidimensionalen Code nach Anspruch 1, wobei besagte Zellenbinärisierungseinrichtung (11) umfasst: eine Zellengraustufen-Ausleseeinrichtung zum Bestimmen der jeweiligen Graustufen der vorherbestimmten Pixel basierend auf Bildsignalen, die sich aus den vorherbestimmten Pixeln der Zellen (18) auf dem erkannten zweidimensionalen Code (7) ergeben; eine lokale Schwellenwert-Bestimmungseinrichtung zum Herausfinden eines lokalen Schwellenwerts aus den von besagter Zellengraustufen-Ausleseeinrichtung bestimmten Graustufen; und eine Zellenbinärzahl-Bestimmungseinrichtung zum Vergleichen von jeder der von besagter Zellengraustufen-Ausleseeinrichtung bestimmten Graustufen mit dem von besagter Schwellenwert-Bestimmungseinrichtung gefundenen Schwellenwert, um Binärdaten für eine entsprechende Zelle (18) festzulegen.
  3. Der Leser für zweidimensionalen Code nach Anspruch 2, wobei besagte lokale Schwellenwert-Bestimmungseinrichtung eine Einrichtung ist zum Definieren einer Mehrzahl kleiner Gebiete, zum Bestimmen eines Durchschnittswerts sowie der Amplitude des maximalen und des minimalen Werts der Graustufen der vorherbestimmten Pixel der Zellen (18), die sich in jedem der kleinen Gebiete befinden, zum Vergleichen von in Bezug auf die Amplitude aneinander grenzenden, kleinen Gebieten, und – falls eines der kleinen Gebiete eine Amplitude mit einem vorherbestimmten Wert oder mit einer im Vergleich zum anderen Gebiet kleineren Amplitude besitzt – zum Festlegen eines Schwellenwerts für das erste kleine Gebiet basierend auf letzterem Gebiet.
  4. Der Leser für zweidimensionalen Code nach Anspruch 3, wobei besagte Schwellenwert-Bestimmungseinrichtung eine Einrichtung ist zum Vergleichen von in Bezug auf die Amplitude aneinander grenzenden, kleinen Gebieten, und – außer eines der kleinen Gebiete besitzt die Amplitude des vorherbestimmten Werts oder im Vergleich zum anderen Gebiet eine kleinere Amplitude – zum Einnehmen eines Durchschnittswerts aus den in den kleinen Gebieten aufgefundenen Durchschnittswerten als Durchschnittswert des ersten kleinen Gebiets.
  5. Der Leser für zweidimensionalen Code nach Anspruch 1, wobei besagte Zellenbinärisierungseinrichtung (11) umfasst: eine Zellengraustufen-Ausleseeinrichtung zum Bestimmen der jeweiligen Graustufen der Pixel basierend auf Bildsignalen, die sich aus den vorherbestimmten Pixeln der Zellen (18) auf dem erkannten zweidimensionalen Code (7) ergeben; eine Graustufenverteilungs-Vorbereitungseinrichtung zum Vorbereiten eines Graustufenhistogramms der von der Zellengraustufen-Ausleseeinrichtung bestimmten Graustufen; eine Luminanzunregelmäßigkeit-Bestimmungseinrichtung, die mit Hilfe des von der Graustufenverteilungs-Vorbereitungseinrichtung vorbereiteten Histogramms bestimmt, ob Luminanzunregelmäßigkeiten existieren oder nicht; eine Schwellenwert-Bestimmungseinrichtung, die, falls von der Luminanzunregelmäßigkeit-Bestimmungseinrichtung die Existenz von Luminanzunregelmäßigkeiten festgestellt wurde, mit Hilfe des Histogramms Schwellenwerte herausfindet; und eine Zellenbinärisierungseinrichtung zum Vergleichen der von besagter Zellengraustufen-Ausleseeinrichtung bestimmten Graustufen mit dem entsprechenden Schwellenwert der von besagter Schwellenwert-Bestimmungseinrichtung herausgefundenen Schwellenwerte, um die Binärdaten einer entsprechenden Zelle (18) festzulegen.
  6. Der Leser für zweidimensionalen Code nach Anspruch 1, wobei besagte vorherbestimmte Pixel Pixel sind, die sich im Wesentlichen in der Mitte von jeder der Zellen (18) befinden.
  7. Der Leser für zweidimensionalen Code nach Anspruch 1, wobei besagte Codeerkennungseinrichtung umfasst: eine Kantenerkennungseinrichtung zum Abtasten des Bildspeichers in Längs- und Querrichtung, um Kanten (C, D, EF) auf den Abtastzeilen (A, P) im erkannten zweidimensionalen Code (7) zu erkennen; eine Kantengradienten-Erkennungseinrichtung zum Bestimmen der Gradienten von den von besagter Kantenerkennungseinrichtung gefundenen Kanten (C, D, EF); und eine Linearlinien-Erkennungseinrichtung zum Verfolgen der Kanten und zum Finden von Linien (11) basierend auf den von besagter Kantengradienten-Erkennungseinrichtung bestimmten Gradienten.
  8. Der Leser für zweidimensionalen Code nach Anspruch 7, wobei besagte Kantengradienten-Erkennungseinrichtung umfasst: eine Einrichtung zum Abtasten der näheren Umgebung einer ersten, auf einer ersten Abtastzeile (A, P) erkannten Kante (F) mit zwei Abtastzeilen (R, Q) (einer zweiten und einer dritten Zeile), die parallel zu der ersten Abtastzeile (A, P) sind; und eine Vergleichseinrichtung zum Erkennen von zweiten und dritten Kanten (S, T) des erkannten zweidimensionalen Codes (7) auf der zweiten beziehungsweise dritten, von besagter Kantenerkennungseinrichtung abgetasteten Abastzeilen (R, Q) und zum Vergleichen eines Gradienten von einer die erste und die zweite Kante verbindenden Linie (c, d) mit einem Gradienten von einer die erste und die dritte Kante (F, S, T) verbindenden Linie (d, c), und wobei besagte Kantengradienten-Erkennungseinrichtung den Kantengradienten bestimmt, falls besagte Vergleichseinrichtung feststellt, dass beide Gradienten im Grunde gleich sind.
  9. Der Leser für zweidimensionalen Code nach Anspruch 7, wobei besagte Kantengradienten-Erkennungseinrichtung umfasst: eine Einrichtung zum Abtasten der näheren Umgebung einer ersten, auf einer ersten Abtastzeile (A, P) erkannten Kante (F) mit drei oder mehr Abtastzeilen, die parallel zu der ersten Abtastzeile (A, P) sind; und eine Vergleichseinrichtung zum Erkennen einer Mehrzahl von Kanten auf den drei oder mehr, von besagter Kantenerkennungseinrichtung abgetasteten Abtastzeilen des erkannten zweidimensionalen Codes (7) und zum gegenseitigen Vergleichen der Gradienten jener Linien, die jeweils die erste Kante mit einer Kante aus der Mehrzahl der Kanten verbinden, und wobei besagte Kantengradienten-Erkennungseinrichtung den Kantengradienten bestimmt, falls besagte Vergleichseinrichtung feststellt, dass die Gradienten der Linien einen angegebenen Wert besitzen oder unter diesem liegen.
  10. Der Leser für zweidimensionalen Code nach den Ansprüchen 8 oder 9, wobei besagte Einrichtung zum Abtasten der näheren Umgebung der ersten Kante in Bezug auf die erste Kante (F) beide Seiten des Bildspeichers abtastet.
  11. Der Leser für zweidimensionalen Code nach Anspruch 7, wobei besagte Linearlinien-Erkennungseinrichtung in jedem vorherbestimmten Intervall einer Kante nachläuft, und, falls die Kante kein einziges Mal erkannt werden konnte, weiterhin der Kante eine vorherbestimmte Anzahl an Versuchen in jedem vorherbestimmten Intervall ein Mal nachläuft, und, falls die Kante selbst dann nicht erkannt werden konnte, wenn das Nachlaufen die vorherbestimmte Anzahl an Versuchen durchgeführt wurde, die Erkennungsarbeit stoppt.
  12. Der Leser für zweidimensionalen Code nach Anspruch 1, wobei besagte Codeerkennungseinrichtung umfasst: eine Kantenerkennungseinrichtung zum Abtasten des Bildspeichers in Längs- und Querrichtung und zum Erkennen einer Mehrzahl von Kanten (42, 43, 44, 45, 46) auf den Abtastzeilen (40) des erkannten zweidimensionalen Codes (7); eine Einrichtung zum Erkennen einer ersten Kantenpunktreihe (41, 50), die in Bezug auf ihre Position in einem besonderen Verhältnis zu einer ersten Abtastzeile (40) aus der Mehrzahl der von besagter Kantenerkennungseinrichtung erkannten Kanten (42, 43, 44, 45, 46) liegt; und eine Gradientenerkennungseinrichtung zum Erkennen von Kanten auf einer anderen, zweiten Abtastzeile (47), die jeweils im Typ den Kanten (42, 43, 44, 45 bzw. 46) der ersten Kantenpunktreihe (47, 50) entsprechen und von der jeweiligen Kante am wenigsten weit entfernt sind, und zum Erkennen eines Gradienten einer Linie, welche die entsprechenden Kanten zwischen der ersten und der zweiten Abtastzeile (40, 47) verbindet.
  13. Der Leser für zweidimensionalen Code nach Anspruch 12, wobei dieser derart angepasst wird, dass die Erkennung erneut durchgeführt wird, wenn Veränderungen in den Gradienten auftreten, die einen vorgegebenen Wert in den Gradienten auftreten, die einen vorgegebenen Wert besitzen oder diesen übersteigen.
  14. Der Leser für zweidimensionalen Code nach Anspruch 12, wobei dieser derart angepasst wird, dass beim Nachlaufen der Kanten ein Abtastzeilenintervall (t) zwischen der ersten und der zweiten Abtastzeile (40, 47) kleiner ist als ein Wert, der sich aus der Addition der Breite (tb) eines Stabs und der Breite (ts) eines Zwischenraums sowie der anschließenden Division des Ergebnisses durch zwei ergibt.
  15. Der Leser für zweidimensionalen Code nach Anspruch 12, wobei dieser derart angepasst wird, dass das Nachlaufen weiterhin durchgeführt wird, falls auf einer einzelnen Abtastzeile (40, 47) eine vorherbestimmte Anzahl von Kanten, die eine Kantenpunktreihe (47, 48, 50) bilden, erkannt werden.
  16. Der Leser für zweidimensionalen Code nach Anspruch 1, wobei besagte Codeerkennungseinrichtung umfasst: eine Kantenerkennungseinrichtung zum Abtasten des Bildspeichers in Längs- und Querrichtung und zum Erkennen einer Mehrzahl von Kanten auf den Abtastzeilen (49) des erkannten zweidimensionalen Codes (7); eine Einrichtung zum Erkennen einer ersten Kantenpunktreihe (41, 50), die in Bezug auf ihre Position in einem besonderen Verhältnis zu einer einzelnen Abastzeile (40) aus der Mehrzahl der von besagter Kantenerkennungseinrichtung erkannten Kanten (42, 43, 44, 45, 46) liegt; und eine Gradientenerkennungseinrichtung zum Erkennen einer zweiten Kantenpunktreihe (48) in der Nähe der ersten, von besagter Kantenpunktreihen-Erkennungseinrichtung erkannten Kantenpunktreihe (41, 50), wobei die zweite Kantenpunktreihe fast mit der ersten Kantenpunktreihe (41, 50) identisch ist, und zum Erkennen eines Gradienten, der von diesen beiden Kantenpunktreihen (41, 48, 50) ausgebildet wird.
  17. Der Leser für zweidimensionalen Code nach den Ansprüchen 12 oder 16, wobei Kantenpunktreihen (48), die fast mit der ersten Kantenpunktreihe (41, 50) identisch sind, ständig auf ein Neues auf Basis der ersten, von besagter Kantenpunktreihen-Erkennungseinrichtung erkannten Kantenpunktreihe (41, 50) und in einer Richtung, die von dem von besagter Gradientenerkennungseinrichtung erkannten Gradienten definiert wird, erkannt werden, um dadurch den erkannten zweidimensionalen Code bereit zu stellen.
  18. Der Leser für zweidimensionalen Code nach Anspruch 1, wobei besagte Codeerkennungseinrichtung eine Einrichtung ist, die eine Position einer Abtastlinie jedes Mal dann verändert, wenn ein neues Bild eingelesen wird.
DE69728482T 1996-08-23 1997-08-22 Zweidimensionaler Codeleser Expired - Lifetime DE69728482T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP22211196 1996-08-23
JP22211196A JP3209108B2 (ja) 1996-08-23 1996-08-23 2次元コード読み取り装置

Publications (2)

Publication Number Publication Date
DE69728482D1 DE69728482D1 (de) 2004-05-13
DE69728482T2 true DE69728482T2 (de) 2004-08-12

Family

ID=16777325

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69728482T Expired - Lifetime DE69728482T2 (de) 1996-08-23 1997-08-22 Zweidimensionaler Codeleser

Country Status (4)

Country Link
US (2) US6081627A (de)
EP (1) EP0825547B1 (de)
JP (1) JP3209108B2 (de)
DE (1) DE69728482T2 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW434520B (en) * 1998-06-30 2001-05-16 Sony Corp Two-dimensional code recognition processing method, device therefor and medium
EP0984385B1 (de) * 1998-08-31 2013-02-20 Sony Corporation Erkennungsverarbeitung für eine zweidimensionale Kodierung
DE19910226B4 (de) * 1999-03-09 2007-05-24 Bruker Biospin Gmbh Vorrichtung und Verfahren zur Kennzeichnung und Identifizierung eines Probenfläschchens
JP4288756B2 (ja) * 1999-04-08 2009-07-01 株式会社デンソー 情報コード概略存在領域推定方法、情報コード読取方法及び装置、記録媒体
US20060082557A1 (en) * 2000-04-05 2006-04-20 Anoto Ip Lic Hb Combined detection of position-coding pattern and bar codes
US20020021835A1 (en) * 2000-06-02 2002-02-21 Markus Andreasson Method and device for recording of information
US8682077B1 (en) 2000-11-28 2014-03-25 Hand Held Products, Inc. Method for omnidirectional processing of 2D images including recognizable characters
DE10123406A1 (de) * 2001-05-15 2002-11-21 Sick Ag Verfahren zum Erfassen von zweidimensionalen Codes
US6722567B2 (en) * 2001-06-07 2004-04-20 Hewlett-Packard Development Company, L.P. Generating and decoding graphical bar codes
DE10232614A1 (de) * 2002-07-12 2004-01-22 Secrypt Gmbh Encryption And Matrixcode Technologies Verfahren zur Verarbeitung eines Matrixcodes
US6781694B2 (en) * 2002-07-16 2004-08-24 Mitutoyo Corporation Two-dimensional scale structures and method usable in an absolute position transducer
KR100414524B1 (ko) * 2002-10-31 2004-01-16 주식회사 아이콘랩 복호 특성이 우수하며 단계별 에러레벨조정이 가능한2차원 코드 및 그 코드의 인코딩 디코딩 방법
US7069108B2 (en) 2002-12-10 2006-06-27 Jostens, Inc. Automated engraving of a customized jewelry item
US20040193322A1 (en) * 2003-01-09 2004-09-30 Paolo Pirjanian Vision-and environment-based programming of robots and/or computer systems
WO2004093433A1 (ja) * 2003-04-15 2004-10-28 Fujitsu Limited コード認識方法及び装置
US7168621B2 (en) * 2003-12-04 2007-01-30 Scanbury, Inc. Section based algorithm for image enhancement
JP4242796B2 (ja) * 2004-03-12 2009-03-25 パナソニック株式会社 画像認識方法及び画像認識装置
US8085266B2 (en) * 2004-04-19 2011-12-27 Jostens, Inc. System and method for smoothing three dimensional images
JP4794847B2 (ja) * 2004-10-29 2011-10-19 キヤノン株式会社 2次元コードおよび情報処理方法
CN100372361C (zh) * 2005-03-16 2008-02-27 中国科学院沈阳自动化研究所 实时浮动阈值提取方法
KR100828539B1 (ko) * 2005-09-20 2008-05-13 후지제롯쿠스 가부시끼가이샤 이차원 코드의 검출 방법, 검출 장치, 및 검출 프로그램을기억한 기억 매체
CN100441393C (zh) * 2005-10-17 2008-12-10 吴立昌 用于生产管类注塑件的橡胶管芯抽芯法
JP4911340B2 (ja) * 2006-02-10 2012-04-04 富士ゼロックス株式会社 二次元コード検出システムおよび二次元コード検出プログラム
US7946491B2 (en) 2006-08-03 2011-05-24 Nokia Corporation Method, apparatus, and computer program product for providing a camera barcode reader
MX2009007745A (es) 2007-01-18 2009-12-01 Jostens Inc Sistema y metodo para generar instrucciones para personalizar.
CA2680323C (en) 2007-03-12 2016-06-07 Jostens, Inc. Method for embellishment placement
JP4473335B1 (ja) * 2009-03-27 2010-06-02 株式会社オプトエレクトロニクス 光学的情報読取装置及び光学的情報読取方法
US8977377B2 (en) 2010-02-25 2015-03-10 Jostens, Inc. Method for digital manufacturing of jewelry items
US9208265B2 (en) 2011-12-02 2015-12-08 Jostens, Inc. System and method for jewelry design
JP5779089B2 (ja) 2011-12-28 2015-09-16 株式会社ドワンゴ エッジ検出装置、エッジ検出プログラム、およびエッジ検出方法
CN103093225B (zh) * 2013-01-05 2016-01-20 武汉矽感科技有限公司 二维码图像的二值化方法
US9582615B2 (en) 2013-01-16 2017-02-28 Jostens, Inc. Modeling using thin plate spline technology
CN103235948B (zh) * 2013-04-22 2016-04-20 中山大学 一种二维条码的自适应阈值二值化方法
WO2015022872A1 (ja) * 2013-08-11 2015-02-19 株式会社偽物識別技術研究所 印刷のミクロ的輪郭形状を識別子とする個別物品の自動真贋判定方法
CN104517110B (zh) * 2013-09-29 2018-01-05 北大方正集团有限公司 一种二维码图像的二值化方法及系统
CN104517089B (zh) * 2013-09-29 2017-09-26 北大方正集团有限公司 一种二维码解码系统及其方法
USD789228S1 (en) 2013-11-25 2017-06-13 Jostens, Inc. Bezel for a ring
JPWO2015128918A1 (ja) * 2014-02-28 2017-03-30 パナソニックIpマネジメント株式会社 撮像装置
KR101770540B1 (ko) * 2014-05-14 2017-08-22 교도 인사쯔 가부시키가이샤 이차원 코드, 이차원 코드의 해석 시스템 및 이차원 코드의 작성 시스템
US10248825B2 (en) 2014-08-29 2019-04-02 Hewlett-Packard Development Company, L.P. Image processing
TWI567655B (zh) * 2016-02-04 2017-01-21 Calin Technology Co Ltd Object of two - dimensional code discrimination method
JP2019061527A (ja) * 2017-09-27 2019-04-18 富士通株式会社 データ判定装置、ライブラリ装置、及びデータ判定プログラム
CN115600619B (zh) * 2022-12-13 2023-04-07 深圳思谋信息科技有限公司 点阵二维码识别方法、装置、电子设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2039493T3 (es) * 1987-04-22 1993-10-01 Abbott Laboratories Lectores y formatos de codigo optico.
JP2624696B2 (ja) * 1987-07-31 1997-06-25 日本分光株式会社 スペクトル推定装置
US5136145A (en) * 1987-11-23 1992-08-04 Karney James L Symbol reader
US4939354A (en) * 1988-05-05 1990-07-03 Datacode International, Inc. Dynamically variable machine readable binary code and method for reading and producing thereof
US4908875A (en) * 1989-03-21 1990-03-13 Hughes Aircraft Company Adaptive thresholding technique
US5278400A (en) * 1991-08-19 1994-01-11 Xerox Corp Multiple threshold encoding of machine readable code
JP2835274B2 (ja) * 1994-02-24 1998-12-14 株式会社テック 画像認識装置
US5726435A (en) * 1994-03-14 1998-03-10 Nippondenso Co., Ltd. Optically readable two-dimensional code and method and apparatus using the same
JP2938338B2 (ja) * 1994-03-14 1999-08-23 株式会社デンソー 二次元コード

Also Published As

Publication number Publication date
US6081627A (en) 2000-06-27
JPH1063771A (ja) 1998-03-06
EP0825547A2 (de) 1998-02-25
DE69728482D1 (de) 2004-05-13
EP0825547A3 (de) 2001-09-19
US6181839B1 (en) 2001-01-30
EP0825547B1 (de) 2004-04-07
JP3209108B2 (ja) 2001-09-17

Similar Documents

Publication Publication Date Title
DE69728482T2 (de) Zweidimensionaler Codeleser
DE69523965T2 (de) Erkennungsverfahren für eine zweidimensionale Kodierung
DE69324079T2 (de) Verfahren und Vorrichtung zur Erfassung von Strichkoden
DE69835358T2 (de) Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes
DE69324095T2 (de) Verfahren und Vorrichtung zum Dedektieren von strichkodierten Symbolen mit Unterpixel-Interpolation
DE69515481T2 (de) Verfahren und Vorrichtung zur Dekodierung eines zweidimensionalen Symboles im Raumbereich
DE19814075B4 (de) Verfahren zum Abtasten und Erkennen mehrerer Fotografien und zum Beseitigen von Randfehlern
DE3881392T2 (de) System und Verfahren für automatische Segmentierung.
DE3633743C2 (de)
EP2417561B1 (de) Zweidimensionaler symbolcode und verfahren zum lesen des symbolcodes
DE69433492T2 (de) Verfahren und Vorrichtung zum Dekodieren von Streifencodes durch unabhängige Analyse von Streifen und Zwischenräumen
DE69716087T2 (de) System und verfahren zur bilderfassung mit hoher geschwindigkeit
DE19960555B4 (de) Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes
DE10036110B4 (de) Verfahren zur Bestimmung des Schrägwinkels eines zweidimensionalen Barcodes
DE69926205T2 (de) Artefaktentfernungstechnik für schiefenkorrigierte bilder
DE69822608T2 (de) Binarisierungsverfahren in einem Zeichenerkennungssystem
DE69709165T2 (de) Vorrichtung und verfahren zur dekodierung von streifencode-symbolen durch quotenanalyse der modulformate
EP3428834A1 (de) Optoelektronischer codeleser und verfahren zum lesen von optischen codes
DE2417282A1 (de) Vorrichtung zum erkennen eines musters
DE19624900A1 (de) Verfahren und Gerät zum Decodieren nicht aufgelöster Balkencode-Profile unter Verwendung eines Kantenfindungs-Schaltkreises
EP1260933A2 (de) Verfahren zum Erfassen von zweidimensionalen Codes
DE2858688C2 (de)
EP1288843B1 (de) Verfahren zur Erkennung eines Codes
DE69131374T2 (de) Gerät und Verfahren zur optischen Erkennung strichcodierter Zeichen
DE3718620C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: PANASONIC CORP., KADOMA, OSAKA, JP

8320 Willingness to grant licences declared (paragraph 23)