DE19705747A1 - Verfahren und Vorrichtung zur Ermittlung und Decodierung von maschinenlesbaren Symbolen - Google Patents
Verfahren und Vorrichtung zur Ermittlung und Decodierung von maschinenlesbaren SymbolenInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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/06009—Record 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/06037—Record 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/255—Detecting or recognising potential candidate objects based on visual cues, e.g. shapes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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/06215—Aspects not covered by other subgroups
- G06K2019/06243—Aspects not covered by other subgroups concentric-code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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/06215—Aspects not covered by other subgroups
- G06K2019/06262—Aspects not covered by other subgroups with target- or other orientation-indicating feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/24—Aligning, centring, orientation detection or correction of the image
- G06V10/245—Aligning, 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
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.
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.
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.
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.
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)
{{(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)
{{(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.
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.
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.
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.
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.
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.
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.
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)
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)
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 |
US7050653B2 (en) | 2000-04-05 | 2006-05-23 | Anoto Ab | Identification of virtual raster pattern |
ATE472778T1 (de) * | 2000-04-05 | 2010-07-15 | Anoto Ab | Identifizierung eines virtuellen rastermusters |
DE60118051T2 (de) | 2000-04-06 | 2006-08-31 | Seiko Epson Corp. | 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 |
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 |
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 |
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 |
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)
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 |
US4874936A (en) * | 1988-04-08 | 1989-10-17 | United Parcel Service Of America, Inc. | Hexagonal, information encoding article, process and system |
US4896029A (en) * | 1988-04-08 | 1990-01-23 | United Parcel Service Of America, Inc. | Polygonal 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 |
US5189292A (en) * | 1990-10-30 | 1993-02-23 | Omniplanar, Inc. | Finder pattern for optically encoded machine readable symbols |
US5153418A (en) * | 1990-10-30 | 1992-10-06 | Omniplanar, Inc. | Multiple resolution 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 |
-
1996
- 1996-02-16 US US08/602,624 patent/US5786583A/en not_active Expired - Lifetime
-
1997
- 1997-02-14 DE DE19705747A patent/DE19705747A1/de not_active Withdrawn
- 1997-02-17 JP JP9070348A patent/JPH1021322A/ja active Pending
Cited By (4)
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 | |
DE10036110B4 (de) | Verfahren zur Bestimmung des Schrägwinkels eines zweidimensionalen Barcodes | |
US6466695B1 (en) | Procedure for automatic analysis of images and image sequences based on two-dimensional shape primitives | |
DE69728482T2 (de) | Zweidimensionaler Codeleser | |
DE69126231T2 (de) | Leser für Strichkodierungen | |
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 | |
DE69310049T2 (de) | Verfahren und Vorrichtung zum Auffinden einer Ecke einer Struktur in zweidimensionalen Bildern | |
DE68925059T2 (de) | Verfahren und Gerät zur polygonalen Datendekodierung | |
EP2417561B1 (de) | Zweidimensionaler symbolcode und verfahren zum lesen des symbolcodes | |
EP1119822B1 (de) | Verfahren und system zur personenerkennung mit modellbasierter gesichtsfindung | |
US5506918A (en) | Document skew detection/control system for printed document images containing a mixture of pure text lines and non-text portions | |
DE69625583T2 (de) | Datenformleser | |
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 | |
DE102015219541A1 (de) | Dekodieren von strichcodes | |
DE69029594T2 (de) | Ermittlung von Linienabschnitten und von vorbestimmten Mustern in einem optisch abgetasteten Dokument | |
US20030200236A1 (en) | Curve tracing system | |
US20110058714A1 (en) | System for recognizing fingerprint image, method and program for the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8139 | Disposal/non-payment of the annual fee |