DE19705747A1 - Verfahren und Vorrichtung zur Ermittlung und Decodierung von maschinenlesbaren Symbolen - Google Patents

Verfahren und Vorrichtung zur Ermittlung und Decodierung von maschinenlesbaren Symbolen

Info

Publication number
DE19705747A1
DE19705747A1 DE19705747A DE19705747A DE19705747A1 DE 19705747 A1 DE19705747 A1 DE 19705747A1 DE 19705747 A DE19705747 A DE 19705747A DE 19705747 A DE19705747 A DE 19705747A DE 19705747 A1 DE19705747 A1 DE 19705747A1
Authority
DE
Germany
Prior art keywords
symbol
center
processor
point
curved shapes
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.)
Withdrawn
Application number
DE19705747A
Other languages
English (en)
Inventor
Pavel A Maltsev
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.)
Intermec Technologies Corp
Original Assignee
Intermec Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intermec Corp filed Critical Intermec Corp
Publication of DE19705747A1 publication Critical patent/DE19705747A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06037Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/255Detecting or recognising potential candidate objects based on visual cues, e.g. shapes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K2019/06215Aspects not covered by other subgroups
    • G06K2019/06243Aspects not covered by other subgroups concentric-code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K2019/06215Aspects not covered by other subgroups
    • G06K2019/06262Aspects not covered by other subgroups with target- or other orientation-indicating feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/24Aligning, centring, orientation detection or correction of the image
    • G06V10/245Aligning, centring, orientation detection or correction of the image by locating a pattern; Special marks for positioning

Landscapes

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

Description

