-
Die Erfindung bezieht sich auf ein
Verfahren zum Auslesen einer auf einem Gegenstand aufgebrachten
Punktmatrix-Codemarkierung.
-
Es ist oft erforderlich, Werkstücke individuell zu
identifizieren, wenn diese eine Reihe von Herstellungsschritten
durchlaufen, so dass die Geschichte ihrer Herstellung zur Bezugnahme
verfügbar
wird. Ein bekanntes Verfahren der Identifizierung ist in dem GB-Patent
2201808 beschrieben.
-
Derartige Komponenten oder Werkstücke werden
zweckmäßigerweise
mit einer Identifizierungsmarkierung in Form eines Punktmatrix-Codes versehen,
und der Punktmatrix-Code wird unter Benutzung eines optischen Lesegerätes ausgelesen. Die
Punktmatrix-Codemarkierung umfasst mehrere Spalten und Zeilen, auf
denen die Punkte, aus denen die Codemarkierung besteht, angeordnet
werden. Das Lesegerät
erzeugt einen Ausgang, der dann durch einen Prozessor in eine digitale
Form umgewandelt wird. Ein weiterer Prozessor wird vorgesehen, um
die Orientierung und Positionierung des Punktmatrix-Codes auf dem
digitalisierten Bild zu bestimmen. Der weitere Prozessor arbeitet
unter Berechnung der äußeren Grenzen
des Punktmatrix-Codes aus den individuellen Punkten in dem digitalisierten
Bild. Dies bedeutet, dass der Rand des Punktmatrix-Codes eine ausreichende
Zahl von Punkten entlang des Randes aufweisen muss, und jeder Punkt muss
genau angeordnet werden. Nicht alle Punktmatrix-Codes erfüllen jedoch
diese Forderungen, weil die Ränder
einiger Punktmatrix-Codes sehr wenige Punkte aufweisen und in gewissen
Fällen
die Bildverarbeitung, die durchgeführt wird, um die Punkte zu
lokalisieren, nicht ausreicht, um sämtliche Punkte zu lokalisieren.
-
Die
US
5128528 beschreibt ein Verfahren zum Auslesen einer Punktmatrix-Codemarkierung, das
zwei Daten benutzt, nämlich
eine Bezugsmarkierung und ein Bezugs-cve. Die Abstände zwischen den
Punkten und der Bezugsmarkierung werden gemessen, und es werden
außerdem
die Winkel gemessen, die die Punkte relativ zu der Bezugsmarkierung
und dem Bezugs-cve einschließen,
um eine Reihe von Vektoren zu erzeugen.
-
Unsere britische Patentanmeldung GB-A-2290137,
die als europäische
Patentanmeldung EP-A-0699324 veröffentlicht
wurde, beschreibt ein Verfahren und eine Vorrichtung zur Identifizierung der
Orientierung einer Punktmatrix-Codemarkierung auf
einem Gegenstand. Hier wird jedoch nicht das Problem gelöst, das
darin besteht, einen Code auszulesen, der bei der Bearbeitung des
Werkstückes teilweise
abgedeckt oder beschädigt
wurde.
-
Die vorliegende Erfindung bezweckt
die Schaltung eines Verfahrens und einer Vorrichtung zum Auslesen
einer auf einem Gegenstand angeordneten Punktmatrix-Codemarkierung, wobei
das Auslesen selbst dann noch durchführbar ist, wenn die Markierung
auf irgendeine Weise abgedeckt oder beschädigt ist.
-
Die Erfindung betrifft ein Verfahren
zum Auslesen einer auf einem Gegenstand angebrachten Punktmatrix-Codemarkierung,
die mehrere Zeilen und Spalten aufweist, in denen die Punkte der
Punktmatrix-Codemarkierung angeordnet sind, wobei das Verfahren
die folgenden Schritte aufweist:
-
- a) es wird ein Bild des Punktmatrix-Codes erfasst;
- b) es werden Stellen auf dem erfassten Bild mit einer Maske
korreliert, wobei die Maske dem erwarteten Punkt-Erscheinungsbild
entspricht und wobei die Korrelation durchgeführt wird durch zeilenweise
und pixelweise Abtastung des, erfassten Bildes oder durch Abtastung
des erfassten Bildes derart, dass ausgewählte Pixel und/oder Zeilen des
erfassten Bildes ausgelassen werden, um die Abtastraten zu erhöhen;
- c) es wird ein Schwellwert zur Korrelation zwischen den Stellen
auf dem erfassten Bild und der Maske des erwarteten Punkt-Erscheinungsbildes eingestellt;
- d) es werden jene Stellen auf dem erfassten Bild abgebildet,
die eine Korrelation über
dem Schwellwert besitzen, um eine Darstellung möglicher Punkte im Punktmatrix-Code
zu erzeugen;
- e) falls erforderlich, wird der Schwellwert gemäß vorbestimmten
Kriterien nachgestellt, um die Zuverlässigkeit der Auslesung zu verbessern
und es wird der Schritt d) wiederholt;
- f) falls erforderlich, wird die Maske des erwarteten Punkt-Erscheinungsbildes
gemäß vorbestimmten Kriterien
nachgestellt, um die Zuverlässigkeit
der Auslesung zu verbessern und es werden die Schritte b) bis e)
wiederholt;
- g) falls erforderlich, wird die Darstellung möglicher Punkte
im Punktmatrix-Code
in eine Auslese-Orientierung überführt;
- h) es wird ein Gitter aus einer vorbestimmten Anzahl von Zeilen
und Spalten von Zellen erzeugt, wobei das Gitter über der
Darstellung möglicher Punkte
im Punktmatrix-Code derart erzeugt wird, dass das Gitter eine Zelle
um jeden möglichen Punkt
im Punktmatrix-Code herum definiert, der innerhalb der vorbestimmten
Anzahl von Zeilen und Spalten liegt;
- i) es wird versucht, die Darstellung möglicher Punkte im Punktmatrix-Code
zu dekodieren, die innerhalb der Zellen des erzeugten Gitters liegen, und
zwar unter Bezugnahme auf ein Bezugsgitter, wobei das Bezugsgitter
Zeilen und Spalten gültiger
Punktmatrix-Codes repräsentiert;
und
- j) beim Auffinden eines gültigen
Codes wird ein Signal ausgegeben, welches bestätigt, dass ein gültiger Code
gefunden wurde.
-
Gemäß einem bevorzugten Verfahren
wird, wenn kein gültiger
Code gefunden wird, ein verminderter Schwellwert eingestellt, und
die Schritte c) bis i) werden wiederholt.
-
Die vorbestimmten Kriterien im Schritt
f) können
derart sein, dass dann, wenn mehr als eine vorbestimmte maximale
Zahl möglicher
Punkte aufgezeichnet wird, die Maske eingestellt wird durch Erzeugung
einer weiteren Maske des erwarteten Punkt-Erscheinungsbildes, wobei
die weitere Maske des erwarteten Punkt-Erscheinungsbildes eine Reproduktion
jenes Punktes im Bild des Punktmatrix-Codes bildet, das am Nächsten mit
der ursprünglichen
Maske korreliert.
-
Die vorbestimmten Kriterien im Schritt
e) können
derart sein, dass, wenn weniger als eine vorbestimmte minimale Zahl
möglicher
Punkte aufgezeichnet ist, der Pegel eingestellt wird durch Verminderung
des Pegels um einen vorbestimmten Betrag, vorausgesetzt, dass der
Pegel nicht unter einen vorbestimmten minimalen Wert absinkt. Vorzugsweise wird,
wenn der Pegel unter den vorbestimmten minimalen Wert absinkt, eine
weitere Maske des erwarteten Punkt-Erscheinungsbildes erzeugt, und
die weitere Maske enthält
eine Reproduktion jenes Punktes im Bild des Punktmatrix-Codes, der
am Nächsten
mit der ursprünglichen
Maske des erwarteten Punktmatrix-Bildes korreliert.
-
Um ein fehlerhaftes, Ermitteln von
Punktmatrix-Codes zu vermeiden, gewährleistet das Verfahren vorzugsweise,
dass eine weitere Maske eines erwarteten Punkt-Erscheinungsbildes nur einmal erzeugt
werden kann. Wenn daher der Schwellwert auf weniger als den vorbestimmten
Minimalwert ein zweites Mal absinkt oder wenn ein zweites Mal mehr
als eine vorbestimmte maximale Zahl von Punkten mit einer Korrelation über dem
Schwellwert vorhanden ist, dann wird ein Signal ausgegeben, das
einen Fehler im Auslesen des Punktmatrix-Codes anzeigt.
-
Das Gitter im Schritt h) kann über den
möglichen
Punkten durch kontinuierliche Einstellung der relativen Positionen
der Zellen gegenüber
den Punkten erzeugt werden, um zu gewährleisten, dass die Punkte
innerhalb der Zellengrenzen befindlich sind, die das erzeugte Gitter
bildet.
-
Eine Dekodierung der Aufzeichnung
möglicher
Punkte kann durch Vergleich des Bezugsgitters mit dem erzeugten
Gitter und dadurch erreicht werden, dass das gültige Codesignal ausgegeben
wird, wenn eine minimale Zahl von Zellen mit Punkten in dem erzeugten
Gitter den Zellen in dem Bezugsgitter entspricht.
-
Bevor ein Signal ausgegeben wird,
das das Auffinden eines gültigen
Codes bestätigt,
wird die Gültigkeit
des Codes durch Bezugnahme auf Fehlerkorrektur-Bits und zyklische
Redundanz-Überprüfungen kontrolliert,
die in den Punktmatrix-Code eingebaut sind.
-
Wie in den oben erwähnten Patentanmeldungen
können
die Punkte des Punktmatrix-Codes zweckmäßigerweise aus Eindrücken in
einer Oberfläche
des Gegenstandes bestehen. Um einen guten Kontrast der Punkte gegenüber der
umgebenden Oberfläche
zu erzielen, wird die Punktmatrix vorzugsweise durch eine helle
Lichtquelle beleuchtet, die schräg
auf die Oberfläche
scheint. Eine geeignet starke Lichtquelle wird durch wenigstens
eine, vorzugsweise mehrere, helle Leuchtdioden geschaffen.
-
Die ursprüngliche Maske des erwarteten Punkt-Erscheinungsbildes
repräsentiert
vorzugsweise das Erscheinungsbild eines schräg beleuchteten reinen Punktes
in einem Punktmatrix-Code. Es kann jedoch zweckmäßig sein, die ursprüngliche
Maske des erwarteten Punkt-Erscheinungsbildes auf Wunsch des Benutzers
zu ändern,
weil das Erscheinungsbild der Punkte in jedem derartigen Punktmatrix-Code von der vorherigen
Verarbeitung abhängt, mit
der der Gegenstand behandelt wurde und von der Beleuchtung der Punkte.
-
Vorzugsweise ist das erfasste Bild
ein Videobild, das durch eine Videokamera aufgenommen wurde und
als Videobild gespeichert ist. Vorzugsweise ist die Videokamera
eine CCD-Kamera.
-
Eine Korrektur kann durchgeführt werden,
indem jedes zweite Pixel und jede zweite Zeile des erfassten Bildes
abgetastet werden. Die Erfindung betrifft auch eine Vorrichtung,
die in der Lage ist, das vorgenannte Verfahren durchzuführen.
-
Ein Ausführungsbeispiel der Erfindung
wird nachstehend unter Bezugnahme auf die beiliegende Zeichnung
beschrieben. In der Zeichnung zeigen:
-
1 ist
eine schematische Darstellung einer erfindungsgemäßen Vorrichtung;
-
2a bis 2d sind Skizzen von beispielsweisen
Bildern auf einer Video-Displayeinheit,
welche die Schritte zur Durchführung
des erfindungsgemäßen Verfahrens
veranschaulichen; und
-
3 ist
ein Software-Ablaufdiagramm, welches die Schritte des erfindungsgemäßen Verfahrens veranschaulicht.
-
Gemäß 1 weist eine Vorrichtung 1 zum Auslesen
einer Punktmatrix-Codemarkierung 2 auf einem
Gegenstand 3 helle Leuchtdioden zur Beleuchtung des Punktmatrix-Codes 2 auf
dem Gegenstand 3 und eine Videokamera 5, beispielsweise
eine CCD-Kamera auf, um den beleuchteten Punktmatrix-Code 2 zu
betrachten. Die Leuchtdioden 4 richten das Licht unter
einem kleinen Einfallswinkel auf die Oberfläche des Gegenstandes 3,
um den Kontrast der Punkte im Punktmatrix-Code 2 zu vergrößern.
-
Die Kamera 5 erzeugt ein
Video-Ausgangssignal entsprechend dem Bild des Punktmatrix-Codes 2.
Das Ausgangssignal wird einem Computer 6, beispielsweise
einem Personalcomputer, zugeführt,
der eine Video-Digitizer-Karte 7 aufweist, um das Bild des
Punktmatrix-Codes 2 zu verarbeiten und das Bild des Punktmatrix-Codes 2 zu
speichern.
-
Eine vorbestimmte ursprüngliche
Standardmaske des erwarteten Punkt-Erscheinungsbildes wird im Speicher 8 für den Computer 6 gespeichert, z.
B. auf einer Harddisk. Diese Maske, entsprechend einem Bild der
seitlich beleuchteten reinen Punkte, wird von der Disk 8 in
das RAM 9 des PC geladen, jedoch wird es während der
folgenden Schritte des Verfahrens modifiziert, wie dies später erläutert wird.
-
Bei gewissen Schritten der Verarbeitung kann bekanntlich das Punkt-Erscheinungsbild
unterschiedlich sein. Beispielsweise können die Punkte mit Schmutz
angefüllt
sein. In einem solchen Fall kann es zweckmäßig sein, wenn eine oder mehrere alternative
Masken ebenfalls auf der Disk 8 gespeichert sind, so dass
der Benutzer die ursprüngliche Standardmaske
gegen eine alternative Standardmaske entsprechend dem erwarteten
Punkt-Erscheinungsbild bei jenem speziellen Verarbeitungsschritt austauschen
kann.
-
Wenn eine unzureichende Korrelation
zwischen den Punkten und der ursprünglichen Maske gefunden wird,
erzeugt das System eine weitere Maske. Um dies zu tun, wählt das
System den Punkt in dem erfassten Bild aus, der die beste Korrelation mit
der ursprünglichen
Maske hat, und es wird die erwartete Korrelation zwischen Bild und
Maske durch einen bestimmten Betrag, z. B. um 20 %, reduziert, so
dass weitere Punkte umfasst werden, die mit der reduzierten Korrelation
zusammenpassen, und es wird die weitere Maske erzeugt, die aus Punkten
besteht, die den gewählten
Punkt im erfassten Bild reproduziert.
-
Das vorstehende Korrelationsverfahren
ist eine zweidimensionale Korrelation, die durch eine Korrelations-Software
durchgeführt
wird. Eine zweidimensionale Korrelation ist ein sehr bekanntes mathematisches
Verfahren und kann leicht durch Eingriff in die Bildverarbeitungs-Software
derart kodiert werden, dass es für
die Zwecke der vorliegenden Erfindung benutzbar ist. Die Korrelations-Software 11 tastet
das Bild pixelweise und zeilenweise ab. Wenn eine schnellere Auslesung
erforderlich ist, kann die Korrelation unter Benutzung einer wählbaren „Sprung"-Funktion durchgeführt werden,
so dass beispielsweise die Korrelations-Software 11 nur
jedes zweite Pixel und jede zweite Zeile abtastet. Eine volle Abtastung
liefert eine etwas bessere Definition und weniger Fehler bei der
Dekodierung, aber das System ist immer noch in der Lage, korrekt
Punktmatrix-Codes sogar mit einer unvollständigen Abtastung auszulesen.
-
Eine Video-Displayeinheit 10 kann
benutzt werden, um das Bild bei irgendeinem dieser Schritte der
Bildverarbeitung darzustellen, wenn dies erforderlich ist. In einem
System zur Benutzung mit der Erzeugung einer Zeile würde dies
jedoch nicht notwendig sein, da der Ausgang 17 des Systems
nur ein Schaltsignal sein kann, um eine hörbare und/oder sichtbare Anzeige
zu liefern, dass der Punktmatrix-Code 2, der von der Kamera 5 betrachtet
wird, erfolgreich dekodiert wurde oder nicht.
-
2a ist
eine Repräsentation
eines Bildes einer Video-Displayeinheit, welches die Ergebnisse des
obigen ursprünglichen
Korrelationsschrittes zeigt. Das Bild zeigt die Punkte des Codes 2 als
helle Punkte S, zusammen mit gestreuten Rauschpunkten P. Bei diesem
Schritt können
einige der Punkte S fehlerhaft sein, oder Fremdkörper auf der Oberfläche des
Gegenstandes werden überprüft anstelle
jenes Teils des Punktmatrix-Codes 2, der durch den ursprünglichen
Korrelationsprozess missidentifiziert wurde.
-
Die Korrelations-Software 11 arbeitet
in Verbindung mit der Schwellwert-Software 12, die einen vorbestimmten
ursprünglichen
Schwellwert für
den Korrelationsprozess festlegt, so dass nur Punkte auf dem Bild,
die eine Korrelation über
dem Schwellwert haben, ausgewählt
werden als annehmbar korreliert für die Maske. Gemäß unserem
bevorzugten Ausführungsbeispiel
ordnen wir jeden Punkt einer Korrelationsmessung der Maske auf einer
Skala von 0 bis 63 zu. Beispielsweise werden, wenn der ursprüngliche Schwellwert
auf einen hohen Wert, beispielsweise 50, eingestellt ist, nur sehr
wenige Punkte ausgewählt,
aber wenn der Schwellwert verringert wird, würden mehr auf dem Bild der
Video-Displayeinheit gemäß 2a erscheinen.
-
Es ist zu bevorzugen, dass die Zahl
der Punkte über
dem ursprünglichen
Schwellwert kleiner ist als eine vorbestimmte Zahl, die zur Dekodierung benötigt wird,
beispielsweise 20, und dann wird der Schwellwert um beispielsweise
4 auf der Korrelationsskala herabgesetzt und der Korrelationsprozess wird
wiederholt. Wenn die Zahl der gewählten Punkte für die Dekodierung
ausreicht, aber kein Code abgeleitet werden kann, dann wird der
Pegel um einen kleineren Wert, beispielsweise 2, abgesenkt, bevor das
Korrelationsverfahren wiederholt wird. Wenn die Zahl der gewählten Punkte
größer ist
als eine vorbestimmte Zahl, beispielsweise 100, wird dies als Anzeige
gewertet, dass eine neue Maske erforderlich ist, um einen strengeren
Korrelationsstandard anzuwenden. Infolgedessen wird eine neue Maske
erzeugt, die aus Punkten besteht, die jene Stelle in dem erfassten
Bild reproduzieren, das die beste Korrelation zur ursprünglichen
Maske besitzt.
-
Nachdem der Korrelations-Schwellwertprozess
vollendet ist, existiert ein Aufzeichnungsbild 13 im RAM
entsprechend jenen Punkten, die eine Korrelation über dem
Schwellwert besitzen. Wenn das Aufzeichnungsbild 13 auf
der Video-Displayeinheit 10 wiedergegeben
wird, dann kann ein Bild, ähnlich
jenem nach 2b, erzeugt
werden.
-
Wenn genügend Punkte aufgezeichnet wurden,
um eine Dekodierung zu versuchen, dann wird die Orientierung der
Zeilen und Spalten der Punkte in dem aufgezeichneten Bild durch
die Orientierungs-Software 14 überprüft, wie dies im Einzelnen in unserer
oben erwähnten älteren Patentanmeldung beschrieben
ist. Zunächst
werden die Zwischenpunktabstände
und der Winkel einer der Spalten gefunden, die den kürzesten
Zwischenpunktabstand haben (dies ist entweder die Zeilenachse oder
die Spaltenachse des Punktmatrix-Codes) und es wird eine vordefinierte
Normalachse gefunden. Wenn notwendig, wird das Bild dann über jenen
Winkel in eine normale Orientierung gedreht, in der es möglich ist, das
Bild zu dekodieren oder „auszulesen".
Dies kann als erster Versuch einer „Ausleseorientierung" bezeichnet
werden.
-
Als Nächstes wird ein Histogramm
der Zwischenpunktabstände
erzeugt und die Zeilenabstände und
die Spaltenabstände
der Punkte werden extrahiert. Dann wird das Bild überprüft, um zu
gewährleisten,
ob es eine Re-Orientierung erfordert. Die Re-Orientierung kann notwendig
sein, weil es keine Möglichkeit
gibt zu erkennen (unter der Annahme, dass die Abstände zwischen
den Punkten in den Spalten und den Zeilen identisch sind), ob die
oben gewählte Spalten
von Punkten, weil sie die kürzesten
Zwischenpunktabstände
haben, eine Spalte oder eine Zeile in dem tatsächlichen Punktmatrix-Code repräsentieren.
Bei diesem Beispiel betrachten wir eine 6 × 15 – Matrix, so dass im Effekt
das Bild überprüft wird,
um zu sehen, ob dort 15 Punkte von links nach rechts vorhanden sind,
und wenn nicht, wird das Bild um einen rechten Winkel gedreht, um
eine Endauslese-Orientierung zu erhalten.
-
Das tatsächliche Verfahren, durch das
die Re-Orientierung im vorherigen Satz erreicht wird, umfasst eine
Summierung der Quadrate der Zwischenpunktabstände für alle Punkte, die auf Zeilen parallel
zur oben erwähnten
Normalachse liegen. Dies kann die x-Richtung sein. In ähnlicher
Weise werden die Quadrate der Zwischenpunktabstände für alle Punkte summiert, die
auf Zeilen liegen, die rechtwinklig zur Normalachse verlaufen. Dies
kann die y-Richtung sein. Wenn die Summe der Quadrate der Zwischenpunktabstände in x-Richtung
größer ist
als die Summe der Quadrate der Zwischenpunktabstände in y-Richtung, dann befindet
sich das Bild in der richtigen Orientierung. Sonst muss das Bild
um einen rechten Winkel gedreht werden, so dass es dann genau dekodiert
werden kann.
-
Um den Versuch einer Dekodierung
zu ermöglichen,
konstruiert die Gittererzeugungs-Software 15 ein sogenanntes „Einstellgitter" über den
Punkten des aufgezeichneten Bildes, das von dem obigen Verfahren
herrührt.
Es ist zu bevorzugen, dass das Gitter so eingestellt wird, dass
es eine 20 × 20 – Gruppe
von Zellen bildet. Zunächst
wird die Mitte der Gruppe von Punkten im Bild aus der durchschnittlichen
Punktposition gefunden. Der dem Zentrum am Nächsten liegende Punkt wird
ermittelt, und es wird eine Zelle darum plaziert (2c). Das eingestellte Gitter wird dann
produziert, indem es von der zentralen Zelle zunächst vertikal für 10 Zellen
nach oben und unten und dann horizontal für 10 Zellen nach links und
rechts ausgedehnt wird, wobei das Gitter auf die Punktpositionen
auf dem Bild eingestellt wurde (gezeigt für ein kleineres Gitter in 2d).
-
Die Dekodierungs-Sofware 16 ruft
dann ein Bezugsgitter von der Disk 8 ab. Dies wird positioniert und über das
gesetzte Gitter zeilenweise und spaltenweise mit wenigstens 20 Zellen
des gesetzten Gitters bewegt, die Punkte enthalten, welche durch
das Bezugsgitter bedeckt sind. Die Punkte außerhalb des Bezugsgitters werden
dann ignoriert, und eine Dekodierung des Punktmatrix-Codes wird
versucht durch Übertragung
des Punktmusters, welches so in das Bezugsgitter in einen numerischen
Code aufgenommen wurde, und es wird ein Vergleich mit einer Liste zulässiger Codes
vorgenommen, die in der Disk 8 vorhanden sind. Die Dekodierung
wird in zwei Orientierungen des aufgezeichneten Punktbildes durchgeführt, erstens
mit der aktuellen Orientierung und zweitens unter 180° gegenüber der
aktuellen Orientierung, falls das Bild seitenverkehrt ist.
-
Der Punktmatrix-Code umfasst Fehlerkorrektur-Bits
und zyklische Redundanz-Überprüfungen,
und die Dekodierungs-Software 16 benutzt diese, um den
Punktmatrix-Code aus den Punkten zu konstruieren, die sich im Bezugsgitter
finden. Wenn ein gültiger
Code gefunden wurde, wird ein Ausgangssignal 17 diesbezüglich erzeugt,
und der Wert des gültigen
Codes kann an die Video-Displayeinheit 10 ausgegeben werden,
die auch die Zahl von Fehlern darstellt, die sich im Bezugsgitter
finden, das korrigiert wurde als ein Maß der Qualität des ursprünglichen
Bildes des Punktmatrix-Codes. Wenn jedoch kein gültiger Code ermittelt wird,
vermindert die Schwellwert-Software 12 den Schwellwert
um beispielsweise 2, und das Verfahren wird wiederholt.
-
Bei diesem Beispiel wird eine 6 × 15 – Matrix für den Punktmatrix-Code 2 benutzt.
Diese hat 10 Gruppen von 9 Punkten, und 8 der Gruppen liefern den
Code und 2 liefern zyklische Redundanz-Überprüfungen. Jede der 9 Punktgruppen
besteht aus 5 Daten-Bits und 4 Fehlerkorrektur-Bits. Die Fehlerkorrektur
ermöglicht
eine Korrektur für
einen fehlenden Punkt in jeder Gruppe, und die benutzte Code- Anordnung ermöglicht es,
die Ecken zu verlieren, ohne 2 Punkte aus irgendeiner Code-Gruppe
zu verlieren.
-
3 zeigt
ein Flussdiagramm, welches die Schritte eines beispielsweisen nach
der Erfindung durchgeführten
Verfahrens veranschaulicht. Der Gegenstand 3 wird vor der
Kamera 5 angeordnet, und der Computer 6 führt die
Schritte des Verfahrens wie folgt durch:
-
BILDEINFANGEN (30) - Das
Bild wird eingefangen und gespeichert, so dass der Gegenstand 3 nicht
mehr ständig
vor der Kamera 5 gehalten werden muss, während die
Verarbeitung stattfindet.
-
LADEN EINER STANDARDMASKE (31)
- Die ursprüngliche
Standardmaske wird geladen. In Abhängigkeit von dem erwarteten
Punkt-Erscheinungsbild
kann eine alternative ursprüngliche
Maske auf Wunsch des Benutzers gewählt werden, wie dies oben beschrieben
wurde.
-
SETZEN FÜR ERSTEN DURCHLAUF (32)
- Der Computer 6 stellt fest, dass dies der erste Durchlauf
ist.
-
KORRELIERTES BILD (33) -
Zweidimensionale Korrelation des Bildes wird durchgeführt. Wenn eine
schnellere Auslesung erforderlich ist, dann wird die Korrelation
unter Benutzung einer Pixel- und/oder Zeilen-"Sprung"- Funktion
durchgeführt.
-
SETZE START - SCHWELLWERT (34)
- Jeder Punkt hat ein Maß der
Anpassung an die Maske zwischen 0 und 63 (0 bedeutet überhaupt
keine Korrelation und 63 ist eine perfekte Korrelation). Der Start-Schwellwert
wird auf 50 eingestellt.
-
FINDEN VON PUNKTEN MIT EINEM PEGEL ÜBER DEM
SCHWELLWERT (35) - Nur Punkte mit einem Pegel über diesem
Schwellwert werden in Betracht gezogen. Wenn der Schwellwert hoch
ist, dann zeigen sich nur wenige Punkte.
-
MEHR ALS 20 PUNKTE ? (36)
- Der Computer versucht, ob es mehr als 20 Punkte gibt. Wenn nicht,
dann folgt das Verfahren der Schleife 37, um den Schwellwert
um 4 zu vermindern, und es wird überprüft, dass
es nicht weniger als ein vorbestimmter minimaler Schwellwert ist.
Solange der Schwellwert nicht kleiner ist als das Minimum, wird
diese Schleife wiederholt, bis mehr als 20 Punkte gefunden sind.
Wenn der Schwellwert auf weniger als den minimalen Schwellwert vermindert
wird, dann geht das Verfahren auf die Schleife 38 über. Wenn
dies der erste Durchlauf ist, dann wird eine neue Maske aus der
besten Korrelation mit den Punkten auf dem Bild erzeugt, und der
Computer stellt fest, dass dies der zweite Durchlauf ist, und das
Verfahren kehrt auf den Schritt 33 zurück. Wenn dies nicht der erste
Durchlauf war, dann geht das Verfahren auf AUSSTIEG 39 über, wodurch
ein Signal „kein
Auslesen" oder eine Botschaft geliefert werden. Wenn es mehr als
20 Punkte gibt, dann geht das Verfahren auf den Schritt 40 über.
-
WENIGER ALS 100 PUNKTE ?
(40) - Wenn mehr als 100 Punkte vorhanden sind, dann folgt
der Prozess der Schleife 38, um eine neue Maske zu erzeugen,
wenn dies der erste Durchlauf ist und das Verfahren geht auf AUSSTIEG 39 über, wenn
dies nicht der Fall ist. Wenn es weniger als 100 Punkte gibt, dann
geht das Verfahren auf die Schritte 41 bis 46 über, um die Matrix-Orientierung
zu überprüfen.
-
WINKELERMITTLUNG (41) -
Der Winkel zwischen einer Zeile mit minimalem Abstand zwischen den
Punkten wird gefunden.
-
DREHUNG IN DIE NORMALE (42)
- Der WINKELERMITTLUNGS-Schritt
liefert den Drehwinkel, der erforderlich ist, um das Bild so drehen,
dass entweder die Spalten oder die Zeilen der Punkte parallel zu
einer definierten Achse (x) liegen. Dieses Bild wird um den erforderlichen
Winkel gedreht, um einen ersten Versuch einer „Auslese-Orientierung" zu versuchen.
-
FORMUNG EINES HISTOGRAMMS DES ZWISCHEN-PUNKTABSTANDES (43)
- Die Abstände
zwischen benachbarten Punkten werden gefunden, und es wird ein Histogramm
der Abstände
hergestellt.
-
AUSWÄHLEN HORIZONTALER (SPALTEN) UND
VERTIKALER (ZEILEN) - ABSTÄNDE
(44) - Aus dem Histogramm werden die Abstände zwischen
den Punkten in „x"-
bzw. „y"-Richtungen
ermittelt.
-
IST DIE MATRIX ORIENTIERT MIT 15 PUNKTEN
VON LINKS NACH RECHTS ? (45) - Diese Frage wird unter Benutzung
des vorher beschriebenen Verfahrens beantwortet. Hierbei werden
die Quadrate der Zwischenpunktabstände in x- und y-Richtung summiert.
Wenn nicht, dann wird das Bild um 90° (46) in die Endauslese-Orientierung
gedreht. Wenn es bereits in eine Auslese-Orientierung gedreht ist
oder wenn es bereits gedreht wurde, dann wird der Schritt (47) durchgeführt.
-
AUFFINDEN MITTE DER MATRIX AUS DURCHSCHNITTS
PUNKTPOSITION (47) - Die Positionen sämtlicher gefundenen Punkte
werden betrachtet, und der Mittelpunkt wird aus den durchschnittlichen
Positionen heraus bestimmt.
-
AUFFINDEN DICHTESTER PUNKT UND PLAZIERUNG
DER ZELLE DARUM (48) - Der Punkt, der der Mittelstellung
am Nächsten
liegt, wird gefunden und es wird die erste Zelle eines 20 × 20 gesetzten
Gitters herum plaziert.
-
AUSBREITUNG EINES VERTIKALEN EINSTELLGITTERS
ALS PUNKTE, DIE FÜR 10 ZELLEN
AUF UND NIEDER GEFUNDEN WURDEN (49) - Das gesetzte Gitter
wird dann von der Mittelzelle nach außen aufgebaut, und zwar unter
Benutzung des vertikalen (y-Richtung) Abstandes, der im Schritt 44
erhalten wurde, wobei jede der Sichtzellen-Dimensions-Einstellungen
notwendig ist, um zu gewährleisten,
dass die Punkte in die Zellen des gesetzten Gitters fallen.
-
HORIZONTALAUSBREITUNG FÜR 10 ZELLEN
LINKS UND RECHTS (50) - Es wird der Abstand in der x-Richtung
benutzt, der im Schritt 44 gefunden wurde, und dann wird das gesetzte
Gitter längs
des Gitters mit ähnlichen
Einstellungen wie erforderlich ausgebreitet. Alle Punkte, die dann
außerhalb
des 20 × 20 – Gitters
liegen, werden dann vernachlässigt.
-
BEWEGE 6 × 15 – GITTER ÜBER DAS 20 × 20 GESETZTE GITTER UND DEKODIERE
, WENN MEHR ALS 20 ZELLEN PUNKTE ENTHALTEN (51) – Ein 6 × 15 – Bezugsgitter
wird auf das gesetzte Gitter zentriert und über das gesetzte Gitter bewegt,
bis mehr als 20 der Bezugsgitterzellen Punkte enthalten. Dann wird
versucht, das so definierte Punktmuster zu dekodieren.
-
IST DER CODE GÜLTIG ? (52) – Der Computer 6 versucht
festzustellen, ob ein Code gefunden wurde und ob der Code ein gültiger ist.
Wenn nicht, dann wird der Schleife 53 gefolgt, und der
Schwellwert wird um 2 herabgesetzt, und das Verfahren kehrt auf
den Schritt 33 zurück.
Wenn ein gültiger
Code gefunden wird, geht das Verfahren auf den Schritt 54 über.
-
AUSSTIEG MIT RICHTIGEM CODE (54) – Es wurde
gefunden, dass dann, wenn der Code durch die vorhergehenden Schritte
validiert wurde, dies der richtige Code wird. Deshalb wird, wenn
ein gültiger
Code gefunden wurde, dieser vom System ausgegeben.
-
Der Matrix-Code enthält Fehlerkorrektur-Bits und
zyklische RedundanzÜberprüfungen,
die die Möglichkeit
schaffen, einen fehlenden Punkt von irgendeiner Stelle des Codes
zu korrigieren, und der Code wird über die Matrix verteilt, so
dass Teile der Matrix beschädigt
werden können,
ohne dass der Code verlorengeht.
-
Es hat sich gezeigt, dass das erfindungsgemäße Verfahren
die Möglichkeit
schafft, den Code auszulesen, nachdem zahlreiche Bearbeitungsschritte
auf den Gegenstand ausgeführt
wurden, so dass zahlreiche der Nachteile, die sich in der Vergangenheit
mit Punktmatrix-Markierungen von Gegenständen ergaben, vermieden werden.
Der Code kann sogar ausgelesen werden, wenn die auf den Gegenstand
einwirkende Bearbeitung das Erscheinungsbild des Punktmatrix-Codes
beeinträchtigt
oder selbst dann, wenn der Code teilweise verdeckt ist.