DE69835358T2 - Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes - Google Patents

Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes Download PDF

Info

Publication number
DE69835358T2
DE69835358T2 DE69835358T DE69835358T DE69835358T2 DE 69835358 T2 DE69835358 T2 DE 69835358T2 DE 69835358 T DE69835358 T DE 69835358T DE 69835358 T DE69835358 T DE 69835358T DE 69835358 T2 DE69835358 T2 DE 69835358T2
Authority
DE
Germany
Prior art keywords
points
code
image
coordinates
perceptible
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
DE69835358T
Other languages
English (en)
Other versions
DE69835358D1 (de
Inventor
Elena Brunelli
Marco Bottazzi
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.)
Datalogic SpA
Original Assignee
Datalogic SpA
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 Datalogic SpA filed Critical Datalogic SpA
Application granted granted Critical
Publication of DE69835358D1 publication Critical patent/DE69835358D1/de
Publication of DE69835358T2 publication Critical patent/DE69835358T2/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
    • 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/1473Methods for optical code recognition the method including quality enhancement steps error correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/14Image acquisition
    • G06V30/146Aligning or centring of the image pick-up or image-field
    • G06V30/1475Inclination or skew detection or correction of characters or of image to be recognised
    • G06V30/1478Inclination or skew detection or correction of characters or of image to be recognised of characters or characters lines

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verzerrungskorrekturverfahren beim Lesen von optischen Codes.
  • Der Ausdruck „optischer Code" bezeichnet im folgenden eine beliebige graphische Darstellung, welche die Funktion hat, codierte Informationen zu speichern. Spezifische Beispiele für optische Codes sind lineare oder zweidimensionale Codes, bei denen eine Codierung von Informationen mittels geeigneter Kombination von Elementen mit vorbestimmter Form, d. h. Quadrat, Rechteck oder Sechseck, in dunklen Farben (für gewöhnlich Schwarz), die durch helle Elemente (Zwischenräume, für gewöhnlich Weiß) getrennt sind, erfolgt, beispielsweise bei Strichcodes (Bar Codes), Stapelcodes (Stacked Codes) (einschließlich PDF417), Maxicodes, Datamatrixcodes, QR-Codes oder Farbcodes etc. Allgemeiner gesagt umfaßt der Ausdruck „optischer Code" andere graphische Formen mit Informationscodierungsfunktion, einschließlich nicht codierter Zeichen (Buchstaben, Zahlen etc.) und bestimmter Muster (wie Stempel, Logos, Unterschriften etc.). Die Informationen können auch mit mehr als zwei Farben, beispielsweise Grautönen, codiert werden.
  • Bekanntermaßen sind für die Codierung von Informationen zur optischen Identifikation beispielsweise von Objekten Strichcodes sehr verbreitet, die aufgrund ihrer Kompaktheit, Widerstandsfähigkeit gegenüber Umgebungsbedingungen (aufgrund dessen sie selbst bei vorhandenen Störungen automatisch decodiert werden können) und Möglichkeit zum automatischen Lesen und Interpretieren auch in einer zunehmenden Anzahl unterschiedlicher Anwendungen verwendet werden. Sie ermöglichen jedoch nur die Speicherung relativ weniger Informationen; um diese Einschränkung zu überwinden, wurden in jüngster Zeit zweidimensionale Codes, wie Datamatrixcodes, Maxicodes, QR-Codes und Stapelcodes (z. B. PDF417) vorgeschlagen, die beispielhaft in den 1a, 1b, 1c bzw. 1d gezeigt sind.
  • Zweidimensionale Codes können dadurch gelesen werden, daß zweidimensionale Bilder in einem Bereich erhalten werden, in dem das Vorhandensein eines Codes erwartet wird, und der Code zur nachfolgenden Decodierung innerhalb des Bildes lokalisiert wird. Die Codelokalisierung umfaßt allgemein eine Reihe von Schritten, um zunächst innerhalb des in einem Computerspeicher gespeicherten Bildes die Region oder Regionen, in denen ein oder mehrere Codes vorhanden sind, von Bereichen zu unterscheiden, in denen andere Objekte oder Zahlen vorhanden sind; danach werden bestimmte Erkennungsmuster lokalisiert, die für jeden Code typisch sind, Informationen über den Codetyp erfaßt und schließlich der Code genau abge grenzt. Das abgegrenzte Bild des Codes wird dann verarbeitet, um zur Decodierung erforderliche Charakteristika zu extrahieren, und schließlich wird der Code decodiert.
  • Aufgrund geometrischer Verzerrungen, die durch mangelnde Parallelität zwischen der Ebene, die den Code enthält (dessen Bild erfaßt wird), und der Aufnahmeebene verursacht werden, hat das Viereck, das den Code in dem gespeicherten Bild einbeschreibt, jedoch im allgemeinen keine regelmäßige geometrische Form. Insbesondere können aufgrund von Drehungen um drei räumliche Achsen (Vorhandensein von Nick-, Versatz- und Neigungswinkel) perspektivische Deformierungen auftreten. Diese Deformierungen, die manchmal nicht vernachlässigt werden dürfen, transformieren den Code (mit rechteckiger oder quadratischer Form) in unregelmäßige Vierecke.
  • Ein typisches Deformierungsbeispiel ist in 2 veranschaulicht, die einen Datamatrixcode zeigt, der um 50° gegenüber der Leserebene geneigt ist.
  • Um perspektivische Deformierungen zu beseitigen oder zu kompensieren, wird derzeit das erfaßte Bild reskaliert, indem Dreh-Translationalgorithmen (roto-translation algorithms) auf alle Pixel des erfaßten Bildes (oder auf den Bildabschnitt, in dem der Code lokalisiert und abgegrenzt wurde) angewendet wird, um ein neues Bild zu erhalten, bei dem der Code die anfängliche reguläre Form annimmt.
  • Dazu müssen bestimmte Informationen des Codes, der gelesen wird, bekannt sein: in dem Fall des Maxicodes beispielsweise, kann das Zentrum (bull's eye) oder die Zielscheibenmitte (Ziel, das aus einer Reihe konzentrischer Kreise in der Codemitte besteht) analysiert werden, und wenn es elliptisch ist, werden Drehverschiebung-Korrekturparameter abgeleitet und eine Drehverschiebung mit den abgeleiteten Parametern durchgeführt.
  • Die bekannten Systeme erfordern jedoch viele komplexe Rechenoperationen (Matrizen werden verwendet und alle Punkte des Bildes werden transformiert); folglich sind viele Rechenressourcen, die nicht allen Lesern zur Verfügung stehen, und eine erhebliche Rechenzeit erforderlich, so daß der Lesevorgang langsam erfolgt.
  • Die Veröffentlichung „A robust and fast skew detection algorithm for generic documents" von Bin Yu et al., Ausg. 29, 10. Oktober 1996, Seite 1599-1629, XP000633789, offenbart einen Versatzerfassungsalgorithmus, der auf einer hierarchischen Hough-Transformation basiert und in der Lage ist, den Versatzwinkel für verschiedene Dokumentenbilder zu erfassen. Der Algorithmus besteht aus zwei Schritten. Im ersten Schritt werden die Mittelpunkte verbundener Komponenten mittels einer Graphdatenstruktur extrahiert. Dann wird eine hierar chische Hough-Transformation auf die ausgewählten Mittelpunkte angewendet. Der Versatzwinkel entspricht der Position der höchsten Spitze in dem Hough-Raum.
  • Es ist das Ziel der vorliegenden Erfindung, ein Verzerrungskorrekturverfahren anzugeben, das eine geringere Anzahl an Arbeitsvorgängen und weniger Rechenzeit als bekannte Verfahren benötigt.
  • Die vorliegende Erfindung liefert eine Verzerrungskorrektur nach Anspruch 1.
  • Die ausgewählten charakteristischen Punkte sind vorzugsweise die zentralen Pixel jedes Elements des optischen Codes. Auf diese Weise wird nur der signifikanteste Punkt jedes Elements, der nicht durch den Randeffekt beeinflußt wird, der durch angrenzende Codeelemente unterschiedlicher Farbe verursacht wird, zur Decodierung verwendet; zudem wird die Anzahl an Arbeitsvorgängen, die zur Beseitigung der Verzerrung erforderlich sind, drastisch verringert.
  • Vorteilhafterweise wird zunächst die Struktur des Codes, der gelesen wird, bestimmt, um die Anzahl an Zeilen und Spalten in dem Code zu bestimmen. Dann wird der Gittererzeugungsschritt ausgeführt; dies umfaßt die Schritte Erzeugen eines rechteckigen Gitters, das aus Linien gebildet ist, die eindeutig die Koordinaten wahrnehmbarer Punkte definieren, die dem zentralen Punkt jedes Codeelements zugeordnet sind; Bestimmen der geometrischen Transformation, die Referenzpunkte einer bekannten Position in dem deformierten Bild mit entsprechenden Punkte in dem deformierten Bild verbindet; und Berechnen der Koordinaten charakteristischer Punkte, die den wahrnehmbaren Punkten aufgrund der geometrischen Transformation zugeordnet werden.
  • Weitere Merkmale der Erfindung werden aus der Beschreibung einer bevorzugten Ausführung deutlich, die rein beispielhaft und nicht einschränkend ist und in den beigefügten Zeichnungen gezeigt ist, in denen:
  • 1a, 1b, 1c und 1d Beispiele von zweidimensionalen Codes bekannter Art zeigen;
  • 2 ein Beispiel eines von einem Codeleser erfaßten Bildes vor der Verarbeitung zeigt;
  • 3 ein Flußdiagramm für das Lesen eines optischen Codes aus zweidimensionalen Bildern zeigt;
  • 4 ein Flußdiagramm für die Verzerrungskorrektur eines Bildes gemäß der vorliegenden Erfindung zeigt;
  • 5 ein Beispiel eines zweidimensionalen Codes einer ersten Art während eines Schritts des Verzerrungskorrekturverfahrens gemäß der Erfindung zeigt;
  • 6 ein Beispiel eines zweidimensionalen Codes einer zweiten Art während des Schritts von 5 zeigt;
  • 7 die graphische Darstellung des Signals zeigt, das in einem nachfolgenden Schritt des vorliegenden Verfahrens erhalten wird;
  • 8 ein Beispiel eines Gitters zeigt, das gemäß dem vorliegenden Verfahren erzeugt wird;
  • 9 ein weiteres Beispiel eines Gitters zeigt, das gemäß dem vorliegenden Verfahren erzeugt wird;
  • 10 das Bild eines zweidimensionalen Codes zeigt, der von einem Lesegerät erfaßt wird und dem ein Gitter gemäß der vorliegenden Erfindung überlagert ist;
  • 11 die Beziehung zwischen einem rechteckigen Gitter und dem zugehörigen transformierten Gitter zeigt; und
  • 12 ein Beispiel eines Codes und den zugehörigen Ausgangspunkten zum Erzeugen des Gitters gemäß einer Variante des vorliegenden Verfahrens zeigt.
  • Gemäß dem Flußdiagramm von 3 wird zum Lesen eines Codes aus einem zweidimensionalen Bild zunächst das Bild eines Raumabschnitts, in dem zumindest ein Datencode gesucht wird, erfaßt und gespeichert (Block 10). Genauer gesagt kann das Bild mit jeglicher Art von Videokamera oder Fotogerät aufgenommen werden, die bzw. das ein digitalisiertes Bild in Grautönen ausgeben kann, das aus mehreren Pixeln gebildet ist, die jeweils die Helligkeit des Bildes in dem betrachteten Punkt darstellen und vorzugsweise mit mindestens 8 Bit (mindestens 256 Graustufen) codiert sind. Das digitalisierte Bild wird dann zur nachfolgenden Verarbeitung in einem geeigneten Speicher (nicht gezeigt) gespeichert.
  • Dann werden Regionen von Interesse, die möglicherweise einen optischen Code enthalten, innerhalb des gespeicherten Bildes gesucht (Block 11). Zu diesem Zweck werden beispielsweise die Regionen mit höherem Kontrast gesucht, da Codes aus einer Matrix von Elementen gebildet sind (wobei Element die kleinste Komponente des Codes bezeichnet), die durch min destens zwei unterschiedliche Reflexionsgrade (typischerweise schwarz und weiß) gekennzeichnet sind, wobei deren spezifische Alternation die Informationen codiert.
  • Dann wird für jede dieser Regionen von Interesse der Code exakt lokalisiert und sogenannte Erkennungsmuster werden bestimmt, Block 12. Der Lokalisierungsschritt 12 an sich erfordert je nach Codetyp unterschiedliche Verfahren. Bei Datamatrixcodes (1a) beispielsweise können die Koordinaten der L-Form (die an die linke und untere Seite des Codes in 1a angrenzt) mittels eines Eckenerkennungsalgorithmus, der beispielsweise in D. Montgomery, G.C. Runger: „Applied Statistics and Probability for Engineers", Wiley, 1994, in R. Jain, R. Kasturi, B.G. Shunek: „Machine vision", McGraw Hill, 1995, beschrieben ist, oder mittels des Standardverfahrens bestimmt werden, das in den AIM-Vorgaben (AIM-Vorgaben für Datamatrixcodes) vorgeschlagen wird und darauf basiert, daß zwei Segmente mit minimaler Größe (ihre Größe ist aus den Anwendungsvorgaben bekannt) durchsucht werden, welche die beiden Seiten der L-Form sind.
  • Was Maxicodes betrifft (1b), so umfaßt der Lokalisierungsschritt 12 das Bestimmen der Koordinaten der Codemitte oder der Zielscheibenmitte (bull's eye) beispielsweise mittels des Standardverfahrens, das in der AIM-Vorgabe (AIM-Vorgabe für Maxicodes) beschrieben ist und darauf basiert, daß die Vorlage (template) durchsucht wird, die aus abwechselnd schwarzen und weißen Pixeln gebildet ist, die charakteristisch für die Codemitte sind.
  • Bei QR-Codes werden die Koordinaten der Scheitel von drei Quadraten, die in drei der vier Ecken des Codes (1c) positioniert sind, mittels des Standardverfahrens bestimmt, das beispielsweise in den AIM-Vorgaben für QR-Codes vorgeschlagen wird.
  • Im Fall von linearen Codes (Strichcodes) oder Stapelcodes (PDF417, 1d) werden wenigstens drei Striche des Codes mittels bekannter Segmenterkennungsalgorithmen bestimmt (siehe beispielsweise den oben erwähnten Text von D. Montgomery, G.C. Runger, oder R. Jain, R. Kasturi, B.G. Shunek).
  • In dem Lokalisierungsschritt 12 werden zudem Informationen über die geometrische Struktur und die Abmessungen des Codes extrahiert und nachfolgend verwendet. Bei Maxicodes beispielsweise werden die Abmessungen des Sechsecks, aus dem sei gebildet sind, geschätzt.
  • Dann wird ein Segmentierungsschritt (Block 13) durchgeführt, der das Trennen des den einzigen Code enthaltenden Bereichs von dem restlichen Teil des digitalisierten Bildes umfaßt. Der Zweck dieses Schritts besteht darin, die Koordinaten der vier Scheitel des Vierecks, das den Code einbeschreibt, zu bestimmen. Die Segmentierung kann mit einem in der Literatur bekannten Mechanismus zum schrittweisen Pixelhinzufügen (Regionenwachstum) (der bei spielsweise die „Konvexe-Hülle"-Algorithmen verwendet, die in „Algorithms" von R. Sedgewick, Herausgeber Addison Weseley beschrieben sind) unter Verwendung der eben erhaltenen Positionsinformationen und unter Verwendung des Vorhandenseins von Ruhezonen um den Code herum durchgeführt werden. Bei einem Maxicode ist es beispielsweise möglich, ein Regionenwachstum von dem äußeren Kreis der Codemitte anzuwenden, wenn man einen Schätzwert der Abmessungen der einzelnen Sechsecke und des Gesamtbereichs, der von dem Code eingenommen wird, hat. Am Ende des Segmentierungsschritts 13 erhält man daher ein nachstehend angegebenes Bild als segmentiertes Bild.
  • Dann wird ein Schritt zur Verzerrungskorrektur und Decodierungscharakteristikberechnung durchgeführt, Block 14. Bei diesem Schritt, der nachfolgend detaillierter mit Bezug auf 4 beschrieben wird, wird, ausgehend von dem segmentierten Bild, das deformiert ist und dessen Punkte Grautönen zugeordnet sind, für jedes den Code bildende Element die perspektivische Verzerrung korrigiert, die Grauwerte extrahiert und der binarisierte Wert (weiß oder schwarz, der die Decodierungscharakteristika oder -Merkmale definiert) bestimmt, der für den Decodierungsalgoritmus erforderlich ist, wobei ein transformiertes und digitalisiertes Bild erhalten wird, das auch Decodierungsbild genannt wird. Zu diesem Zweck wird, wie es unten detaillierter beschrieben wird, ein Codegitter erzeugt, wodurch die Anzahl an zu verarbeitenden Pixeln drastisch reduziert wird und der Code schneller gelesen wird.
  • Schließlich wird unter Verwendung der Decodierungsmerkmale, die gemäß einer vorbestimmten Sequenz zugeführt werden, die Decodierung auf bekannte Weise durchgeführt (Block 15), wodurch die codierten Informationen extrahiert werden.
  • Zur Korrektur der perspektivischen Fehler wird angenommen, daß der abgebildete Code physisch auf einer Ebene angeordnet ist. Wie es oben erwähnt ist, stehen zudem zu Beginn des Decodierungsmerkmal-Extraktionsschritts 14 die folgenden Informationen zur Verfügung:
    • 1. Codetyp: Diese Information ist nützlich, um die Gittererzeugungsschritte je nach Codetyp zu unterscheiden;
    • 2. Codeausrichtung: Die Mehrheit der Codes hat keine symmetrische Struktur, so daß es notwendig ist, die genaue Codeausrichtung in dem Bild zu kennen. Diese Information kann durch die Position des Erkennungsmusters ausgedrückt werden (z. B. das L des Datamatrixcodes).
    • 3. Koordinaten der vier Scheitel V1, V2, V3, V4 des Vierecks, das den Code einbeschreibt (11).
  • Mit Bezug auf 4 umfaßt der Schritt der Verzerrungskorrektur und Decodierungsmerkmalextraktion 14 zunächst den Schritt des Berechnens eines später benötigten Binarisierungs-Schwellenwerts, Block 20. Hierzu wird das kumulative Histogramm der Graustufen jedes Pixels erzeugt, das zu einem Bildabschnitt gehört, der den lokalisierten Code, vorzugsweise den Mittelteil des Codes, enthält. Dieser Abschnitt muß so groß sein, daß er eine Anzahl an Pixeln enthält, die ausreichend hoch ist, um statistisch relevant zu sein. Typischerweise müssen wenigstens tausend Pixel zur Verfügung stehen; es kommen beispielsweise Gruppen von 50 × 50 oder 60 × 60 in Betracht. Das Histogramm wird dann analysiert und ein mittlerer Grauwert, der einen Grauschwellenwert definiert, wird berechnet. Das zur Bestimmung des Schwellenwerts verwendete Verfahren kann ein Verfahren sein, das in der Literatur bekannt ist (siehe beispielsweise den Text von R. Gonzales, R.E. Woods, „Digital Image Processing", Addison Wesley, 1992, oder den Text von D. Montgomery, G.C. Runger, der oben genannt ist).
  • Dann wird die Struktur des Codes erfaßt, die durch die Codeausrichtung (bereits bekannt, wie es oben angegeben ist) und die Anzahl an Elementen bestimmt wird, die in jeder Zeile und Spalte vorhanden sind. Bei Codes festgelegter Größe, beispielsweise Maxicodes, ist die Anzahl an Elementen in jeder Zeile sowie die Anzahl an Zeilen a priori bekannt. Bei anderen Codes sind sie jedoch nicht a priori bekannt, sondern müssen aus dem spezifischen gelesenen Code bestimmt werden.
  • Folglich prüft das Verfahren, ob das durch den Segmentierungsschritt 13 erhaltene segmentierte Bild zu einem Maxicode gehört, Block 21; falls nicht, Ausgabe NEIN, werden spezifische Scans des segmentierten Bildes ausgeführt, Block 22; die Anzahl an Elementen in jeder Zeile und jeder Spalte wird berechnet, Block 23, und der Schritt des Erzeugens eines Bildgitters wird durchgeführt (Blöcke 24-26); falls doch (Ausgabe JA von Block 21), wird der Schritt des Erzeugens eines Bildgitters (Blöcke 24-26) direkt durchgeführt.
  • Wenn spezifische Scans ausgeführt werden, Block 22, ist das Verfahren je nach Codetyp unterschiedlich. Bei Datamatrixcodes werden die Taktdaten, die auf den von dem Erkennungsmuster (L-Form, die an die linke und untere Seite des Codes in 1a angrenzt), abgewandten Seiten liegen, bestimmt; jede dieser Seiten hat in der Tat eine regelmäßige Struktur, die aus einzelnen, abwechselnd schwarzen und weißen Elementen besteht, welche die Anzahl an Elementen pro Zeile und Spalte des Codes festlegen. Dadurch, daß die Koordinaten der Scheitel V1-V4 des Codes und insbesondere der drei Scheitel V1-V3, welche die beiden von dem Identifikationsmuster abgewandten Seiten begrenzen, genau bekannt sind (siehe 5, die ein Beispiel eines Datamatrixcodes zeigt), werden die Pixel, die entlang der beiden oben erwähnten abgewandten Seiten angeordnet sind (siehe die beiden Scanlinien 40 und 41 in 5), aus dem segmentierten Bild erfaßt.
  • Im Gegensatz dazu gibt es bei einem QR-Code (siehe 6) zwei Linien, welche die Seiten der drei charakteristischen Quadrate verbinden, die denselben Zweck haben (Linien 44, 45). Hier sind die Koordinaten der drei Scheitel, die den drei Quadraten (Punkte A, B und C) ge genüberliegen, aus dem Lokalisierungsschritt 12 bekannt; folglich, analog zu dem vorhergehenden, wird der Wert der Pixel, die in den Segmenten der Linien 44, 45 angeordnet sind, welche die Scheitel A-C verbinden, aus dem segmentierten Bild erfaßt.
  • In der Praxis wird in beiden Fällen zumindest ein Scan an jedem charakteristischen Bereich des Codes ausgeführt. Auf diese Weise wird eine Wellenform (in 7 gezeigt) erhalten, welche den Verlauf der Helligkeit L in einer allgemeinen Scanrichtung x darstellt. Diese Wellenform wird dann verwendet, um die Anzahl an Elementen in jeder Zeile und die Anzahl an Zeilen des Codes zu berechnen, Schritt 23. Da die Wellenform insbesondere derjenigen ähnlich ist, die durch Scannen eines Strichcodes mit einem Laserstrahl erhalten wird (mit dem Vorteil, daß die Struktur des gelesenen Musters a priori bekannt ist), ist es möglich, ein bekanntes Verfahren zum Decodieren von Strichcodes zu verwenden. Es ist beispielsweise möglich, zunächst den Mittelwert der erhaltenen Helligkeit L (Linie 46 von 7) zu berechnen und die Anzahl an Malen aufzuzeichnen, die das Helligkeitssignal die Mittelwertlinie 46 überquert. Am Ende wird die Anzahl N1 von Elementen in jeder Zeile (Anzahl von Spalten) und die Anzahl N2 von Zeilen des Codes erhalten, der gelesen wird.
  • Der Gittererzeugungsvorgang umfaßt einen ersten Unterschritt 24, bei dem ein ideales rechteckiges Gitter aus einem Array von wahrnehmbaren Punkten erzeugt wird, einen zweiten Unterschritt 25, bei dem die Homographie ermittelt wird, die das rechteckige Gitter in das deformierte Gitter transformiert, das dem segmentierten Bild entspricht, indem eine Reihe von Punkten verwendet wird, deren Position innerhalb des Codes (Referenzpunkte) bekannt ist, und einen dritten Unterschritt 26, bei dem ein deformiertes Gitter, das dem idealen Gitter entspricht, unter Verwendung der eben ermittelten Homographie erzeugt wird.
  • Die Erzeugung des rechteckigen Gitters erfolgt derart, daß die Koordinaten seiner Punkte (wahrnehmbare Punkte genannt) der Mitte der Elemente entsprechen, die den zu lesenden Code bilden, wobei ein Gitter verwendet wird, das aus vertikalen und horizontalen Linien gebildet ist, die, wie es oben beschrieben ist, eindeutig mit den wahrnehmbaren Punkten korreliert sind, wobei die mögliche perspektivische Verzerrung und die Art des zu lesenden Codes berücksichtigt werden.
  • In der Praxis ist für alle Codearten ein rechteckiges Gitter mit einer Rasterung definiert, die optional für jede Richtung unterschiedlich, aber konstant ist, wobei die Anzahl an Zeilen und Spalten der in dem Code entspricht.
  • Insbesondere wird bei Datamatrix- und QR-Codes das Gitter so erzeugt, daß die Schnittpunkte der Gitterzeilen und -Spalten die Mitte jedes Codeelements darstellen. Hierzu werden die Umrisse des gewünschten Decodierungsbildes, d. h. des Bildes, das die Decodierungsmerk male enthält, frei festgelegt. Beispielsweise werden die Koordinaten für die vier Scheitel V1', V2', V3', V4' (11) des Decodierungsbildes frei festgelegt, z. B. (0, 0), (0, 1), (1, 1), (1, 0), um ein Decodierungsbild zu erhalten, das Seiten mit einheitlicher Länge und einer Rasterung hat, die optional in die horizontale und vertikale Richtung unterschiedlich ist, oder (0, 0), (0, N1), (N2, N1), (N2, 0), wobei N1 und N2 die oben definierte Bedeutung haben, um ein Decodierungsbild zu erhalten, das Seiten mit optional unterschiedlicher Länge (falls N1 ≠ N2) und einer gleichgroßen Rasterung in die horizontale und vertikale Richtung hat.
  • Sobald die Länge der horizontalen und vertikalen Seite des Decodierungsbildes basierend auf der Anzahl von Zeilen und Spalten des Decodierungsbildes (die, wie oben erwähnt, gleich der Anzahl von Zeilen und Spalten des zu lesenden Codes ist) festgelegt wurde, werden die Koordinaten der einzelnen Zeilen und Spalten, deren Schnittpunkte die Punkte des Decodierungsbildes darstellen, denen nachfolgend die entsprechenden binarisierten Helligkeitswerte zugeordnet werden, automatisch von diesen abgeleitet. 8 zeigt beispielsweise das rechteckige Gitter, das in dem rein beispielhaften Fall von N1 = N2 = 5 erhalten wird, sobald die Koordinaten der vier Scheitel V1', V2', V3', V4' des Decodierungsbildes festgelegt wurden. Die Kreuze in 8 zeigen die Schnittpunkte der Zeilen und Spalten des Decodierungsbildes, deren Koordinaten sofort erhalten werden können, sobald die Länge der Seiten des Decodierungsbildes festgelegt wurde. Falls die Länge der Seiten beispielsweise auf 1 = 5 festgesetzt wird, lauten die erhaltenen Koordinaten (0,5, 0,5), (0,5, 1,5), ..., (1,5, 0,5), (1,5, 1,5) etc.
  • Im Gegensatz dazu wird bei Maxicodes (die aus sechseckigen Elementen gebildet sind, die wie eine Bienenwabe angeordnet sind) das rechteckige Gitter so erzeugt, daß die Schnittpunkte der horizontalen und vertikalen Linien (konzeptionell den Zeilen und Spalten des Datamatrixcodes und des QR-Codes ähnlich) die Mitte der Sechsecke der ungeraden Zeilen darstellen, während die Mittelpunkte zwischen zwei aufeinanderfolgenden Schnittpunkten die Mitte der Sechsecke der geraden Zeilen darstellen. Durch Erzeugen einer rechteckigen Matrix mit konstanter, aber unterschiedlicher Rasterung (beispielsweise H in horizontaler Richtung und V in vertikaler Richtung, siehe 9) in den beiden Richtungen und Analysieren derselben Zeile für Zeile, befinden sich die wahrnehmbaren Punkte (wieder durch Kreuze in 9 angegeben) abwechselnd in den Schnittpunkten des rechteckigen Gitters und in den dazwischenliegenden Punkten der Schnittpunkte. Es ist wichtig zu betonen, daß bei diesem Schritt alle Koordinaten der Mitten der Codeelemente, die zur Decodierung erforderlich sind, (und daher der Wert der Teilung H und V neben der präzisen Ausrichtung bei einer vorausgesetzten Unsicherheit von 90°), sowie die (festgelegte) Anzahl an Zeilen und Spalten bekannt ist, so daß die Erzeugung des rechteckigen Gitters besonders einfach ist.
  • Sobald der Schritt des Bestimmens der Koordinaten aller wahrnehmbaren Punkte abgeschlossen ist, ist es erforderlich, das rechteckige Gitter auf das reale segmentierte Bild „abzubilden", indem die Koordinaten der Punkte (Pixel) auf dem segmentierten Bild berechnet werden, die den wahrnehmbaren Punkten des rechteckigen Gitters entsprechen. Das Problem wird durch die geometrische Deformierung des Codes verkompliziert. Dieses Problem wird dadurch gelöst, daß auf Transformationen zurückgegriffen wird, die aus der traditionellen Geometrie bekannt sind, beispielsweise Homographie. Wenn die Koordinaten der vier Scheitel V1, V2, V3, V4 des Vierecks, das den Code in dem gespeicherten Bild einbeschreibt, (oder den vier Scheiteln des segmentierten Bildes) bekannt sind und die Koordinaten der vier entsprechenden Scheitel V1', V2', V3', V4' des Decodierungsbildes so festgelegt werden, daß die Codegeometrie (ursprüngliches rechteckiges Gitter) berücksichtigt wird, wird die Homographie, welche die Koordinaten der Scheitel V1', V2', V3', V4' in der Ebene des Decodierungsbildes in die Koordinaten der entsprechenden Scheitel V1, V2, V3, V4 in der Ebene transformiert, die das segmentierte Bild enthält, eindeutig identifiziert (Homographieermittlungsschritt 25). In der Praxis werden Koeffizienten einer Matrix C bestimmt, welche die Koordinaten (T, X, Y) der entsprechenden Scheitel V1, V2, V3, V4 in dem segmentierten Bild liefert, wenn sie mit den Koordinaten (1, x, y) der Scheitel V1', V2', V3', V4' multipliziert werden. Zudem ermöglicht diese Homographie bekanntermaßen, daß alle Punkte in der Ebene des Decodierungsbildes in entsprechende Punkte in der Ebene umgewandelt werden können, die das segmentierte Bild enthält.
  • Insbesondere bei Maxicodes wird auch die invertierte Transformation (Matrix C–1) berechnet, die notwendig ist, um das ideale Gitter bezüglich des Codes korrekt auszurichten (da hier die aus dem Erkennungsmuster resultierende Ausrichtung mit einer Abweichung von ± 90° bekannt ist, wie es oben erwähnt ist).
  • Sobald die Homographie bekannt ist, wird sie auf alle wahrnehmbaren Punkte des rechteckigen Gitters (das in dem Gittererzeugungsschritt 24 erhalten wird) angewendet. In der Praxis werden die Koordinaten der Punkte des segmentierten Bildes berechnet, im folgenden charakteristische Punkte genannt, die den wahrnehmbaren Punkten des rechteckigen Gitters entsprechen, wobei eine Matrix erhalten wird (Schritt 26 zur Berechnung des transformierten Gitters). An diesem Punkt wird Bezug auf 10 und 11 genommen, die das transformierte Gitter, das (aufgrund der Homographie) dem rechteckigen Gitter entspricht, das dem Code von 2 überlagert ist, bzw. die Beziehung zwischen einem rechteckigen Gitter und einem transformierten Gitter zeigen. Zudem zeigt 10 Scanlinienpaare 40, 41 und ein Rechteck 50, das in dem Schwellenwertberechnungsschritt 20 verwendet wird.
  • Nachfolgend wird für alle charakteristischen Punkte, die eben identifiziert wurden und im Idealfall der Mitte jedes Codeelements entsprechen, der Helligkeitswert, der mit diesen in dem segmentierten Bild assoziiert ist, erfaßt und binarisiert, wobei der Schwellenwert verwendet wird, der in dem Schwellewertberechnungsschritt 20 (Wertbinarisierungsschritt 27) berechnet wurde. Der soeben erhaltene binarisierte Wert wird dann dem entsprechenden wahrnehmbaren Punkt an dem rechteckigen Gitter zugeordnet, und es wird Punkt für Punkt eine Matrix von Punkten erzeugt, welche die Decodierungsmerkmale darstellen (Decodierungsbild-Rekonstruktionsschritt 28).
  • In der obigen Beschreibung wurde insbesondere Bezug auf Datamatrixcodes, Maxicodes und QR-Codes genommen. Tatsächlich wird die Decodierungsmerkmalextraktion für lineare Codes und Stapelcodes einfacher auf andere Weise durchgeführt. Das vorliegende Verfahren ist jedoch auch auf diese Codes anwendbar und wird auch vorteilhaft in dem Fall von Codes eingesetzt, die fehlerhaft sind oder denen Teile fehlen.
  • Insbesondere ist es bei linearen Codes möglich, das Gittererzeugungsverfahren anzuwenden und die für mehrere Zeilen erhaltenen Daten zu mitteln, wobei der oben beschriebene Gittererzeugungsvorgang eingesetzt wird, um ein Gitter mit einer minimalen Anzahl vorausgewählter Zeilen zu verwenden.
  • Bei Stapelcodes ist es notwendig, den Gittererzeugungsschritt anzupassen und die Anzahl an Zeilen auszuwählen, um stets wenigstens eine Transformation für jede nützliche Zeile des Stapelcodes sicherzustellen.
  • Die Vorteile des beschriebenen Verfahrens sind wie folgt.
  • Zunächst ist es höchst widerstandsfähig gegenüber geometrischen Deformierungen und ermöglicht die Decodierung von Codes, die mit Versatz- und/oder Nickwinkeln von bis zu 50° erfaßt wurden. Es ist insbesondere für manuelle Lesegeräte vorteilhaft.
  • Desweiteren ist das vorliegende Verfahren höchst zuverlässig, da es für jedes Element des Codes nur den mittleren Punkt oder das mittlere Pixel, oder den Punkt sucht, der weniger durch Randeffekte beeinflußt wird. In der Tat sind die Pixel, die am Rand der Codeelemente angeordnet sind, die an Codeelemente unterschiedlicher Farbe angrenzen, häufig unscharf, was sowohl auf Druck- als auch Bilderfassungsvorgänge zurückzuführen ist; folglich bewirkt ein separates oder kumulatives Verarbeiten der Helligkeitspegel der Randpixel eine Verschlechterung der erhältlichen Daten. Das vorliegende Verfahren verhindert somit diese Verschlechterung, indem es ausschließlich an theoretisch weniger empfindlichen Pixeln arbeitet.
  • Das Verfahren ist im Vergleich zu standardmäßigen AIM-Verfahren schnell. In der Tat arbeitet das Standardverfahren bei der Extrahierung der Decodierungsmerkmale bei Maxicodes in dem Frequenzraum und erfordert eine zweidimensionale FFT des gesamten Bildes und dann eine invertierte FFT. Im Gegensatz dazu findet gemäß der vorliegenden Erfindung keine Ope ration im Frequenzbereich statt, und die Transformationen in dem Raum (Homographie) werden nur an wenigen Pixeln des Bildes durchgeführt.
  • Das vorliegende Verfahren ist zudem unabhängig von Codeabmessungen und -Ausrichtung. In der Tat kann es Codes mit vielen unterschiedlichen Abmessungen decodieren. Dieser Vorteil ist besonders wichtig in dem Fall von Datamatrixcodes, QR-Codes und PDF-codes, da deren Abmessungen extrem variieren.
  • Wie es oben erwähnt ist, ermöglicht das vorliegende Verfahren innerhalb bestimmter Grenzen das Lesen und Decodieren von Codes, die fehlerhaft sind oder denen Teile fehlen, z. B. die entlang der Zeilen und Spalten angeordnet sind, welche die Taktdaten enthalten. In der Tat ermöglicht es die Berechnung der Länge (Modul) jedes Elements und die Erfassung fehlerhafter Elemente, die beispielsweise Längen gleich einem Vielfachen (oder einem Bruchteil) der meisten Taktleitungselemente haben, und somit die Korrektur der erfaßten Anzahl an Zeilen und Spalten basierend auf den erhaltenen Modulinformationen.
  • Schließlich ist ersichtlich, daß zahlreiche Modifikationen und Variationen an dem hier beschriebenen und dargestellten Verfahren vorgenommen werden können, die alle im Bereich der Erfindung liegen, wie er durch die beiliegenden Ansprüche definiert ist. Insbesondere wird betont, daß, obwohl das beschriebene Korrekturverfahren perspektivische Deformierungen korrigieren kann, die nur mit einem fehlenden Parallelismus zwischen der Ebene des Codes und der Aufnahmeebene zusammenhängen, wie es oben erwähnt ist, es optional mit anderen Algorithmen zum Kompensieren anderer Deformierungen verbunden sein kann, die beispielsweise aufgrund einer Krümmung der Oberfläche des Etiketts auftreten.
  • Zudem können die erwähnten Merkmale und die beschriebene Schrittfolge durch andere technisch äquivalente ersetzt werden.
  • Es wird beispielsweise betont, daß die Homographie aus einer beliebigen Gruppe von vier Referenzpunkten des deformierten Bilds erhalten werden kann, das eine bekannte Position in dem Code (in dem ursprünglichen Rechteck) hat. Es ist insbesondere bei QR-Codes möglich, die vier Punkte zu verwenden, die in 12 mit einem Kreuz markiert sind, d. h. die Endpunkte der Scans, die während Schritt 22 ausgeführt werden.
  • Desweiteren kann der Binarisierungsschwellenwert-Berechnungsschritt 20 nach dem Gittererzeugungsschritt direkt vor dem Binarisierungsschritt 27 durchgeführt werden. Ähnlich kann der Homographieermittlungsschritt 25 vor dem Gittererzeugungsschritt 24 und den Schritten Erzeugen des transformierten Gitters 26, Binarisierung 27 durchgeführt werden und die Erzeugung 28 des decodierten Bildes kann Punkt für Punkt anstelle jedes einzelnen für die Gruppe von wahrnehmbaren Punkten durchgeführt werden; sobald die Koordinaten für einen ersten wahrnehmbaren Punkt ermittelt wurden, kann beispielsweise der entsprechende transformierte Punkt in dem segmentierten Bild bestimmt und der mit diesem verbundene Helligkeitswert binarisiert werden; das Verfahren fährt dann für jeden identifizierten wahrnehmbaren Punkt iterativ auf die gleiche Weise fort.
  • Schließlich kann der Gittererzeugungsschritt durchgeführt werden, um anstelle nur der alleinigen Mitte jedes Codeelements eine kleine Untergruppe von Pixeln zu bestimmen, die nahe der Mitte angeordnet sind, und dann den Mittelwert der Helligkeit des Pixeluntergruppe zu berechnen, was für die Schnelligkeit und Einfachheit der Vorgänge zum Extrahieren des Decodierungsmerkmals nachteilig ist.

Claims (20)

  1. Verzerrungs-Korrekturverfahren für ein deformiertes Bild, das beim Lesen eines optischen Codes abgeleitet wurde, wobei der optische Code mehrere Elemente aufweist und das deformierte Bild mehrere Punkte aufweist, wobei jedem Punkt ein entsprechender Helligkeitswert zugeordnet ist, mit folgenden Verfahrensschritten: Erzeugen (24 bis 26) eines zweidimensionalen Gitters, das an das deformierte Bild angepaßt ist, um in dem deformierten Bild mehrere charakteristische Punkte zu identifizieren, wobei die Anzahl der charakteristischen Punkte geringer ist als die Anzahl der Punkte des deformierten Bildes; und Erzeugen eines transformierten Bildes (28), das aus wahrnehmbaren Punkten besteht, mit Hilfe einer geometrischen Transformation, welche die charakteristischen Punkte und die wahrnehmbaren Punkte korreliert, wobei jeder der charakteristischen Punkte einem entsprechenden wahrnehmbaren Punkt aufgrund dieser geometrischen Transformation entspricht und wobei die Anzahl der wahrnehmbaren Punkte gleich der Anzahl der charakteristischen Punkte ist.
  2. Verfahren nach Anspruch 1, gekennzeichnet durch die folgenden Verfahrensschritte: Erzeugen (24) eines regelmäßigen Gitters, das mehrere der wahrnehmbaren Punkte umfaßt; Erzeugen (25, 26) des Gitters des verformten Bildes zum Identifizieren der charakteristischen Punkte, die jeweils einem entsprechenden wahrnehmbaren Punkt entsprechen, mit Hilfe der geometrischen Transformation; und Erzeugen des transformierten Bildes (28) durch Zuordnen von Helligkeitswerten der charakteristischen Punkte zu entsprechend wahrnehmbaren Punkten, wobei das transformierte Bild zur Extraktion der Information, die in dem optischen Code codiert ist, verwendbar ist.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß wenigstens ein charakteristischer Punkt für jedes Element des optischen Codes vorgesehen wird.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß die charakteristischen Punkte zentrale Punkte jedes Elementes des optischen Codes sind.
  5. Verfahren nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß der Schritt des Ermittelns der Struktur (21 bis 23) des Codes ausgeführt wird, bevor das Gitter (24 bis 26) erzeugt wird.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß der Schritt des Ermittelns der Struktur (21 bis 23) den Schritt des Ermittelns der Anzahl der Elemente (22, 23) des optischen Codes umfaßt.
  7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, daß der Schritt des Ermittelns der Struktur (21 bis 23) den Schritt des Ermittelns der Anzahl der Zeilen und Spalten (22, 23) des optischen Codes umfaßt.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß der Schritt des Ermittelns der Anzahl der Zeilen und Spalten (22, 23) den Schritt des Ausführens spezieller Scans (22) vorgegebener Teile des optischen Codes umfaßt.
  9. Verfahren nach Anspruch 8, worin der Code ein zweidimensionaler Code mit wenigstens zwei Taktzeilen (40, 41; 44, 45) ist, dadurch gekennzeichnet, daß der Schritt des Ausführens spezieller Scans (22) den Schritt der Erfassung von Helligkeitswerten von Punkten des deformierten Bildes entlang der Taktzeilen und das Zählen der Anzahl der Elemente dieser Taktzeilen umfaßt.
  10. Verfahren nach einem der Ansprüche 7 bis 9, dadurch gekennzeichnet, daß der Schritt des Erzeugens eines Gitters (24 bis 26) den Schritt des Definierens eines regelmäßigen Gitters (24) umfaßt, das eine Anzahl von Zeilenlinien (N1) aufweist, die gleich der Anzahl der Zeilen des optischen Codes ist, sowie eine Anzahl von Spaltenlinien (N1), die gleich der Anzahl der Spalten des optischen Codes ist.
  11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß das regelmäßige Gitter ein Rechteck ist.
  12. Verfahren nach Anspruch 10 oder 11, dadurch gekennzeichnet, daß der Schritt des Definierens eines regelmäßigen Gitters (24) den Schritt des Identifizierens von Koordinaten der Schnittpunkte zwischen den Zeilen- und Spaltenlinien des regelmäßigen Gitters umfaßt.
  13. Verfahren nach Anspruch 10 oder 11, dadurch gekennzeichnet, daß der Schritt des Definierens eines regelmäßigen Gitters (24) folgenden weiteren Schritt umfaßt: alternatives Identifizieren von Koordinaten von Punkten, die auf Schnittpunkten der Zeilen- und Spaltenlinien des regelmäßigen Gitters angeordnet sind, bzw. von Koordinaten von Mittelpunkten zwischen Schnittpunkten zwischen den Zeilen- und Spaltenlinien in benachbarten Zeilenlinien.
  14. Verfahren nach einem der vorangehenden Ansprüche, gekennzeichnet durch die folgenden weiteren Verfahrensschritte: Erzeugen (24) eines regelmäßigen Gitters mit mehreren Schnittlinien; auf der Basis der Schnittlinien, Ermitteln der Koordinaten der wahrnehmbaren Punkte des regelmäßigen Gitters; Ermitteln einer geometrischen Transformation (25) zwischen den wahrnehmbaren Punkten des regelmäßigen Gitters und den charakteristischen Punkten des deformierten Bildes; und Berechnen (26) der Koordinaten der charakteristischen Punkte durch Anwenden der geometrischen Transformation auf die Koordinaten der wahrnehmbaren Punkte.
  15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß der Schritt des Ermittelns einer geometrischen Transformation (25) die folgenden weiteren Verfahrensschritte umfaßt: Erfassen von Koordinaten von Referenzpunkten (V1 bis V4) einer bekannten Position in dem verformten Bild; Auswählen von Koordinaten vorgegebener Punkte (V1' bis V4') des transformierten Bildes; und Identifizieren der geometrischen Transformation, welche die Referenzpunkte in die vorgegebenen Punkte transformiert.
  16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß die Referenzpunkte (V1 bis V4) und die vorgegebenen Punkte (V1' bis V4') Scheitel des deformierten Bildes bzw. des transformierten Bildes sind.
  17. Verfahren nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß der Schritt des Erzeugens eines transformierten Bildes den folgenden weiteren Verfahrensschritt umfaßt; Zuordnen (28) eines Helligkeitswertes wenigstens eines charakteristischen Punktes des deformierten Bildes zu einem korrespondierenden wahrnehmbaren Punkt des transformierten Bildes.
  18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, daß der Schritt des Erzeugens eines transformierten Bildes ferner den folgenden Schritt umfaßt: Binarisieren (27) des Helligkeitswertes der charakteristischen Punkte mit Hilfe eines Binarisierungs-Schwellwertes, um einen binarisierten Helligkeitswert zu erhalten; und daß der Schritt des Zuordnens den folgenden weiteren Verfahrensschritt umfaßt: Speichern des binarisierten Helligkeitswertes für jeden der wahrnehmbaren Punkte des transformierten Bildes.
  19. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß der Binarisierungs-Schwellwert durch Berechnen einer mittleren Helligkeit eines Teils des deformierten Bildes erhalten wird.
  20. Verfahren nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß die geometrische Transformation eine Homographie ist.
DE69835358T 1998-11-06 1998-11-06 Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes Expired - Lifetime DE69835358T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP98830668A EP0999519B1 (de) 1998-11-06 1998-11-06 Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes

Publications (2)

Publication Number Publication Date
DE69835358D1 DE69835358D1 (de) 2006-09-07
DE69835358T2 true DE69835358T2 (de) 2007-07-19

Family

ID=8236871

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69835358T Expired - Lifetime DE69835358T2 (de) 1998-11-06 1998-11-06 Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes

Country Status (4)

Country Link
US (1) US6758399B1 (de)
EP (1) EP0999519B1 (de)
AT (1) ATE334452T1 (de)
DE (1) DE69835358T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011010722A1 (de) * 2011-02-09 2012-08-09 Testo Ag Messgerät-Set und Verfahren zur Dokumentation einer Messung

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6997387B1 (en) * 2001-03-28 2006-02-14 The Code Corporation Apparatus and method for calibration of projected target point within an image
JP2003168071A (ja) * 2001-11-30 2003-06-13 Sanyo Electric Co Ltd 2次元バーコードの読み取り方法
JP2003168084A (ja) * 2001-11-30 2003-06-13 Sanyo Electric Co Ltd 本人認証システム及び方法
US6851608B1 (en) * 2002-03-07 2005-02-08 Commerciant, L.P. System and method for uncontrolled velocity scanning
JP4301775B2 (ja) * 2002-07-18 2009-07-22 シャープ株式会社 2次元コード読み取り装置,2次元コード読み取り方法,2次元コード読み取りプログラム及び該プログラムの記録媒体
FR2868185B1 (fr) * 2004-03-23 2006-06-30 Realeyes3D Sa Procede d'extraction de donnees brutes d'une image resultant d'une prise de vue
US20060210192A1 (en) * 2005-03-17 2006-09-21 Symagery Microsystems Inc. Automatic perspective distortion detection and correction for document imaging
US7383994B2 (en) * 2005-05-03 2008-06-10 Datalogic Scanning, Inc. Methods and systems for forming images of moving optical codes
EP1904952A2 (de) * 2005-05-23 2008-04-02 Nextcode Corporation Effiziente finder-muster und verfahren zur anwendung auf 2d-machine-vision-probleme
US7412106B1 (en) * 2005-06-25 2008-08-12 Cognex Technology And Investment Corporation Methods for locating and decoding distorted two-dimensional matrix symbols
US7878402B2 (en) * 2005-12-20 2011-02-01 Cognex Technology And Investment Corporation Decoding distorted symbols
US7546950B2 (en) 2006-03-28 2009-06-16 Seiko Epson Corporation Method and apparatus for locating and decoding a two-dimensional machine-readable symbol
EP1847945B1 (de) * 2006-04-19 2017-04-12 A · T Communications Co., Ltd. Zweidimensionaler Code mit einem Logo
US20100084470A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Two-dimensional barcode localization for camera based devices
EP2345002A1 (de) * 2008-10-29 2011-07-20 Schreiner GmbH & Co. KG Verfahren und vorrichtung zur bestimmung der position eines rauschartigen musters in einem bild
JP5751254B2 (ja) * 2010-08-31 2015-07-22 日本電気株式会社 画像処理システム、画像処理方法および画像処理プログラム
EP2677492A1 (de) 2012-06-22 2013-12-25 Sick Ag Codeleser und Verfahren zur Online-Verifikation eines Codes
EP2677458B1 (de) 2012-06-22 2014-10-15 Sick Ag Optoelektronische Vorrichtung und Verfahren zur Helligkeitskorrektur
US9071785B2 (en) * 2013-02-15 2015-06-30 Gradeable, Inc. Adjusting perspective distortion of an image
US9067671B2 (en) * 2013-07-25 2015-06-30 Disney Enterprises, Inc. Visual localization of unmanned aerial vehicles based on marker detection and processing
US9147095B2 (en) * 2013-11-22 2015-09-29 Ncr Corporation Optical code scanner optimized for reading 2D optical codes
EP3451172B1 (de) * 2016-04-28 2020-08-12 Kyocera Document Solutions Inc. Datenübertragungssystem und datenübertragungsverfahren
CN106096488B (zh) * 2016-07-20 2019-01-25 华南理工大学 一种点阵码的识别方法
JP2018029289A (ja) * 2016-08-18 2018-02-22 ブラザー工業株式会社 画像処理装置および画像処理方法
CN109271823A (zh) * 2018-08-08 2019-01-25 佛山市顺德区中山大学研究院 一种自定义二维码的快速定位方法
US11790204B2 (en) 2018-12-20 2023-10-17 Hewlett-Packard Development Company, L.P. Read curved visual marks
CN113449534B (zh) * 2021-06-28 2023-03-28 歌尔股份有限公司 二维码图像处理方法和装置
USD995630S1 (en) * 2021-09-28 2023-08-15 Michael Butler Push/pull door sign
US11562551B1 (en) * 2022-04-14 2023-01-24 Scandit Ag Image analysis for decoding angled optical patterns

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59133667A (ja) * 1983-01-20 1984-08-01 Hitachi Ltd 画像補正処理方法
JPS63220381A (ja) * 1987-03-10 1988-09-13 Canon Inc バ−コ−ドリ−ダ
CA1329263C (en) * 1989-03-01 1994-05-03 Mark Krichever Bar code scanner
US5410620A (en) * 1989-08-02 1995-04-25 Teiryo Sangyo Co., Ltd. Digital data reader of digital data recording sheet
JP3187936B2 (ja) * 1992-05-29 2001-07-16 オリンパス光学工業株式会社 バーコード読取装置
US5801848A (en) * 1993-01-06 1998-09-01 Fontech Ltd. Process for transmitting and/or storing information
US5446271A (en) * 1993-08-06 1995-08-29 Spectra-Physics Scanning Systems, Inc. Omnidirectional scanning method and apparatus
US5726435A (en) * 1994-03-14 1998-03-10 Nippondenso Co., Ltd. Optically readable two-dimensional code and method and apparatus using the same
US5631457A (en) * 1994-08-17 1997-05-20 Olympus Optical Co., Ltd. Two-dimensional symbol data read apparatus
US5637849A (en) * 1995-05-31 1997-06-10 Metanetics Corporation Maxicode data extraction using spatial domain features
JP3676443B2 (ja) * 1995-09-01 2005-07-27 オリンパス株式会社 情報再生装置及び情報再生方法
US5811776A (en) * 1996-02-26 1998-09-22 Intermec Corporation Method and apparatus for accurately locating data regions in stored images of symbols
US5854478A (en) * 1996-10-11 1998-12-29 Intermec Ip Corp. Method and apparatus for reading machine-readable symbols having surface or optical distortions
US6018349A (en) * 1997-08-01 2000-01-25 Microsoft Corporation Patch-based alignment method and apparatus for construction of image mosaics
US6201901B1 (en) * 1998-06-01 2001-03-13 Matsushita Electronic Industrial Co., Ltd. Border-less clock free two-dimensional barcode and method for printing and reading the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011010722A1 (de) * 2011-02-09 2012-08-09 Testo Ag Messgerät-Set und Verfahren zur Dokumentation einer Messung

Also Published As

Publication number Publication date
US6758399B1 (en) 2004-07-06
ATE334452T1 (de) 2006-08-15
EP0999519A1 (de) 2000-05-10
EP0999519B1 (de) 2006-07-26
DE69835358D1 (de) 2006-09-07

Similar Documents

Publication Publication Date Title
DE69835358T2 (de) Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes
EP2417561B1 (de) Zweidimensionaler symbolcode und verfahren zum lesen des symbolcodes
DE10036110B4 (de) Verfahren zur Bestimmung des Schrägwinkels eines zweidimensionalen Barcodes
DE19960555B4 (de) Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes
DE69728482T2 (de) Zweidimensionaler Codeleser
DE69929572T2 (de) Verfahren zum Lesen eines zweidimensionalen Strichcode ohne Taktsignal und ohne Ränder
DE2417282C3 (de) Vorrichtung zum Lesen von Fingerabdrücken
EP1260933B1 (de) Verfahren zum Erfassen von zweidimensionalen Codes
DE102015219541A1 (de) Dekodieren von strichcodes
DE60118051T2 (de) Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium
DE3716787C2 (de)
EP3428834B1 (de) Optoelektronischer codeleser und verfahren zum lesen von optischen codes
DE60013101T2 (de) Zweidimensionales codemuster zum speichern biometrischer informationen und vorrichtung zum lesen dieser informationen
DE2801536C2 (de) Zeichenformkodiervorrichtung
DE3633743C2 (de)
DE102007035884B4 (de) Linienrauschunterdrückungsvorrichtung, -verfahren und -programm
DE19814075A1 (de) Verfahren zum Abtasten und Erkennen mehrerer Fotografien und zum Beseitigen von Randfehlern
DE10025332A1 (de) Verfahren zum Lesen eines zweidimensionalen Barcodes
DE2829808A1 (de) Verfahren und vorrichtung zum lesen von zeichen
EP1288843A2 (de) Verfahren zur Erkennung eines Codes
CH708994B1 (de) Verfahren und Vorrichtung zum Identifizieren eines zweidimensionalen Punktcodes.
WO2011128089A1 (de) Verfahren zur konkretisierung eines substrates
DE60006731T2 (de) Detektionsgerät des Neigungswinkels eines Dokumentes
EP0125266B1 (de) Verfahren und vorrichtung zum identifizieren von gegenständen
DE3718620A1 (de) Verfahren und vorrichtung zur ermittlung des drehwinkels eines objektmusters

Legal Events

Date Code Title Description
8364 No opposition during term of opposition