Technisches Gebiet
Die vorliegende Erfindung bezieht sich auf Verfahren und Vor­ richtungen zum Ermitteln und Decodieren von maschinenlesbaren Symbolen oder Bildern, insbesondere von Symbolen, die bogen­ förmige Merkmale aufweisen.
Hintergrund der Erfindung
Strichcodeleser ermitteln und decodieren typische Strichcodes aus linearen Symbolfolgen. "Lineare Symbolfolgen" sind Symbol­ folgen, in denen Daten als parallele Anordnungen von alternie­ renden Strichen und Zwischenräumen unterschiedlicher Breiten codiert sind. Lineare Symbolfolgen sowie andere Symbolfolgen codieren "Datenzeichen", d. h. vom Menschen lesbare Zeichen als "Symbolzeichen", die typischerweise aus abwechselnden Strichen und Zwischenräumen bestehen.
Strichcodeleser wandeln typischerweise Symbolzeichen in Daten­ zeichen um, indem eine Fläche abgetastet oder abgebildet wird, um ein reflektiertes Signal zu erzeugen, das im allgemeinen ein Analogsignal ist, daß das modulierte Licht repräsentiert, das von Flächen hohen Reflexionsvermögens oder "Zwischenräu­ men" reflektiert wird und von Flächen niedrigen Reflexionsver­ mögens oder "Strichen" absorbiert wird. Als Folge repräsen­ tiert das Signal das aus Strichen und Zwischenräumen im Symbol bestehende Muster.
Strichcodeleser ermitteln die Strichcodeinformation aus dem Umgebungsrauschen, das im Signal enthalten ist, indem das Si­ gnal als eine ruhige Zone ermittelt wird. Eine "ruhige Zone" ist ein klarer Zwischenraum, der keine dunklen Markierungen enthält, der einem Symbol vorangeht oder folgt, häufig in der Nähe eines Start- oder Stoppzeichens. Typischerweise hat eine ruhige Zone eine Größe, die etwa zehnmal so groß ist wie die Striche, die der ruhigen Zone vorangehen oder folgen.
Neuere Datensammelsymbolfolgen sind von den typischen linearen Symbolfolgen abgewichen, um gestapelte oder Flächensymbolfol­ gen zu erzeugen, um die "Informationsdichte" zu steigern, d. h. den Umfang von Information, der innerhalb einer gegebenen Flä­ che codiert ist. "Gestapelte Symbolfolgen" oder Mehrreihensymbol folgen verwenden mehrere benachbarte Reihen von Strichen und Zwischenräumen mehrerer Breiten, z. B. der Code 49, PDF417 usw.). "Flächensymbolfolgen" oder zweidimensionale Matrixsym­ bolfolgen verwenden Anordnungen von regelmäßigen mehreckigen Datenzellen, bei denen die Distanz Mitte-zu-Mitte von benach­ barten Datenzellen gleichmäßig ist, z. B. MaxiCode, Code One, Data Matrix, Aztec Code, usw.).
Während Standardermittlungs- und Decodieralgorithmen für linea­ re Symbolfolgen (Symbologien) und für einige gestapelte Symbo­ logien verwendet werden können, sind solche Algorithmen für Flächensymbologien ungeeignet. Flächensymbologien verwenden typischerweise "Findermuster", die einzigartige Muster sind, die von automatischen Bilderkennungseinrichtungen- und algo­ rithmen erkannt werden können. Beispielsweise verwendet die MaxiCode-Symbologie eine zweidimensionale Matrix benachbarter regelmäßiger Sechsecke mit einem zentralen Bullaugen-Finder­ muster aus schwarzen und weißen konzentrischen kreisförmigen Ringen. Eine verwandte Symbologie, der Aztec Code, verwendet eine zweidimensionale Matrix benachbarter Quadrate mit einem zentralen Bullaugen-Findermuster aus schwarzen und weißen kon­ zentrischen quadratischen Ringen. Da das Findermuster inner­ halb der Mitte der Matrix aus Datenzellen angeordnet ist und nicht benachbart der ruhigen Zone, können Standardermittlungs­ algorithmen das Findermuster nicht sogleich ermitteln.
Statt dessen verwendet die MaxiCode-Symbologie ein Fast- Fourier-Transformationsverfahren ("FFT") oder Hough-Transfor­ mationsverfahren, die beide das Findermuster innerhalb der zweidimensionalen Matrix aus hexagonalen Datenzellen ermit­ teln. Die Verfahren sind kompliziert und erfordern erhebliche Prozessorkapazität. Beispielsweise wandelt das FFT-Verfahren eine Serie von Profilen, die vom Symbol genommen worden sind, vom Ortsbereich in den Frequenzbereich um, um die Mitten der hexagonalen Datenzellen zu ermitteln. Das Verfahren wandelt dann die Frequenzdaten zurück in den Ortsbereich, um die Um­ risse oder äußeren Grenzen der hexagonalen Datenzellen zu er­ mitteln. Anschließend ermittelt das Verfahren das zentrale Bullaugenmuster und sechs Sätze von drei Datenzellen, die um das Bullaugenmuster angeordnet sind, um die Mitte und Orien­ tierung des Symbols zu bestimmen. Detaillierte Auskunft über dieses Verfahren kann man in der Beschreibung der MaxiCode- AIM-Uniform-Symbologie finden.
Die obigen FFT- und Hough-Transformationsverfahren erfordern erhebliche Speicherkapazität während des Ermittlungsvorgangs für ein gegebenes Symbol. Außerdem erfordern die Verfahren ei­ nen erheblichen Umfang an Prozessoreinsatz, der häufig einen schnellen Mikroprozessor verlangt. Außerdem sind schnelle Mi­ kroprozessoren typischerweise teurer als ihre langsameren Ge­ genstücke, und deshalb sind Leser, die zur Ermittlung und De­ codierung von MaxiCode-Symbolen bestimmt sind, recht teuer.
Übersicht über die Erfindung
Von der vorliegenden Erfindung werden ein Verfahren und eine Vorrichtung zum Ermitteln und Decodieren von maschinenlesbaren Symbolen angegeben. Die vorliegende Erfindung speichert ein Abbild des Symbols und ermittelt alle Jordan-Kurven, die eine Winkellänge von weniger als π innerhalb des Abbildes des Sym­ bols haben. Die vorliegende Erfindung findet und selektiert alle konvexen Jordan-Kurven aus dem Satz aller Jordan-Kurven, die innerhalb des gespeicherten Bildes gefunden werden. Die Erfindung bestimmt Gleichungen eines Paares von tangenten Li­ nien von Endpunkten einer jeden konvexen Jordan-Kurve und be­ stimmt eine Gleichung einer Mittenlinie für jedes Tangentenli­ nienpaar. Die Erfindung bestimmt einen Schnittpunkt der Mit­ tenlinien, und auf der Grundlage des Schnittpunktes ermittelt es einen Mittelpunkt eines Findermusters des Symbols. Die vor­ liegende Erfindung bestätigt, daß der gefundene Mittelpunkt tatsächlich die Mitte des Findermusters ist, und anschließend decodiert sie das Symbol.
Wie in den Ansprüchen dargestellt, verkörpert die vorliegende Erfindung in breitestem Sinne ein Verfahren zum Ermitteln ei­ nes vorbestimmten Musters aus konvex gebogenen Gestalten und Zwischenräumen zwischen den konvex gebogenen Gestalten inner­ halb eines Abbildes, das in einer Datenspeichervorrichtung ei­ nes Rechnersystem gespeichert ist, und das Rechnersystem ent­ hält einen Prozessor und eine Datenspeichervorrichtung. Die konvex gebogenen Gestalten umgeben wenigstens teilweise einen vorbestimmten Punkt.
Das erfindungsgemäße Verfahren ist im Anspruch 1 beschrieben. Vorteilhafte Ausgestaltungen des Verfahrens sind Gegenstand der vom Anspruch 1 abhängigen Ansprüche.
Die Erfindung verkörpert auch eine Vorrichtung zum Decodieren eines maschinenlesbaren Symbols, das codierte Information re­ präsentiert. Das maschinenlesbare Symbol enthält mehrere im Abstand angeordnete zweidimensionale Gestalten. Das Symbol hat ein vorbestimmtes Orientierungsmuster aus konvex gebogenen Ge­ stalten und Zwischenräumen zwischen den konvex gebogenen Ge­ stalten. Die konvex gebogenen Gestalten umgeben wenigstens teilweise einen vorbestimmten Punkt des Symbols.
Die Vorrichtung enthält einen Sensor, einen Empfänger, eine Speichervorrichtung und einen Prozessor. Der Sensor empfängt Licht, das von dem maschinenlesbaren Symbol reflektiert wird, und erzeugt daraus ein Ausgangssignal, daß das Reflexionsver­ mögen der Gestalten und Zwischenräume des Symbols repräsen­ tiert. Der Empfänger empfängt das Ausgangssignal und erzeugt ein digitales Signal, das ein Abbild der Gestalten und Zwi­ schenräume des Symbols repräsentiert. Die Speichervorrichtung speichert das digitale Signal.
Der Prozessor verarbeitet das digitale Signal und erzeugt ein Signal, das für die Information, die im Symbol codiert ist, kennzeichnend ist. Die weiteren Merkmale des Prozessors sind im Anspruch 11 beschrieben, der eine Vorrichtung zum Decodie­ ren eines maschinenlesbaren Symbols, das codierte Information repräsentiert, zum Gegenstand hat. Vorteilhafte Ausgestaltun­ gen dieser Vorrichtung sind Gegenstand der vom Anspruch 11 ab­ hängigen Ansprüche.
Andere Merkmale und deren Vorteile der vorliegenden Erfindung gehen aus der nachfolgenden detaillierten Beschreibung hervor, die anhand der begleitenden Zeichnungen gegeben wird.
Kurze Beschreibung der Zeichnungen
Fig. 1 ist ein Blockschaltbild eines bevorzugten Lesers für Datensammelsymbologie nach der vorliegenden Erfin­ dung einschließlich einer Draufsicht auf ein Maxi- Code-Symbol.
Fig. 2 ist ein Flußdiagramm einer beispielhaften Routine zum Ermitteln und Decodieren von Datensammelsymbo­ len, speziell des MaxiCode-Symbols von Fig. 1.
Fig. 3 ist eine schematische Darstellung einer Ellipse mit Tangenten- und Sehnenlinien zur Demonstrierung des Sehnen-Tangenten-Theorems.
Fig. 4 ist eine vergrößerte Darstellung eines Rings vom mittleren Findermuster aus dem MaxiCode-Symbol von Fig. 1 mit einem beispielhaften Gitter von Bildele­ menten oder Bildpunkten, die dem überlagert sind.
Fig. 5A zeigt den Ring des Findermusters von Fig. 4, wobei eine Vertikalsuchschablone darauf angeordnet ist.
Fig. 5B zeigt den Ring des Findermusters nach Fig. 4, wobei eine Horizontalsuchschablone darauf angeordnet ist.
Fig. 6 ist ein vergrößertes Abbild eines MaxiCode-Symbols, in das Jordan-Kurven durch die Routine von Fig. 2 eingelegt sind.
Fig. 7 ist ein Kreis, der für die Erläuterung verwendet wird, wie die Routine von Fig. 2 ermittelt, welche der Jordan-Kurven in Fig. 6 konvex sind.
Fig. 8A zeigt eine beispielhafte Kurve einer Gestalt, die einer gewünschten Konvexität von Ellipsen unähnlich ist
Fig. 8B zeigt eine beispielhafte bevorzugte konvexe Kurve, die Teil einer Ellipse ist.
Fig. 9A ist eine beispielhafte konvexe Kurve, die durch die Routine von Fig. 2 nach der vorliegenden Erfindung ermittelt wird.
Fig. 9B zeigt die Kurve von Fig. 9A und mehrere rechteckige Bereiche, die darin ausgebildet sind, deren Fläche die Fläche unter der Kurve approximiert.
Fig. 10 zeigt die Kurve von Fig. 9A mit zwei tangenten Lini­ en, die davon gezogen sind, um eine Mittenlinie zu definieren.
Fig. 11 zeigt die Kurve von Fig. 10 und eine weitere Kurve, wobei jeder Kurve zwei tangente Linien und eine Mit­ tenlinie zugeordnet sind und die Mittenlinien sich an einem zentralen Punkt schneiden.
Fig. 12 ist ein Abbild des MaxiCode-Symbols von Fig. 6 mit mehreren Mittenlinien, die sich von mehreren konve­ xen Jordan-Kurven erstrecken.
Fig. 13 ist eine Subroutine, die von der Routine nach Fig. 2 ausgeführt wird, um den Mittelpunkt des mittleren Findermusters des MaxiCode-Symbols von Fig. 1 zu de­ finieren.
Fig. 14A ist ein vergrößertes Findermuster des MaxiCode- Symbols von Fig. 1, das die Ermittlung des Mittel­ punktes unter den ersten wenigen Schritten der Sub­ routine nach Fig. 13 zeigt.
Fig. 14B ist ein vergrößertes Findermuster des MaxiCode- Symbols von Fig. 1, das die Ermittlung des Mittel­ punktes unter den verschiedenen zusätzlichen Schrit­ ten der Subroutine von Fig. 13 zeigt.
Fig. 15 zeigt eine vergrößerte Darstellung eines mittleren Ringes des Findermusters der Fig. 14A und 14B zur Erläuterung der letzten Schritte, die in der Subrou­ tine von Fig. 13 ausgeführt werden, und
Fig. 16 ist das Abbild des MaxiCode-Symbols von Fig. 6, das den Mittelpunkt des Findermusters, der unter der Routine von Fig. 2 ermittelt wird, zeigt.
Detaillierte Beschreibung von beispielhaften Ausführungsformen der Erfindung
Wie in Fig. 1 gezeigt, enthält ein Datensammlungs-Symbologie­ leser 50 der vorliegenden Erfindung eine Lichtquelle 52, die eine Datenansammlung oder anderes Symbol, wie beispielsweise ein MaxiCode-Symbol 53, beleuchtet. Wie hier verwendet bezieht sich ein "Datensammlungssymbol" auf ein Symbol aus irgendeiner linearen, gestapelten, flächen- oder anderen maschinenlesbaren Symbologie. Ein Sensor 54 mit einer optischen Blende 61 emp­ fängt Licht, das vom Symbol 53 reflektiert wird, und wandelt das empfangene Licht in ein elektrisches Signal oder Profil um. Beispielsweise kann die Lichtquelle 52 eine Lichtdiode, eine Blitzröhre, eine Infrarotlichtquelle, ein Rasterlaser oder ein anderes lichtemittierendes Element sein, während der Sensor 54 ein ein- oder zweidimensionaler CCD, eine Halblei­ teranordnung, ein Photodetektor, ein Vidicon oder anderer Bildlaser sein kann, der in der Lage ist, empfangenes Licht in elektrische Signale umzuwandeln.
Ein Empfänger oder Konverter 56 empfängt das elektrische Si­ gnal vom Sensor 54 und wandelt es in ein Signal um, das von einem programmierten Rechner oder Prozessor 60 zu verarbeiten ist. Typischerweise erzeugt der Sensor 54 ein analoges Profil­ signal, das das modulierte Licht repräsentiert, das von den Elementen im Symbol 53 reflektiert wird. Es ist wichtig, daß, wenn der Prozessor 60 ein Digitalrechner ist, der Wandler 56 jeden Bildpunkt im Abbild des Symbols 53 von einem analogen Signal, das vom Sensor 54 erzeugt wird, in ein mehrpegeliges Digitalsignal umwandelt, das numerisch die verschiedenen Amplituden des analogen Signals repräsentiert. Der Wandler 56 und/oder der Prozessor 60 sind mit einem Speicher 57 gekop­ pelt, der das Profil in digitaler Form speichert. Der Wandler 56, der Speicher 57 und der Prozessor 60 können monolithisch integriert sein.
Der Sensor 54 kann eine ladungsgekoppelte Vorrichtung ("CCD") oder ein ähnlicher Flächenabbilder sein, die bzw. der eine ak­ tive Oberfläche, wie beispielsweise eine rechteckige Oberflä­ che aus M × N Bildelementen, beispielsweise 582 × 752 Bildele­ menten, aufweist. Wie bekannt ist, gibt jedes Bildelement in dem CCD des Sensors typischerweise ein Graupegelsignal ab, d. h. ein Analogsignal, das die Intensität des Lichts wider­ spiegelt, das auf das spezielle Bildelement einfällt, ver­ gleichbar einem Videodatensignal. Der Wandler 56 wandelt vor­ zugsweise das Graupegelsignal in ein digitales Signal um, das beispielsweise 16 Graupegel hat, das von dem Prozessor 60 wei­ terverarbeitet wird. Der Speicher 57 speichert die digitalen Signale und enthält vorzugsweise sowohl flüchtige als auch nicht-flüchtige Speicher (z. B. Speicher mit wahlfreiem Zugriff und elektrisch löschbare Festspeicher). Als Folge ermöglicht der Leser 50, das ein Objekt oder Bild innerhalb des Sichtfel­ des des Sensors 54 in elektrische Signale umgewandelt werden, die digitalisiert und als gespeichertes Bild in dem Festspei­ cherteil des Speichers 57 gespeichert werden, um von dort vom Prozessor 60 nach einer Routine 100 verarbeitet zu werden, die in dem Festspeicher (wie unten beschrieben) gespeichert ist. Nach der Verarbeitung des gespeicherten Bildes kann der Pro­ zessor 60 die Ergebnisse dieser Verarbeitung an ein peripheres Gerät oder einen Rechner (nicht dargestellt) ausgeben.
Es wird nun auf Fig. 2 Bezug genommen. Eine beispielhafte Rou­ tine 100, die vom Leser 50 der vorliegenden Erfindung ausge­ führt wird, ermittelt zunächst das Abbild des Symbols 53 in­ nerhalb eines gespeicherten Abbildes und decodiert dann das Symbol. Wie hier verwendet, bezieht sich der Ausdruck "ge­ speichertes Abbild" allgemein auf das gesamte Abbild des Bild­ feldes, das im Speicher 57 gespeichert ist und von dem Sensor 54 und dem Prozessor 60 erzeugt worden ist und das das Symbol 53 oder andere zu decodierende Symbole enthält. Für die Wirk­ samkeit der Verarbeitung gilt, daß, wenn der CCD im Sensor 54 aus einer Gruppe von 582 × 752 Bildelementen besteht, der Speicher 57 eine Gruppe von 582 × 752 Speicherplätzen auf­ weist, die von dem Prozessor 60 adressiert werden und der Bildpunktgruppe entspricht. Das gespeicherte Abbild im Spei­ cher 57 ist vorzugsweise durch ein kartesisches Koordinatensy­ stem bestimmt, so daß der Ort eines jeden Bildpunktes durch ein Zahlenpaar repräsentiert wird, das die horizontale und vertikale Position des Bildpunktes im gespeicherten Abbild an­ gibt. Beispielsweise ist dem ersten Bildpunkt in der linken oberen Ecke des gespeicherten Abbildes in kartesischen Koordi­ naten die Größe (0,0) zugeordnet, während der Bildpunkt in der rechten unteren Ecke die Koordinaten (752, 582) hat. Objekte innerhalb des gespeicherten Abbildes, d. h. Bildpunktgruppen, können daher arithmetisch unter Verwendung von geometrischen und trigonometrischen Eigenschaften auf der Grundlage des Ko­ ordinatensystems lokalisiert werden, d. h. durch Gleichungen von Linien, Kreisen oder anderen geometrischen oder trigonome­ trischen Gleichungen, die für die Darstellung planarer Objek­ te, wie unten beschrieben, verwendet werden. Wie hier verwen­ det, bezieht sich der Ausdruck "lokalisiert" im allgemeinen auf die Ermittlung sowohl der Position als auch der Orientie­ rung des Abbildes eines Objektes innerhalb des gespeicherten Abbildes.
Die Routine 100 beginnt im Schritt 102, wo der Leser ein Ab­ bild des Symbols 53 abtastet oder speichert. Beispielsweise kann der Leser 50 ein Handapparat sein und einen Triggerschal­ ter (nicht dargestellt) enthalten, der mit dem Prozessor 60 verbunden ist und bewirkt, daß die Lichtquelle 52 das Symbol 53 beleuchtet und dem Sensor 54, dem Wandler 56 und dem Pro­ zessor 60 ermöglicht werden, ein Abbild des Symbols im Spei­ cher 57 zu speichern, wenn der Schalter betätigt wird. Die spezifischen Einrichtungen und Verfahren zum Speichern eines Abbildes eines Symbols durch den Leser 50 sind üblicher Art und dem Fachmann bekannt, so daß hier auf eine weitergehende Beschreibung verzichtet werden kann.
Im Schritt 104 beginnt der Prozessor 60 das Symbol 53 inner­ halb des gespeicherten Abbildes zu lokalisieren. Wie in Fig. 1 gezeigt, enthält das MaxiCode-Symbol 53 ein Mittenfindermuster 200, das aus drei konzentrischen Ringen besteht, die einen mittleren weißen Fleck 202 umgeben. Das Endziel der vorliegen­ den Erfindung besteht in der Ermittlung eines Mittelpunktes innerhalb des weißen Flecks 202 und dadurch der Ermittlung des Mittelpunktes für das gesamte Symbol 53. Durch Bestimmung des Mittelpunktes des Symbols 53 kann der Leser 50 jede der Daten­ zellen innerhalb des Symbols schneller lokalisieren und daher das gesamte Symbol schneller decodieren. Die Ausdrücke "Punkt" und "Bildpunkt" sind hier im allgemeinen austauschbar verwen­ det.
Die vorliegende Erfindung lokalisiert das Findermuster 200 und schließlich einen Mittelpunkt innerhalb des weißen Flecks 202 durch Lokalisierung von Abbildern konvexer Kurven innerhalb des vom Leser 50 gespeicherten Abbildes. Die vorliegende Er­ findung beruht auf Konvexitätseigenschaften und weist weniger Rechnerkomplexität auf als frühere Verfahren. Mathematisch nimmt die vorliegende Erfindung zunächst an, daß eine Funktion p=f(t) im allgemeinen eine komplexe Funktion mit einer reellen Variablen t ist, die innerhalb eines geschlossenen Intervalls [a, b] definiert und kontinuierlich ist. Weiterhin erkennt die vorliegende Erfindung, daß die komplexe Funktion p aus Elemen­ ten besteht, die durch die X- und Y-Achse des kartesischen Koordinatensystems definiert sind und die wie folgt darge­ stellt werden kann:
p = (x,y) ∈ X × Y, wobei X = [1, . . ., k], und Y = [1, . . ., n], (1),
wobei k und n die horizontalen und vertikalen Größen des durch den Leser 50 gespeicherten Abbildes sind. Die komplexe Funkti­ on p definiert eine durchgehende Kurve L, wobei
p = f(t), t ∈ X × Y (2).
Jeder konzentrische Ring innerhalb des gespeicherten Abbildes kann durch eine oder mehrere Jordan-Kurven J definiert werden. Die Kurve J ist eine Jordan-Kurve, wenn längs der Kurve diese sich nicht selbst so schneidet, daß zwei Punkte denselben Wert haben, oder in anderen Worten, mathematisch ausgedrückt werden kann durch:
t₁, t₂ ∈ [a, b], t₁ ≠ t₂ dann f(t₁) ≠ f(t₂) (3).
Nach Identifizierung aller Jordan-Kurven J innerhalb des durch den Leser 50 gespeicherten Abbildes wählt die vorliegende Er­ findung alle konvexen Jordan-Kurven aus, wobei alle nicht­ konvexen Kurven ignoriert werden. Wie man aus dem Mittenfin­ dermuster 200 für das Symbol 53 sehen kann, wird das Findermu­ ster im wesentlichen aus mehreren konvexen Kurven konstruiert, und daher kann der Leser 50 durch Lokalisierung dieser Kurven das Findermuster innerhalb des gespeicherten Abbildes schnel­ ler identifizieren.
Um solche Jordan-Kurven J zu identifizieren, die konvex sind, nimmt die vorliegende Erfindung teilweise auf das Sehnen- Tangenten-Teorem für Ellipsen Bezug. Wie Fig. 3 zeigt, können für eine Ellipse E zwei beliebige Tangenten an die Punkte K und H der Ellipse angelegt werden, die sich in einem Punkt P schneiden. Das Sehnen-Tangenten-Teorem sagt dann, daß die Tan­ gentenpunkte K und H eine Sehne innerhalb der Ellipse E bil­ den, die einen Mittelpunkt M hat. Wenn man durch die Punkte P und M eine Linie projiziert, dann liegt ein Zentrum C der El­ lipse E auf dieser Linie PN.
Die Linie PM schneidet die Ellipse E an einem Punkt F zwischen den Punkten H und K. Eine Konkavitätsorientierung wird wie folgt definiert. Die Kurve KFH ist eine Jordan-Kurve, wobei die Tangenten an den Punkten K und H sich an einem Punkt P au­ ßerhalb der Ellipse E schneiden. Die Konvexitätsorientierung der Kurve KFH ist durch einen Vektor PM definiert, wo der Punkt M in der Mitte der Sehne KH liegt. Mit anderen Worten, der Vektor PM weist gegen den Mittelpunkt C der Ellipse E nach innen.
Wenn man in Betracht zieht, daß, wenn die vorliegende Erfin­ dung das Abbild einer oder mehrerer Jordan-Kurven lokalisiert, die Ränder einer oder mehrerer konzentrischer Ringe in dem Findermuster 200 des Symbols 53 bilden, dann geben die Konka­ vitätsorientierungen dieser Kurven eine Orientierung oder Richtung gegen einen Mittelpunkt des Rings an und schließlich gegen den Mittelfleck 202. Die vorliegende Erfindung erfordert nicht, die Koordinaten und Konkavitätsorientierung aller Jor­ dan-Kurven zu berechnen, sondern nur solcher Jordan-Kurven, die eine Winkellänge von weniger oder gleich π haben. Winkel­ länge drückt hier den Bogenwinkel aus. Wenn die vorliegende Erfindung wenigstens zwei Konvexitätsorientierungsvektoren für zwei Jordan-Kurven längs eines konzentrischen Ringes lokali­ siert, dann kreuzen die Orientierungsvektoren einander an ei­ nen Punkt, der etwa in der Mitte des konzentrischen Ringes liegt. Das MaxiCode-Findermuster 200 verwendet drei dunkle Ringe, die insgesamt sechs Ränder für konzentrische Ringe (zwei Ränder pro Ring) ergeben. Als Folge davon kann die vor­ liegende Erfindung wenigstens zwei Jordan-Kurven lokalisieren, die eine Winkellänge von weniger als π für das Findermuster 200 haben.
Gemäß Fig. 2 beginnt der Prozessor 60 im Schritt 104 zunächst mit der Lokalisierung des Mittelpunktes des weißen Flecks 202 des Findermusters 200 durch Analysierung des gespeicherten Ab­ bildes, um einen Satz von Randpunkten E zu lokalisieren, die Schwarz-Weiß-Übergänge oder umgekehrt repräsentieren. Der Pro­ zessor 60 analysiert mehrere Abtastwege durch das gespeicherte Abbild, beispielsweise einen horizontalen Weg durch das Ab­ bild, einen vertikalen Weg, 90° vom horizontalen Weg und Wege, die 26°, 45° und 71° vom horizontalen. Weg abweichen. Andere bekannte Abtaststrategien für ein gespeichertes Abbild können ebenfalls eingesetzt werden.
Anschließend lokalisiert Prozessor 60 in dem Satz E alle Jor­ dan-Kurven, wie eine Bogenlänge oder Bogenmaß von weniger als π innerhalb des gespeicherten Abbildes des Symbols 53 haben. Im Schritt 104 verwendet der Prozessor 60 ein Suchverfahren zur Ermittlung von Rändern konzentrischer Ringe innerhalb des gespeicherten Abbildes durch Abtastung vorbestimmter Linien von Bildpunktwerten zur Identifizierung eines Satzes E von Randpunkten, wo die Helligkeit von "weiß" nach "schwarz" oder umgekehrt wechselt. Das Suchverfahren nimmt an, daß jeder Randpunkt e, der ein Element des Satzes von Randpunkten E ist, ein Randpunkt eines konzentrischen Ringes des Findermusters 200 für das Symbol 53 sein kann. Um zu beweisen, daß ein gege­ bener Randpunkt e tatsächlich ein Randpunkt eines der konzen­ trischen Ringe im Findermuster 200 ist, umreißt das Suchver­ fahren Ränder D, die den Satz von Randpunkten E enthalten, und wählt dann aus den Rändern D solche aus, die ein Bogenmaß von weniger als π haben.
Das Suchverfahren nimmt an, daß der Rand eines konzentrischen Ringes nicht kürzer als eine Anzahl N von Bildpunkten sein kann, und daß seine Kurve einen begrenzten Gradienten des Ver­ satzes hat. Diese Annahme hilft der Vermeidung späterer unnö­ tiger Berechnungen durch den Prozessor 60. Wie obenerwähnt, hat das gespeicherte Abbild eine Auflösung, die im allgemeinen durch die Anzahl von Bildpunkten innerhalb des CCD-Bilderfas­ sers oder anderen vergleichbaren Erfassungseinrichtung be­ grenzt ist. Als Folge davon sind Kurven nicht kontinuierlich, sondern haben scharfe Wechsel zwischen einer ganzen Anzahl von Bildelementen (die beispielsweise wie ein Stufenmuster er­ scheinen, wenn mit kleinerem Maßstab betrachtet).
Um jede Kurve in dem gespeicherten Abbild zu lokalisieren, be­ stimmt der Prozessor 60 im Schritt 104, ob jeder ermittelte Randpunkt e in dem Satz von Randpunkten tatsächlich ein Punkt eines Randes ist (und nicht einfach eine einzelne Datenzelle), und wertet eine "vorherrschende Richtung" des Randpunktes e aus. Anschließend berechnet der Prozessor 60 im Schritt 104 oben/unten- und links/rechts-Dichtedifferenzen des Randes, um die räumliche Ausrichtung des Randes zu approximieren (d. h. ob er horizontal oder vertikal orientiert ist), so daß eine ge­ eignete Schablone an einem Bereich benachbart jedem Randpunkt verwendet werden kann, um die Positionskoordinaten für einen möglichen Rand zu bestimmen. Mit anderen Worten, im Schritt 104 filtert der Prozessor 60 anfänglich Randpunkt, die keine Randpunkte von Kurven sind, und bestimmt Koordinaten und Aus­ richtung der Kurve auf der Grundlage der angewendeten Schablo­ ne, wie unten beschrieben.
Gemäß Fig. 4 analysiert der Prozessor 60 im Schritt 104 be­ nachbarte Bildpunkte innerhalb eines Umgebungsbereiches A, der einen gegebenen Randpunkt e umgibt. Der Randpunkt e ist ein Punkt auf einem äußeren Rand eines Ringes 204 des Findermu­ sters 200, der eine Änderung in der Dichte von weiß nach schwarz angibt. Der Randpunkt e hat Koordinaten (i, j), wäh­ rend der Umgebungsbereich A eine Quadratfläche hat, die die Koordinaten (i-2, j-2) bis (i+2, j+2) überspannt, was eine Pi­ xelfläche 5 × 5 ergibt. Der Prozessor 60 berechnet im Schritt 104 oder vorangehend einen örtlichen Intensitätsschwellenwert für den Bereich A, der den Randpunkt e umgibt, um einen Inten­ sitätsschwellenwert zu bestimmen, der schwarze Bildpunkt von weißen Bildpunkten unterscheidet oder trennt. Um eine oben/unten-Dichtedifferenz zu bestimmen, berechnet der Prozes­ sor 60 eine Anzahl von Bildpunkten innerhalb der oberen zwei Bildpunktreihen und der unteren zwei Bildpunktreihen, die eine Intensität oder Helligkeit haben, die größer als der zuvor be­ rechnete lokale Intensitätsschwellenwert ist. Die Bildpunktko­ ordinaten für die oberen und unteren Abschnitte des Bereiches A und den Randpunkt e sind wie folgt:
oberer Abschnitt =
{{(i-2), (j-2)}, {(i-2), (j-1)},
{(i-2), (j)}, {(j-2), (j+1)},
{(i-2), (j+2)}, {(i-1), (j-2)},
{(i-1), (j-1)}, {(i-1), (j)},
{(i-1), (j+1)}, {(i-1), (j+2)}},
unterer Abschnitt =
{{(i+2), (j-2)}, {(i+2), (j-1)},
{(i+2), (j)}, {(i+2), (j+1)},
{(i+2), (j+2)}, {(i+1), (j-2)},
{(i+1), (j-1)}, {(i+1), (j)},
{(i+1), (j+1)}, {(i+1), (j+2)}}, (4)
In gleicher Weise werden links/rechts-Bildpunktdichtedifferen­ zen auf der Grundlage von Intensitätswerten größer als der be­ rechnete Schwellenwert berechnet für die linken zwei Spalten und rechten zwei Spalten im Bereich A, wie durch die folgende Gleichung repräsentiert:
linker Abschnitt =
{{(i-2), (j-2)}, {(i-1), (j-2)},
{(i), (j-2)}, {(i+1), (j-2)},
{(i+2), (j-2)}, {(i-2), (j-1)},
{(i-1), (j-1)}, {(i), (j-1)},
{(i+1), (j-1)}, {(i+2), (j-1)}
rechter Abschnitt =
{{(i-2), (j+2)}, {(i-1), (j+2)},
{(i), (j+2)}, {(i+1), (j+2)},
{(i+2), (j+2)}, {(i-2), (j+1)},
{(i-1), (j+1)}, {(i), (j+1)},
{(i+1), (j+1)} {(i+2), (j+1)}}, (5)
Die oberen, unteren, linken und rechten Abschnitte repräsen­ tieren jeweils eine Summe der Anzahl der Bildpunkte innerhalb eines jeden Abschnitts, die größer als der lokale Intensitäts­ schwellenwert ist. Wenn jedem weißen Bildpunkt ein Wert von 1 zugeordnet ist, während jedem schwarzen Bildpunkt ein Wert von 0 zugeordnet ist, dann hat der obere Abschnitt einen Wert von 10, wie in Fig. 4 gezeigt. Der untere Abschnitt wird bei die­ sem Beispiel einen Wert von etwa 1 haben (entsprechend dem einzelnen Bildpunkt (i+1), (j-2), der mehr weiß als schwarz ist). Die oben/unten-Dichtedifferenz ist gleich dem absoluten Wert des oberen Abschnitts minus dem unteren Abschnitt (10- 1=9). In gleicher Weise ist die links/rechts-Dichtedifferenz gleich dem Absolutwert des linken Abschnitts minus dem rechten Abschnitt (ungefähr 7-4=3).
Wenn die folgende Ungleichung:
(abs(oberer Abschnitt - unterer Abschnitt) <= abs(linker Abschnitt - rechter Abschnitt)) (6)
gilt, dann ist die horizontale Richtung dominant; ansonsten ist die vertikale Richtung für den Bereich A dominant. Für das Beispiel in Fig. 4 gilt: weil die oben/unten-Abschnitte größer als die links/rechts-Abschnitte sind, ist die horizontale Richtung unter der Gleichung (6) dominant. Auf der Grundlage der Dominanzrichtung wendet der Prozessor 60 im Schritt 104 eine geeignete Suchschablone an (die für das Beispiel von Fig. 4 die vertikale Schablone ist), um die Positionen von Rand­ bildpunkten für eine identifizierte Kurve zu identifizieren und zu speichern.
Es wird nun auf Fig. 5A Bezug genommen. Wenn der Prozessor 60 im Schritt 104 bestimmt, daß die Dominanzrichtung vertikal ist, dann wendet der Prozessor eine Horizontalsuchschablone an, die aus unmittelbar benachbarten oberen und unteren Bild­ punktreihen 208 bzw. 206 besteht. In gleicher Weise wendet, wie in Fig. 5B gezeigt, der Prozessor 60 eine Vertikalsuch­ schablone aus den unmittelbar benachbarten linken und rechten vertikalen Spalten aus fünf Bildpunkten 210 bzw. 212 an, wenn die Dominanzrichtung vertikal ist. Durch Verwendung solcher horizontalen und vertikalen Schablonen kann der Prozessor 60 im Schritt 104 die Positionen von Bildpunkten identifizieren, die Jordan-Kurven definieren, die ein maximales Bogenmaß von weniger oder gleich π haben.
Um das zuvor erläuterte zusammenzufassen: Im Schritt 104 iden­ tifiziert der Prozessor 60 einen Satz Randpunkte e, analysiert einen Nachbarbereich um jeden Punkt e und für jede identifi­ zierte Kurve, bestimmt eine Dominanzrichtung für jeden Rand­ punkt e in dem Satz E, verwendet eine geeignete horizontale oder vertikale Paßschablone in Abhängigkeit von der Dominanz­ richtung für einen gegebenen Punkt e und speichert dann Koor­ dinaten eines Satzes Jordan-Kurven J für jeden Randpunkt in dem Satz von Randpunkten E. Wie in Fig. 6 gezeigt, zeigt ein Symbol 53′ ähnlich dem Symbol 53 von Fig. 1 alle Jordan-Kurven J, die von dem Prozessor 60 im Schritt 104 identifiziert wer­ den, als hervorgehobene Kurven. Der Satz Jordan-Kurven J ent­ hält eine hervorgehobene Kurve 216, die nicht Bestandteil des Mittenfindermusters 200 ist, und eine Kurve 218, die einen oberen Rand eines ersten Rings des Findermusters ist.
Es wird nochmals auf Fig. 2 Bezug genommen. Der Prozessor 60 wählt im Schritt 106 alle konvexen Jordan-Kurven aus dem Satz Jordan-Kurven aus, die im Schritt 104 identifiziert worden sind. Um diese konvexen Jordan-Kurven auszuwählen, verwendet die vorliegende Erfindung bekannte Eigenschaften von Kreisen und Ellipsen. Fig. 7 zeigt einen Kreis CR mit einem Radius r. Dieser Kreis CR enthält eine Jordan-Kurve ABC, die durch Punk­ te A, B und C definiert ist. Eine Sehne AC hat einen Mittel­ punkt F, während die Mitte des Kreises durch den Punkt D defi­ niert ist. Wenn der Prozessor 60 die Längen der Linien a = FC und h = FB und den Radius r = DC kennt, dann erkennt der Pro­ zessor auch, daß der Radius r der folgenden Gleichung ent­ spricht:
r = (h · h+a · a)/(z·h) (7).
Als Folge wird eine Fläche S, die durch die Sehne AC und die Jordan-Kurve ABC definiert ist, durch die folgende Gleichung bestimmt:
S = r²·arcsin(a/r)-(r-h)·a (8).
Die Ringe des Rindermusters 200 sind jedoch selten exakt kreisförmig. Vielmehr sind die Ringe sehr viel wahrscheinli­ cher elliptisch. Wenn man folglich annimmt, daß der Kreis CR statt dessen eine Ellipse ist, verwendet die Routine 100 maxi­ male und minimale Exzentrizitätskoeffizienten kmax bzw. kmin, die maximal und minimal akzeptable Exzentrizität für das Fin­ dermuster 200 definieren. Wenn das Findermuster 200 allzu ge­ stört ist, d. h. eine zu starke Exzentrizität aufweist, dann sind selbst dann, wenn die Routine 100 den Mittelpunkt des Findermusters lokalisiert, die umgebenden Datenzellen zu sehr gestört, als daß der Leser 50 sie decodieren könnte. Im Schritt 106 ermittelt der Prozessor 60 daher, ob die berechne­ te Fläche SEllipse, die die Fläche einer Ellipse ist, innerhalb eines Maximum- und Minimumwertes liegt, der von der idealen Fläche SKreis für einen Kreis abweicht, gemäß folgender Glei­ chung:
SKreis · Kmin <= SEllipse <= SKreis · kmax (9)
Beispielhafte Werte für kmax und kmin sind 1,3 bzw. 0,7.
Die vorliegende Erfindung möchte nicht nur von Wechsel Jordan- Kurven innerhalb des Satzes von Jordan-Kurven lokalisieren, die im Schritt 104 definiert werden, sondern auch solche Jor­ dan-Kurven lokalisieren, die eine der Konvexität eines Kreises oder einer gut gestalteten Ellipse vergleichbarer Konvexität haben. Der Prozessor 60 wählt daher im Schritt 106 solche Jor­ dan-Kurven aus, die eine Konvexität aufweisen, die ähnlich der Konvexität einer gut gestalteten Ellipse haben, indem die Flä­ che unter der speziellen analysierten Jordan-Kurve mit der Größe einer idealen Fläche unter einer Kreiskurve verglichen wird. Die aktuelle Jordan-Kurve wird durch eine Sehne defi­ niert, die Endpunkte der Kurve verbindet, und hat eine Höhe, die als die Höhe vom Mittelpunkt der Sehne bis zur Kurve defi­ niert ist. Die Kreiskurve hat eine ähnliche Sehne und Höhe, wobei die Sehne und die Höhe jeweils Längen haben, die gleich der Längen von Sehne und Höhe der Jordan-Kurve sind. Mit ande­ ren Worten, für eine Sehnenlänge und eine Höhe einer gegebenen Jordan-Kurve vergleicht die vorliegende Erfindung die aktuell gemessene Fläche mit einer idealen Fläche, die von einem Kreis mit gleicher Sehnenlänge und Höhe gebildet wird (d. h. eine Fläche S für die Kurve von ABC und die Sehne AC, wobei die Sehne AC und die Höhe BF gleich der Länge der Sehne und der Höhe der analysierten Jordan-Kurve sind).
Wenn die gemessene Fläche unter der Jordan-Kurve SEllipse klei­ ner als die ideale Fläche unter der Kreiskurve SKreis multipli­ ziert mit dem maximalen Exzentrizitätskoeffizienten kmax ist, und größer als die ideale Fläche unter der Kreiskurve SKreis multipliziert wird dem minimalen Exzentrizitätskoeffizienten kmin ist, dann ist die betreffende analysierte Jordan-Kurve ei­ ne akzeptabel konvexe Kurve nach Gleichung (9). Der Prozessor 60 ermittelt die Fläche unter einer Kurve auf der Grundlage des bekanntes Stieltjes-Integrals, das hier wiedergegeben ist:
wobei µ(t) ein ganzer Wert definiert auf einer Sehne AD ist (entsprechend z. B. einer endlichen Anzahl von Bildpunkten).
In den Fig. 8A und 8B haben die dort dargestellten Kurven im wesentlichen gleiche Sehnenlängen ABD und NMG und im wesentli­ chen identische Höhen BM bzw. MK. Dennoch weicht die Kurve ABD von Fig. 8A erheblich von einer mehr idealen Kurve einer El­ lipse wie beispielsweise die Kurve NMG von Fig. 8B ab. Die Gleichung (10) wird längs einer Sehne ABD (Fig. 8A) und einer Sehne NMG (Fig. 8B) angewendet, um die Flächen unter diesen Kurven zu bestimmen. Im allgemeinen ist eine Jordan-Kurve "konvex", wenn eine Sehne, die sich zwischen Endpunkten der Kurve erstreckt, die Kurve nur an den zwei Endpunkten schnei­ det, wie in Fig. 8B gezeigt ist. Die Gleichungen (9) und (10) bestimmen im allgemeinen, welche Jordan-Kurven nicht konvex sind, wo eine Sehne, die sich zwischen Endpunkten der Kurve erstreckt, die Kurve an drei oder mehr Stellen schneidet (wie in Fig. 8A gezeigt).
Die Gleichung (10) erzeugt eine positive Fläche 214 und eine negative Fläche 216 für die Kurve ABD, während die Kurve NMG eine einzige, größere positive Fläche 218 erzeugt. Die negati­ ve Fläche 216 zieht sich von der positiven Fläche 214 bei der Kurve ABD ab, was zu einer kleinen Gesamtfläche unter der Kur­ ve ABD führt. Der Prozessor 60 berechnet im Schritt 106 die Fläche unter der Kurve ABD, berechnet die Fläche unter einer Kreiskurve mit einer Sehnenlänge und einer Höhe, die der der Kurve ABD gleichen, vergleicht die Gesamtfläche, die unter der Kurve ABD berechnet wurde, mit idealen Minimum- und Maximum­ werten gemäß der Gleichung (9) für die ideale Kurve und ermit­ telt, daß die resultierende Fläche außerhalb der Grenzen der Gleichung (9) liegt. Als Folge davon erkennt der Prozessor 60, daß die Kurve ABD von Fig. 8A keine akzeptable konvexe Jordan- Kurve ist, und er ignoriert daher diese Kurve bei späteren Schritten.
Die Kurve NMG hat indessen eine einzige positive Fläche 218, die in die Grenzen der Gleichung (9) fällt, und deshalb er­ kennt der Prozessor diese Kurve als eine akzeptabel konvexe Jordan-Kurve. Als Folge davon wendet der Prozessor 60 im Schritt 106 die Gleichung (10) an, um eine Fläche unter einer Jordan-Kurve zu bestimmen, und vergleicht diese Fläche mit ei­ ner idealen Kreisfläche gleicher Sehnenlänge und Höhe nach Gleichung (9), um zu ermitteln, ob die Kurve akzeptabel konvex ist und daher für die spätere Verarbeitung nicht ausgefiltert zu werden braucht.
Um an Prozessoraufwand zu sparen und daher den Betrieb im Schritt 106 zu beschleunigen, kann der Prozessor 60 mehrere zeitsparende Vorgänge durchführen. Beispielsweise ist in Fig. 9A eine beispielhafte Jordan-Kurve ABC unter einem Winkel Θ gegenüber der Y-Achse orientiert dargestellt, wobei die Y- Achse eine Y-Achse des gespeicherten Abbildes, eines zweidi­ mensionalen CCD-Sensors 54 oder eine voreingerichtete Y-Achse des Lesers 50 ist. Um die Berechnung der Fläche unter der Kur­ ve ABC zu beschleunigen, kann die Kurve ABC um die Y-Achse so gedreht werden, daß die Sehne AC längs oder parallel zur Y- Achse liegt, wie in Fig. 9B gezeigt.
Zusätzlich kann die obige Gleichung (10) vereinfacht werden, indem einfach die Fläche mehrerer Rechtecke unter der Kurve ABC berechnet werden, und indem man die Flächen dieser Recht­ ecke auf der Grundlage folgender Gleichungen addiert:
wobei n die Anzahl der Rechteckflächen und die Fläche jedes Rechtecks eine Fläche Ri ist. Um die Anzahl von Vergleichen zu reduzieren, verwendet der Prozessor 60 einfach die folgende Gleichung:
abs[(I_1-SKreis)/SKreis]err (12)
wobei I_1 die Fläche unter der Kurve ABC, geschätzt nach Glei­ chung (11) ist, SKreis die ideale Fläche unter einem Kreisbogen identischer Sehnenlänge AC und Höhe BD ist und abs dem Abso­ lutwert des Klammerausdrucks ist. Der Fehlerwert err ist eine tolerierbare Fehlerwertabweichung vom idealen Fehlerwert für eine Kreisfläche unter einer Kreiskurve. Die Gleichung (12) erfordert einen Vergleich weniger als die Gleichung (9).
Es wird nun noch einmal auf Fig. 2 Bezug genommen. Nach der Identifizierung und Bestimmung der Orte aller konvexen Jordan- Kurven im Schritt 106 berechnet der Prozessor 60 im Schritt 108 lineare Gleichungen eines Paares von tangenten Linien von den Endpunkten einer jeden Kurve. Anschließend bestimmt der Prozessor 60 im Schritt 108 auf der Grundlage eines Schnitt­ punktes des Tangentenlinienpaares eine Gleichung einer Mitten­ linie, die den Schnittpunkt und einen Mittelpunkt der Sehne für die gegebene konvexe Jordan-Kurve schneidet. Hierzu sei Fig. 10 betrachtet. Der Prozessor 60 konstruiert im Schritt 108 eine erste Tangentenlinie T1₁ von einem Punkt C und eine zweite Tangentenlinie T2₁ von einem Tangentenpunkt A, wobei die beiden Punkte C und A Endpunkte einer konvexen Jordan- Kurve ABC sind. Der Prozessor 60 bestimmt die folgenden Glei­ chungen für die ersten und zweiten Tangentenlinien T1₁ und T2₁:
y = k₁ · x+b₁, und y = k₂ · x+b₂ (14),
wobei k₁ und k₂ den Neigungen der Linien T1₁ und T1₂ entspre­ chen, während b₁ und b₂ die Y-Achsenabschnittspunkte dieser Linien sind. Die ersten und zweiten Tangentenlinien T1₁ und T2₁ schneiden sich im Punkt K₁. Der Prozessor 60 bestimmt die Gleichung einer Mittenlinie L₁ durch den Schnittpunkt K₁ und den Mittelpunkt D der Sehne AC auf der Grundlage der folgenden Gleichung:
y = kc · x+bc (15),
wobei kc und bc der Neigung und dem Y-Achsenabschnitt für die Linie L₁ sind. Der Prozessor 60 bestimmt die linearen Glei­ chungen von Tangentenlinien und Mittellinien für alle konvexen Jordan-Kurven, die im Schritt 106 ermittelt worden sind, auf der Grundlage der Gleichungen (14) und (15).
Gemäß Fig. 2 bestimmt der Prozessor 60 im Schritt 110 einen oder mehrere Schnittpunkte der Mittellinien L, die im Schritt 108 bestimmt worden sind. Beispielsweise hat die Kurve ABC (aus Fig. 10) die Mittenlinie L₁, die in einem Punkt Q die Mittenlinie L₂ einer Kurve EFG schneidet, wie Fig. 11 zeigt. Die Mittenlinie L₂ für die Kurve EFG wurde im Schritt 108 durch den Prozessor 60 auf der Grundlage von ersten und zwei­ ten Tangentenlinien T1₂ und T2₂ konstruiert. Durch Auswahl nur konvexer Kurven, die ein Winkelmaß von weniger als π haben im Schritt 104 schneiden die ersten und zweiten Tangentenlinien stets auf der konvexen Seite der Kurve, d. h. an einem Punkt, der der Sehne, die sich zwischen den Endpunkten der Kurve er­ streckt, entgegengesetzt liegt. Wenn andererseits Jordan-Kur­ ven eines Winkelmaßes von mehr als π verwendet würden, dann würden die ersten und zweiten Tangentenlinien auf der konvexen Seite der Kurve auseinanderlaufen.
Wie oben unter Bezugnahme auf das Sehnen-Tangenten-Theorem er­ läutert worden ist, liegen die Mitten der Ellipsen, die durch die Kurven ABC und EFG definiert werden, auf den Mittellinien L₁ bzw. L₂. Da es wahrscheinlich ist, daß die meisten der kon­ vexen Jordan-Kurven, die von dem Prozessor 60 identifiziert werden, Ränder im Findermuster 200 sind, und weil zwei oder mehr Kurven des Findermusters annähernd den gleichen Mittel­ punkt haben, liegt der Schnittpunkt der Mittellinien von die­ sen Kurven etwa im Mittelpunkt. Daher nimmt der Prozessor 60 an, daß der Schnittpunkt Q innerhalb des Findermusters 200 für das Symbol 53 liegt, und im idealen Zustand ist er der wirkli­ che Mittelpunkt des Findermusters. Aufgrund unterschiedlicher Arten von Abweichungen, wie beispielsweise optischer Störun­ gen, Druckfehlern, Verrundungsfehlern usw. ist der Schnitt­ punkt Q zumeist nicht der wirkliche Mittelpunkt des Findermu­ sters 200. Außerdem erzeugen mehrere konvexe Jordan-Kurven mehrere Mittellinien, so daß sehr wahrscheinlich mehrere Mit­ telpunkt Q gebildet werden, die sämtlich innerhalb des Finder­ musters 200 liegen, doch wird keiner davon der exakte Mittel­ punkt des weißen Flecks 202 des Findermusters sein.
Beispielsweise werden, wie in Fig. 12 gezeigt, mehrere Mittel­ linie L₁, L₂, L₃ und Le vom Prozessor 60 im Schritt 108 er­ zeugt. Tangentenpunkte sind als kleine Kreuzzeichen an gegen­ überliegenden Enden hervorgehobener konvexer Kurven gezeigt. Wie man Fig. 12 entnehmen kann, schneiden sich die Mittellini­ en an einem oder mehreren Punkten, die außerhalb der Mitte des Flecks 202 liegen. Die Mittellinie Le, die von einer Kurve ge­ bildet wird, die nicht Teil des Findermusters 200 ist, schnei­ det keine andere Mittellinie und wird daher bei der späteren Verarbeitung ignoriert.
Im Schritt 110 ignoriert der Prozessor 60 jeden Schnittpunkt Q, der zwischen zwei Mittellinien gebildet wird, die einen Schnittwinkel von weniger als 10° oder mehr als 90° haben, je­ doch kann der obere Winkel bis zu 170° ausgedehnt werden. Bei einem großen Winkel zwischen den sich schneidenden Mittellini­ en bietet die vorliegende Erfindung eine größere Wahrschein­ lichkeit, daß der Schnittpunkt Q nahe dem wirklichen Schnitt­ punkt innerhalb des weißen Flecks 202 des Findermusters 200 liegt, als wenn der Schnittwinkel sehr klein wäre.
Um einen Punkt auszuwählen, der am wahrscheinlichsten inner­ halb des weißen Flecks 202 des Findermusters 200 liegt, prüft der Prozessor 60 im Schritt 110 alle Schnittpunkte Q der sich schneidenden Mittellinien, um eine Ansammlung einander naher Schnittpunkte zu liefern. Der Prozessor 60 prüft alle Schnitt­ punkt Q und scheidet solche aus, die von der größten Ansamm­ lung solcher Punkte am weitesten entfernt liegen. Die größte Ansammlung von Schnittpunkten Q entspricht Schnittpunkten in­ nerhalb oder nahe dem Findermuster 200. Anschließend mittelt der Prozessor 60 die Positionen der Ansammlung von Schnitt­ punkten Q, um Koordinaten eines gemittelten Schnittpunktes Q′ zu bestimmen, der am wahrscheinlichsten innerhalb des Finder­ musters 200 liegt.
Nochmals auf Fig. 2 Bezugnehmend lokalisiert im Schritt 112 der Prozessor 60 den wirklichen Mittelpunkt innerhalb des wei­ ßen Flecks 202 des Findermusters 200, indem eine Mittelpunkt­ findesubroutine ausgeführt wird. Diese Subroutine erfolgt im wesentlichen in zwei Schritten. Im ersten Schritt führt der Prozessor 60 N Iterationen einer allmählichen Bewegung gegen den weißen Mittelfleck 202 des Findermusters 200 durch. Im zweiten Schritt verwendet der Prozessor 60 die Konvexitätsei­ enschaft von Kreisen und Ellipsen, um den exakten Mittelpunkt des weißen Mittelflecks 202 zu lokalisieren.
Bezugnehmend auf Fig. 13 beginnt die Mittelpunktfindesubrouti­ ne 112 im Schritt 114 durch Abtastung von Bildpunkten direkt oberhalb oder gegenüber einem Schnittpunkt Q, der im Schritt 110 bestimmt wurde, um einen Randpunkt eines inneren Randes eines Rings im Findermuster 200 zu lokalisieren, der dem ge­ mittelten Schnittpunkt Q′ am nächsten ist. Im Schritt 114 setzt der Prozessor 60 auch eine variable K auf 1.
Im Schritt 116 bestimmt der Prozessor 60 eine Konvexitätsori­ entierung des lokalisierten Randes des Ringes des Findermu­ sters, das im Schritt 114 lokalisiert worden ist. Beispiels­ weise wird, wie in Fig. 14A gezeigt, der gemittelte Schnitt­ punkt Q′ zwischen einem äußeren Ring 230 und einem mittleren Ring 232 des Findermusters 200 lokalisiert. Im Schritt 114 ta­ stet der Prozessor 60 eine Aufwärtsrichtung gegen einen inne­ ren Rand des äußeren Rings 230 ab, um einen Randpunkt 236 zu bestimmen. Im Schritt 116 ermittelt der Prozessor 60 eine Kon­ vexitätsorientierung des lokalisierten inneren Randes des äu­ ßeren Rings 230, und im Schritt 118 bestimmt er dann einen neuen Randpunkt 238 an einem inneren Rand des mittleren Rings 232 durch Verfolgung der Konvexitätsorientierung vom Randpunkt 236 zum neuen Randpunkt 238. Der vom Prozessor 60 im Schritt 118 lokalisierte Rand kann ein Rand sein, der durch einen Übergang von schwarzen auf weiße Bildpunkte definiert ist, wie in Fig. 14A gezeigt.
Im Schritt 120 ermittelt der Prozessor 60, ob die variable K gleich einem ganzzahligen Wert N, wie beispielsweise 7, ist. Wenn dies nicht der Fall ist, erhöht der Prozessor 60 im Schritt 122 die variable K um eins und kehrt zum Schritt 116 zurück. Der Prozessor 60 führt in den Schritten 116 und 118 sechs zusätzliche Iterationen aus, wenn der Prozessor den wei­ ßen Mittelfleck 202 innerhalb des Findermusters 200 lokali­ siert. Wie in Fig. 14B gezeigt, werden zwei zusätzliche Itera­ tionen der Schritte 116 und 118 ausgeführt, wenn der Prozessor 60 vom mittleren Ring 232 zu einem inneren Ring 234 und dann zum weißen Fleck 202 übergeht. Anschließend im Anschluß an zu­ sätzliche Iterationen der Schritte 116 und 118 definiert der Prozessor 60 Konkavitätsorientierungen, die nach oben zeigen, und dann zurück nach unten, weil der Prozessor innerhalb des weißen Mittelflecks 202 für zusätzliche Iterationen der Schritte 116 und 118 schwingt. Durch Ausführung mehrerer Ite­ rationen der Schritte 116 und 118, beispielsweise durch sieben Iterationen, stellt der Prozessor 60 sicher, daß nach einer letzten Iteration der Schritte eher den weißen Mittelfleck 202 innerhalb des Findermusters 202 lokalisiert hat.
Nach sieben Iterationen der Schritte 116 und 118 bestimmt der Prozessor 60 im Schritt 120, daß K gleich 7 ist. Anschließend definiert der Prozessor 60 im Schritt 124 eine Linie zum ent­ gegengesetzten Rand des inneren Rings 234 von dem zuletzt ein­ gerichteten Randpunkt, der im Schritt 118 ermittelt wurde. Be­ zugnehmend auf Fig. 15 sei angenommen, daß der zuletzt be­ stimmte Randpunkt im Schritt 118 ein Punkt A ist, sodann defi­ niert der Prozessor 60 im Schritt 124 eine Linie nach oben in­ nerhalb des weißen Mittelflecks 202 zu einem Punkt B.
Im Schritt 126 definiert der Prozessor 60 einen Mittelpunkt C auf der Linie AB. Auf der Grundlage dieses Mittelpunktes C de­ finiert der Prozessor 60 eine Linie senkrecht zur Linie AB durch den Mittelpunkt C, wie beispielsweise die Linie DE in Fig. 15. Anschließend definiert der Prozessor 60 im Schritt 128 einen Mittelpunkt F auf der Linie DE als den Mittelpunkt des weißen Flecks 202 und daher als den Mittelpunkt des Fin­ dermusters 200.
Fig. 16 zeigt mehrere Orientierungsvektoren, die als helle Li­ nien eingezeichnet sind, die sich von der Mitte des Symbols 53′, wie in den Schritten 116 und 118 bestimmt, erstrecken (einige der Orientierungsvektoren sind durch das Bezugszeichen "V" bezeichnet). Fig. 16 zeigt auch den Mittelpunkt, wie er in der Mittelpunktfindesubroutine 112 bestimmt worden ist, ihn der Mitte der sich schneidenden horizontalen und vertikalen Lini­ en, die ein mittleres "Fadenkreuz" bilden.
Nochmals auf Fig. 2 Bezugnehmend ist zu erläutern, daß der Prozessor 60 im Schritt 130 bestätigt, daß der lokalisierte Mittelpunkt tatsächlich die Mitte des Findermusters 200 ist. Der Prozessor 60 dehnt die Linie DE nach außen über das gesam­ te Findermuster 200 aus, wie in Fig. 14A gezeigt. Der Prozes­ sor 60 mißt die Distanzen in entgegengesetzten Richtungen vom Mittelpunkt F zu den inneren und äußeren Rändern des inneren Rings 234, des mittleren Rings 232 und des äußeren Rings 230, um zu ermitteln, ob diese Distanzen gleich sind. Wenn der Mit­ telpunkt F tatsächlich der exakte Mittelpunkt des Findermu­ sters 200 ist, dann müssen die Distanzen, die auf einer Linie gemessen werden, sich vom Punkt F erstreckt, für jeden der Ringe 232, 234 und 230 im wesentlichen gleich sein. Nach der Lokalisierung (Ortsbestimmung) des exakten Mittelpunktes des Findermusters 200 und somit des Symbols 53 decodiert der Pro­ zessor 60 im Schritt 132 das Symbol unter Verwendung bekannter Verfahren sehr leicht.
Obwohl in der vorliegenden Beschreibung und den Zeichnungen Beispiele der vorliegenden Erfindung beschrieben worden sind, sei noch betont, daß daran verschiedene Modifikationen vorge­ nommen werden können, ohne vom Geist der Erfindung abzuwei­ chen. Beispielsweise ist die Erfindung unter Verwendung eines Findermusters eines MaxiCode-Symbols beschrieben worden. Sie kann aber auch an Systemen angewendet werden, die die Lokali­ sierung von Kreisen, Ellipsen, Ringen oder anderen kurvenför­ migen Musters erfordern. Die vorliegende Erfindung kann in Computersystemen mit Roboterarmen zur Lokalisierung ringförmi­ ger, kreisförmiger oder elliptischer Objekte eingesetzt wer­ den, wie beispielsweise Muttern in verschiedenen Umgebungen, wie beispielsweise in automatischen Fertigungsstraßen.

Claims (15)

1. Verfahren zur Ermittlung eines vorbestimmten Musters aus konvex gebogenen Gestalten und Zwischenräumen zwischen den konvex gebogenen Gestalten innerhalb eines Abbildes, das in der Datenspeichervorrichtung eines einen Prozessor auf­ weisenden Rechnersystems gespeichert ist, wobei die konvex gebogenen Gestalten wenigstens teilweise einen vorbestimm­ ten Punkt umgeben, umfassend die folgenden Schritte:
Lokalisieren aller gebogenen Gestalten innerhalb des ge­ speicherten Abbildes einschließlich der konvex gebogenen Gestalten des vorbestimmten Musters;
Bestimmen eines Paares Tangentenlinien von Endpunkten ei­ ner jeden lokalisierten gebogenen Gestalt;
Definieren einer Linie zwischen jedem Paar Tangentenlini­ en;
Bestimmen wenigstens eines Schnittpunktes der definierten Linien; und
Lokalisieren des vorgewählten Punktes auf der Grundlage des wenigstens eines Schnittpunktes der definierten Lini­ en.
2. Verfahren nach Anspruch 1, bei dem der Schritt der Lokali­ sierung aller gebogenen Gestalten in dem Symbol alle Rän­ der zwischen gebogenen Gestalten und benachbarten Zwi­ schenräumen lokalisiert und gebogene Gestalten mit einem Bogenmaß von weniger als π lokalisiert.
3. Verfahren nach Anspruch 2, bei dem der Schritt der Lokali­ sierung aller gebogenen Gestalten innerhalb des gespei­ cherten Abbildes die folgenden Schritte umfaßt:
Ermitteln einer Fläche unter jeder der lokalisierten gebo­ genen Gestalten;
Vergleichen jeder ermittelten Fläche mit einem ausgewähl­ ten Wert; und
Ignorieren jeder Kurve, deren ermittelte Fläche ein vorbe­ stimmtes Verhältnis zum ausgewählten Wert hat.
4. Verfahren nach Anspruch 1, bei dem der Schritt der Ermitt­ lung eines Paares Tangentenlinien den Schritt der Bestim­ mung eines Schnittpunktes für jedes Paar Tangentenlinien umfaßt, und
wobei der Schritt der Definierung einer Linie zwischen je­ dem Paar Tangentenlinien eine Mittellinie definiert, indem ein Mittelpunkt einer Sehne bestimmt wird, der zwischen den Endpunkten jeder lokalisierten gebogenen Gestalt aus­ gebildet ist, und weiter umfassend die Definierung der Mittellinie als eine Linie, die sich durch den Schnitt­ punkt jedes Paares Tangentenlinien und dem betreffenden Mittelpunkt erstreckt.
5. Verfahren nach Anspruch 1, bei dem der vorgewählte Punkt ein angenäherter Mittelpunkt des vorbestimmten Musters ist und das Verfahren weiterhin den Schritt umfaßt, den vorge­ wählten Punkt als einen Mittelpunkt des vorbestimmten Mu­ sters zu bestätigen.
6. Verfahren nach Anspruch 1, weiterhin enthaltend den Schritt der Speicherung eines Abbildes eines MaxiCode- Symbols, wobei die konvex gebogenen Gestalten eine Viel­ zahl von konzentrischen Ringen sind, die den vorgewählten Punkt umgeben.
7. Verfahren nach Anspruch 1, bei dem der Schritt der Lokali­ sierung aller gebogenen Gestalten innerhalb des gespei­ cherten Abbildes die Schritte umfaßt:
Lokalisieren eines Randpunktes einer gebogenen Gestalt;
Analysieren einer Fläche benachbart dem Randpunkt;
Bestimmen einer Dominanzrichtung der lokalisierten geboge­ nen Gestalt auf der Grundlage des analysierten Bereiches, und
Anwenden einer vertikalen Suchschablone zum Lokalisieren einer Position der gebogenen Gestalt, wenn die Dominanz­ richtung horizontal ist, und Anwenden einer horizontalen Suchschablone zur Lokalisierung einer Position der geboge­ nen Gestalt, wenn die Dominanzrichtung vertikal ist.
8. Verfahren nach Anspruch 1, bei dem der Schritt der Lokali­ sierung aller gebogenen Gestalten den Schritt der Lokali­ sierung aller konvexen Jordan-Kurven umfaßt.
9. Verfahren nach Anspruch 1, bei dem der Schritt der Bestim­ mung wenigstens eines Schnittpunktes der definierten Lini­ en jeden Schnittpunkt ignoriert, der zwischen zwei defi­ nierten Linien ausgebildet wird, deren Schnittwinkel klei­ ner als etwa 10° und größer als etwa 90° ist.
10. Verfahren nach Anspruch 1, bei dem der vorgewählte Punkt ein Mittelpunkt des vorgewählten Musters ist und das Ver­ fahren weiterhin die Schritte umfaßt:
Messung der Distanzen zu den konvex gebogenen Gestalten in entgegengesetzten Richtung von dem Mittelpunkt ausgehend, und
Bestätigen, daß der Mittelpunkt ein angenäherter Mittel­ punkt des Symbols ist, wenn die in entgegengesetzten Rich­ tungen gemessenen Distanzen annähernd gleich sind.
11. Vorrichtung zum Decodieren eines maschinenlesbaren Sym­ bols, das eine codierte Information darstellt und aus meh­ reren im gegenseitigen Abstand angeordneten zweidimensio­ nalen Gestalten besteht, wobei das Symbol ein vorbestimm­ tes Orientierungsmuster aus konvex gebogenen Gestalten und Zwischenräumen zwischen den konvex gebogenen Gestalten aufweist und die konvex gebogenen Gestalten wenigstens teilweise einen vorbestimmten Punkt des Symbols umgeben, enthaltend:
einen Sensor, der von dem Symbol reflektiertes Licht emp­ fängt und ein Ausgangssignal daraus erfolgt, das das Re­ flexionsvermögen der Gestalten und Zwischenräume, die das Symbol bilden, repräsentiert,
einen Empfänger, der das Ausgangssignal aufnimmt und ein digitales Signal erzeugt, das ein Abbild der Gestalten und der Zwischenräume des Symbols repräsentiert,
eine Speichervorrichtung zum Speichern des digitalen Si­ gnals und
einen Prozessor zum Verarbeiten des digitalen Signals und zum Erzeugen eines Signals, das für die in dem Symbol co­ dierte Information kennzeichnend ist, wobei der Prozessor (a) alle gebogenen Gestalten innerhalb des gespeicherten digitalen Signals lokalisiert, (b) ein Paar Tangentenlini­ en von Endpunkten einer jeden lokalisierten Gestalt be­ stimmt, (c) eine Linie zwischen jedem Paar Tangentenlinien definiert, (d) wenigstens einen Schnittpunkt der definier­ ten Linien bestimmt, (e) den vorbestimmten Punkt auf der Grundlage des wenigstens einen Schnittpunkt der definier­ ten Linien lokalisiert, und (f) das Symbol decodiert und
ein Signal erzeugt, das für die in dem Symbol codierte In­ formation kennzeichnend ist, auf der Grundlage des lokali­ sierten vorbestimmten Punktes des Symbols.
12. Vorrichtung nach Anspruch 11, bei der der Prozessor alle Ränder zwischen gebogenen Gestalten und benachbarten Zwi­ schenräumen lokalisiert und gebogene Gestalten mit einem Bogenwinkel von weniger als π lokalisiert.
13. Vorrichtung nach Anspruch 11, bei der der Prozessor die gebogenen Gestalten lokalisiert, indem (i) eine Fläche un­ ter jeder der gebogenen Gestalten ermittelt wird, (ii) je­ de ermittelte Fläche mit einem gewählten Wert verglichen wird, und (iii) jede Kurve ignoriert wird, deren ermittel­ te Fläche ein vorbestimmtes Verhältnis zu dem gewählten Wert hat.
14. Vorrichtung nach Anspruch 11, bei der der Prozessor ein Paar Tangentenlinien bestimmt, indem ein Schnittpunkt je­ des Paar Tangentenlinien bestimmt wird, und eine Linie zwischen jedem Paar Tangentenlinien definiert, indem eine Mittellinie auf der Grundlage eines Mittelpunktes einer Sehne, die zwischen den Endpunkten jeder lokalisierten ge­ bogenen Gestalt gebildet ist, und dem Schnittpunkt jedes Paares Tangentenlinien definiert wird.
15. Vorrichtung nach Anspruch 11, bei der der vorbestimmte Punkt ein angenäherter Mittelpunkt des Symbols ist und der Prozessor bestätigt, daß der lokalisierte vorbestimmte Punkt ein Mittelpunkt des Symbols ist.
DE19705747A 1996-02-16 1997-02-14 Verfahren und Vorrichtung zur Ermittlung und Decodierung von maschinenlesbaren Symbolen Withdrawn DE19705747A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/602,624 US5786583A (en) 1996-02-16 1996-02-16 Method and apparatus for locating and decoding machine-readable symbols

Publications (1)

Publication Number Publication Date
DE19705747A1 true DE19705747A1 (de) 1997-10-30

Family

ID=24412118

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19705747A Withdrawn DE19705747A1 (de) 1996-02-16 1997-02-14 Verfahren und Vorrichtung zur Ermittlung und Decodierung von maschinenlesbaren Symbolen

Country Status (3)

Country Link
US (1) US5786583A (de)
JP (1) JPH1021322A (de)
DE (1) DE19705747A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0917081A1 (de) * 1997-11-17 1999-05-19 Datalogic S.P.A. Maxicode-Lokalisierungsverfahren
WO2017172323A1 (en) 2016-03-29 2017-10-05 Analog Devices, Inc. Simple code reader

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5798513A (en) * 1996-12-03 1998-08-25 Intermec Corporation Method and apparatus for decoding unresolved profiles produced from relief formed symbols
US6128414A (en) * 1997-09-29 2000-10-03 Intermec Ip Corporation Non-linear image processing and automatic discriminating method and apparatus for images such as images of machine-readable symbols
DE60142468D1 (de) * 2000-04-05 2010-08-12 Anoto Ab Identifizierung eines virtuellen rastermusters
US7050653B2 (en) 2000-04-05 2006-05-23 Anoto Ab Identification of virtual raster pattern
EP1143372B1 (de) * 2000-04-06 2006-03-22 Seiko Epson Corporation Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium
US7128266B2 (en) * 2003-11-13 2006-10-31 Metrologic Instruments. Inc. Hand-supportable digital imaging-based bar code symbol reader supporting narrow-area and wide-area modes of illumination and image capture
US7708205B2 (en) 2003-11-13 2010-05-04 Metrologic Instruments, Inc. Digital image capture and processing system employing multi-layer software-based system architecture permitting modification and/or extension of system features and functions by way of third party code plug-ins
US8042740B2 (en) 2000-11-24 2011-10-25 Metrologic Instruments, Inc. Method of reading bar code symbols on objects at a point-of-sale station by passing said objects through a complex of stationary coplanar illumination and imaging planes projected into a 3D imaging volume
US7464877B2 (en) 2003-11-13 2008-12-16 Metrologic Instruments, Inc. Digital imaging-based bar code symbol reading system employing image cropping pattern generator and automatic cropped image processor
US7490774B2 (en) 2003-11-13 2009-02-17 Metrologic Instruments, Inc. Hand-supportable imaging based bar code symbol reader employing automatic light exposure measurement and illumination control subsystem integrated therein
US7540424B2 (en) 2000-11-24 2009-06-02 Metrologic Instruments, Inc. Compact bar code symbol reading system employing a complex of coplanar illumination and imaging stations for omni-directional imaging of objects within a 3D imaging volume
SE520682C2 (sv) * 2001-12-06 2003-08-12 Anoto Ab Rekonstruering av ett virtuellt raster
JP4364554B2 (ja) * 2002-06-07 2009-11-18 株式会社ルネサステクノロジ スイッチング電源装置及びスイッチング電源システム
US20040164152A1 (en) * 2003-02-20 2004-08-26 Youngers Kevin J. Optical image scanning with user adjustable object plane
US7270272B2 (en) * 2003-11-13 2007-09-18 Metrologic Instruments, Inc. Digital image-based bar code symbol reading system employing a multi-mode image-processing symbol reading subsystem
US7841533B2 (en) 2003-11-13 2010-11-30 Metrologic Instruments, Inc. Method of capturing and processing digital images of an object within the field of view (FOV) of a hand-supportable digitial image capture and processing system
US20060050961A1 (en) * 2004-08-13 2006-03-09 Mohanaraj Thiyagarajah Method and system for locating and verifying a finder pattern in a two-dimensional machine-readable symbol
US9269339B1 (en) * 2014-06-02 2016-02-23 Illiac Software, Inc. Automatic tonal analysis of musical scores

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2612994A (en) * 1949-10-20 1952-10-07 Norman J Woodland Classifying apparatus and method
US4013893A (en) * 1975-08-07 1977-03-22 Welch Allyn, Inc. Optical bar code scanning device
JPS61131074A (ja) * 1984-11-29 1986-06-18 Yokohama Rubber Co Ltd:The 凹凸バ−コ−ドの読取方法
US4736109A (en) * 1986-08-13 1988-04-05 Bally Manufacturing Company Coded document and document reading system
JPS63273184A (ja) * 1987-04-30 1988-11-10 Kyoritsu:Kk コ−ドシステム
JPS6477174A (en) * 1987-09-18 1989-03-23 Toshiba Corp Manufacture of semiconductor device
JPH0197896A (ja) * 1987-10-09 1989-04-17 Toshiba Corp 核融合装置
US5059774A (en) * 1987-10-15 1991-10-22 Ricoh Company, Ltd. Seek and track control for a rectangular optical card handling apparatus
FR2622992B1 (fr) * 1987-11-06 1990-02-09 Thomson Semiconducteurs Procede de lecture de codes a barres
US4896029A (en) * 1988-04-08 1990-01-23 United Parcel Service Of America, Inc. Polygonal information encoding article, process and system
US4874936A (en) * 1988-04-08 1989-10-17 United Parcel Service Of America, Inc. Hexagonal, information encoding article, process and system
US4998010A (en) * 1988-04-08 1991-03-05 United Parcel Service Of America, Inc. Polygonal information encoding article, process and system
US4939354A (en) * 1988-05-05 1990-07-03 Datacode International, Inc. Dynamically variable machine readable binary code and method for reading and producing thereof
JPH0275091A (ja) * 1988-09-09 1990-03-14 Takayuki Murata 情報表示体
US5080456A (en) * 1990-02-26 1992-01-14 Symbol Technologies, Inc. Laser scanners with extended working range
US5241166A (en) * 1990-07-02 1993-08-31 Chandler Donald G Low resolution target acquisition
US5153418A (en) * 1990-10-30 1992-10-06 Omniplanar, Inc. Multiple resolution machine readable symbols
US5189292A (en) * 1990-10-30 1993-02-23 Omniplanar, Inc. Finder pattern for optically encoded machine readable symbols
US5296693A (en) * 1991-12-16 1994-03-22 Canon Kabushiki Kaisha Ink intrusion resistant digital code
DE4208082C1 (en) * 1992-03-13 1993-02-11 Agfa-Gevaert Ag, 5090 Leverkusen, De Reading bar=code on edge of photographic film - ascertaining code start and end and thus length by relative speed between film and sensor arrangement
US5276315A (en) * 1992-05-14 1994-01-04 United Parcel Service Of America, Inc. Method and apparatus for processing low resolution images of degraded bar code symbols
JPH0687270B2 (ja) * 1992-09-16 1994-11-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 線分の方向検出装置及びその方法
US5591956A (en) * 1995-05-15 1997-01-07 Welch Allyn, Inc. Two dimensional data encoding structure and symbology for use with optical readers
US5513264A (en) * 1994-04-05 1996-04-30 Metanetics Corporation Visually interactive encoding and decoding of dataforms
US5637849A (en) * 1995-05-31 1997-06-10 Metanetics Corporation Maxicode data extraction using spatial domain features

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0917081A1 (de) * 1997-11-17 1999-05-19 Datalogic S.P.A. Maxicode-Lokalisierungsverfahren
WO2017172323A1 (en) 2016-03-29 2017-10-05 Analog Devices, Inc. Simple code reader
CN107533628A (zh) * 2016-03-29 2018-01-02 美国亚德诺半导体公司 简单代码读取器
EP3308322A4 (de) * 2016-03-29 2018-08-15 Analog Devices, Inc. Einfacher codeleser

Also Published As

Publication number Publication date
US5786583A (en) 1998-07-28
JPH1021322A (ja) 1998-01-23

Similar Documents

Publication Publication Date Title
DE19705747A1 (de) Verfahren und Vorrichtung zur Ermittlung und Decodierung von maschinenlesbaren Symbolen
DE60118051T2 (de) Verfahren und Vorrichtung zum Lesen von einem zwei-dimensionalen Strichkode und Datenspeichermedium
DE60210348T2 (de) Bildidentifizierungssystem
US6466695B1 (en) Procedure for automatic analysis of images and image sequences based on two-dimensional shape primitives
DE69728482T2 (de) Zweidimensionaler Codeleser
DE19521346C2 (de) Bilduntersuchungs/-Erkennungsverfahren, darin verwendetes Verfahren zur Erzeugung von Referenzdaten und Vorrichtungen dafür
DE69332771T2 (de) Verfahren und Vorrichtung zum Dekodieren von strichkodierten Symbolen
DE19722439A1 (de) Verfahren und Vorrichtung zur Auffindung und Dekodierung maschinenlesbarer Symbole einschließlich Datenmatrixsymbolen
US6064763A (en) Time-efficient method of analyzing imaged input data to locate two-dimensional machine-readable symbols or other linear images therein
EP2417561B1 (de) Zweidimensionaler symbolcode und verfahren zum lesen des symbolcodes
EP1119822B1 (de) Verfahren und system zur personenerkennung mit modellbasierter gesichtsfindung
DE69625583T2 (de) Datenformleser
DE60215810T2 (de) Verfahren und gerät zur transformation eines bildes einer biologischen oberfläche
DE69835358T2 (de) Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes
DE102007035884B4 (de) Linienrauschunterdrückungsvorrichtung, -verfahren und -programm
DE19814075B4 (de) Verfahren zum Abtasten und Erkennen mehrerer Fotografien und zum Beseitigen von Randfehlern
DE69629930T2 (de) Verfahren zum Festlegen eines auf einem Objekt angebrachten optischen Codes
DE69926205T2 (de) Artefaktentfernungstechnik für schiefenkorrigierte bilder
DE10036110A1 (de) Verfahren zur Bestimmung des Schrägwinkels eines zweidimensionalen Barcodes
US8019132B2 (en) System for recognizing fingerprint image, method and program for the same
DE102015219541A1 (de) Dekodieren von strichcodes
US20030200236A1 (en) Curve tracing system
Rosenfeld Image pattern recognition
DE102008056600A1 (de) Verfahren und Vorrichtung zum Erkennen von Objekten
DE60300476T2 (de) System zum Erkennen eines Barcodes

Legal Events

Date Code Title Description
8139 Disposal/non-payment of the annual fee