-
Die
Erfindung betrifft allgemein ein verbessertes Verfahren zum Lesen
zweidimensionaler Barcodes, die in einem Bild gedruckt sind. Insbesondere sieht
das erfindungsgemäße Verfahren
zum Lesen zweidimensionaler Barcodes beim Lesen von Dokumenten eine
verbesserte Leistungsfähigkeit
vor, die vorher durch Faksimile übertragen
worden sind, oder ein Rauschen ähnlich
demjenigen aufweisen, das durch Faksimilegeräte bewirkt wird.
-
Eine übliche Technik
zum Lesen unbearbeiteter Bits (d.h. logischer Bits, die entweder "1" oder "0" darstellen)
in einem eindimensionalen Barcode besteht darin, eine horizontale
Abtastzeile über
den Barcode zu bewegen und Übergänge von
Weiß nach Schwarz
und von Schwarz nach Weiß zu
detektieren. Diese Technik kann jedoch nicht direkt auf einen zweidimensionalen
Barcode angewendet werden, der aus einem Feld von N Reihen und M
Spalten logischer Bits besteht, da eine einzelne Abtastzeile nicht
bestimmen kann, welche der N Reihen oder welche der M Spalten gelesen
wird.
-
Es
sind verschiedene Techniken dazu verwendet worden, um die logischen
Bits aus einem zweidimensionalen Barcode zu lesen, die den Zusatz von
Ausrichtungsmarkierungen und/oder Taktbits betreffen, die dazu verwen det
werden, um die einzelnen Reihen und Spalten genau identifizieren
zu können.
-
Ein
Verfahren zum Lesen eines zweidimensionalen Barcodes, das keine
Taktbits oder Ausrichtungsmarkierungen erfordert, um Reihen oder
Spalten an logischen Bits zu identifizieren, ist in der
US 5 862 270 A mit
dem Titel "A Clock-Free
Two-Dimensional
Barcode and Method for Printing and Reading the Same" beschrieben, das
dem Anmelder der vorliegenden Erfindung übertragen ist.
-
Wie
in diesem Patent detaillierter beschrieben ist, arbeitet das darin
beschriebene Verfahren zum Lesen der logischen Bits in einem zweidimensionalen
Barcode anhand des Bitfeldes, das aus dem Abtastprozeß resultiert.
Es werden alle horizontalen "Kanten" für jede Spalte
des Pixelfeldes und alle vertikalen "Kanten" für
jede Reihe identifiziert und dann gezählt, und anschließend werden
horizontale und vertikale Histogramme (tatsächlich eindimensionale Felder)
aus der Kantenzählung
für jede
Spalte bzw. für
jede Reihe erzeugt. Jedes Feld wird dann überprüft, um die lokalen Minima zu
bestimmen, die die Zentralzeilen für jede Spalte und Reihe darstellen,
da in dem Zentrum einer Spalte oder Reihe wesentlich weniger Kanten
als am Rand vorhanden sind. Da das System von vornherein Kenntnis
besitzt, wie viele logische Bits sich in einer Spalte und in einer
Reihe befinden (und somit, wie weit die Spalten- und Reihenzentralzeilen
entfernt sein sollten), wird die Verarbeitung dieser eindimensionalen
Felder dadurch verbessert, daß nur
in bestimmten Bereichen nach lokalen Minima gesucht wird.
-
Jedoch
kann das Verfahren des '270-Patentes
beim Lesen eines zweidimensionalen Barcodes, der durch Faksimile übertragen
worden ist, infolge einer Verzerrung des Barcodes, die durch horizontalen Zeilenabfall
und horizontale Zeilenwiederholung während der Faksilmileübertragung
des Dokumentes bewirkt wird, oder beim Lesen eines zweidimensionalen
Barcodes auf Schwierigkeiten stoßen, der in entweder der horizontalen
oder vertikalen Richtung ein Rauschen in Form einer gezogenen Linie
enthält. Ein
horizontaler Zeilenabfall bewirkt, wenn er an dem Punkt auf dem
zu übertragenden
Dokument auftritt, an dem der Barcode positioniert ist, daß die Höhe einer
Reihe logischer Bits kleiner als die Höhe des Restes der Reihen in
dem zweidimensionalen Barcode ist. Selbstverständlich kann, wie Fachleute
erkennen werden, wenn der horizontale Zeilenabfall so groß ist, daß eine gesamte
Reihe an logischen Bits gelöscht
ist, keine Verarbeitung die gelöschten
logischen Bits lesen, obwohl, wie in der
US 5 862 270 A diskutiert
ist, Fehlerkorrekturtechniken verwendet werden können, um die verlorenen Daten
rückzugewinnen.
Andererseits bewirkt eine horizontale Zeilenwiederholung, wenn sie
an dem Punkt auf dem zu übertragenden
Dokument auftritt, an dem der Barcode positioniert ist, daß die Höhe einer
Reihe logischer Bits größer als
die Höhe
des Restes der Reihen und die Höhe
einer anderen Reihe an logischen Bits kleiner als die Höhe des Restes
der Reihen in dem zweidimensionalen Barcode ist. Das Rauschen in
Form einer gezogenen Linie wird durch tatsächliches Markieren des Dokumentes
beispielsweise mit einem Kugelschreiber bewirkt und kann zur Folge
haben, daß eine
einzelne Reihe oder Spalte logischer Bits als zwei separate Reihen
oder Spalten an logischen Bits mit einer Höhe bzw. Breite erscheint, die kleiner
als der Rest der Reihen oder Spalten ist.
-
Das
Verfahren nach der
US
5 862 270 A kann infolge einer Zeilenwiederholung oder
Zeilenabfallverzerrung eine Reihenzentralzeile auslassen, eine Reihenzentralzeile
hinzufügen
oder beides, da beide Verzerrungstypen bewirken, daß die Zentralzeile
für die
verzerrte Reihe einen unvorhersagbaren Abstand von Reihe zu Reihe
aufweist. In
1 ist ein Barcode
10 mit
einem Zeilenabfall von vier Zeilen neben dem resultierenden Vertikalkantenhistogramm
20 gezeigt
(Histogramme werden hier dazu verwendet, die Horizontal- (oder Spalten-)
und Vertikal- (oder Reihen-) Kantenzählfelder graphisch darzustellen,
die verarbeitet werden, um die Spalten- bzw. Reihenzentralzeilen
anzuordnen). Die Reihenzentralzeilen
30 bis
60 und
80 sind
durch das Verfahren nach der
US
5 862 270 A bestimmt worden. Während die Reihenzentralzeilen
30,
40,
50 und
80 korrekt
bestimmt worden sind, wurde die Zentralzeile
60 infolge des
zusätzlichen
lokalen Minimums unkorrekt bestimmt, das durch den Zeilenabfall
bewirkt wurde, und ist somit zu nahe an der Zentralzeile
50.
Zusätzlich
wurde das lokale Minimum
70, das die richtige Zentralzeile
für diese
Reihe darstellt, ausgelassen, da es nicht in dem Bereich lag, der
in bezug auf ein lokales Minimum überprüft wurde.
-
Es
ist daher Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren
zum Lesen eines taktfreien zweidimensionalen Barcodes zu schaffen, der
auf ein gedrucktes Medium gedruckt ist und Verzerrungen aufweist.
-
Diese
können
durch die Faksimileübertragung
des Dokumentes bewirkt werden, auf dem der Barcode gedruckt ist
oder durch Linien bewirkt werden, die auf die Seite des Dokuments
gezogen sind, auf der der Barcode gedruckt ist.
-
Die
vorliegende Erfindung ist auf ein Verfahren zum Decodieren von Information
gerichtet, die in einem zweidimensionalen Barcode gespeichert ist, der
auf ein gedrucktes Medium gedruckt ist, wobei das Verfahren eine
verbesserte Leistungsfähigkeit vorsieht,
wenn der zu lesende Barcode eine durch Faksimileübertragung bewirkte Zeilenabfall-
oder Zeilenwiederholungsverzerrung umfaßt. Es sind zwei Ausführungsformen
der vorliegen den Erfindung offenbart. Bei beiden Ausführungsformen
wird der zweidimensionale Barcode zunächst abgetastet, um ein zweidimensionales
Pixelfeld zu erzeugen, das den zweidimensionalen Barcode darstellt.
Anschließend
wird die Anzahl an Horizontalkanten in jeder Spalte aus Pixeln in
dem zweidimensionalen Pixelfeld bestimmt und in einem Horizontalkantenzählfeld gespeichert,
und ebenso wird die Anzahl an Vertikalkanten in jeder Reihe aus
Pixeln in dem zweidimensionalen Pixelfeld bestimmt und in einem
Vertikalkantenzählfeld
gespeichert. Jedes Feld wird dann verarbeitet, um die Zentralzeilen
darin zu ermitteln, wobei die Überschneidung
jeder Spalten- und Reihenzentralzeile die Position eines binären Datenbits
darstellt, das in dem zweidimensionalen Barcode gespei chert ist.
Die Zentralzeilen werden dann verwendet, um die Binärdaten aus
dem abgetasteten zweidimensionalen Barcode herauszuziehen und damit
ein Signal zu erzeugen, das der darin gespeicherten codierten Information
entspricht.
-
Bei
der ersten Ausführungsform
werden die Horizontal- und Vertikalkantenzählfelder auf die gleiche Art
und Weise verarbeitet, um die Spalten- bzw. Reihenzentralzeilen herauszuziehen.
Insbesondere wird jedes der beiden Kantenzählfelder separat abgetastet,
um die Zentralzeilen darin dadurch zu bestimmen, daß jedes
aufeinanderfolgende Spitzenpaar in den Kantenzählungen ermittelt wird, wobei jede
der Spitzen eine Größe aufweist,
die größer als ein
erster vorbestimmter Wert ist, und dann eine Zentralzeile in einem
Talbereich zwischen jedem aufeinanderfolgenden Spitzenpaar ermittelt
wird, wobei jede der Zentralzeilen eine Größe aufweist, die kleiner als
ein zweiter vorbestimmter Wert ist. Sobald beide Kantenzählfelder
verarbeitet worden sind, werden die an der Überschneidung jeder Reihenzentralzeile
und Spaltenzentralzeile ermittelten Binärdaten gelesen, um ein Signal
zu erzeugen, das die codierte Information in dem zweidimensionalen
Barcode darstellt. Vorzugsweise muß jedes der aufeinanderfolgenden
Spitzenpaare in dem Kantenzählfeld
durch einen dritten vorbestimmten Wert getrennt sein. Zusätzlich wird
der erste vorbestimmte Wert vorzugsweise um eine vorbestimmte Größe verringert,
wenn eine zweite Spitze in einem Spitzenpaar in dem Kantenzählfeld von
einer ersten Spitze um mehr als einen vierten vorbestimmten Wert
getrennt ist, und die zweite Spitze wird anschließend unter
Verwendung des verringerten ersten vorbestimmten Wertes erneut identifiziert.
-
Bei
der zweiten Ausführungsform
werden die Horizontal- und Vertikalkantenfelder zum Herausziehen
der Zentralzeilen darin unterschiedlich verarbeitet, um die Anzahl
aller Fehler, auf die gestoßen
wird, wenn das Verfahren der ersten Ausführungsform verwendet wird,
zu verringern. Da es wahrscheinlicher ist, daß eine Zeilenabfall- oder Zeilenwiederholungsverzerrung
den Reihenzentralzeilenabstand anstatt den Spaltenzentralzeilenabstand
beeinflußt,
wird das Horizontalkantenfeld zuerst unter Verwendung des Verfahrens
nach dem Stand der Technik (d.h. des in der
US 5 862 270 A offenbarten
Verfahrens) verarbeitet, bei dem die lokalen Minima, die die Spaltenzentralzeilen
in den Horizontalkantenzählungen
darstellen, ermittelt sind. Wenn die Anzahl der ermittelten Spaltenzentralzeilen
mit dem erwarteten Wert übereinstimmt,
fährt die
Verarbeitung mit dem Vertikalkantenfeld fort. Wenn jedoch die Anzahl
der ermittelten Spaltenzentralzeilen nicht gleich dem erwarteten Wert
ist, werden die Spaltenzentralzeilen abwechselnd unter Verwendung
des Verfahrens der ersten Ausführungsform
bestimmt, bei dem jedes aufeinanderfolgende Spitzenpaar in den Horizontalkantenzählungen
ermittelt wird, wobei jede der Spitzen eine Größe aufweist, die größer als
ein erster vorbestimmter Wert ist, und dann eine Spaltenzentralzeile
in einem Talbereich zwischen jedem aufeinanderfolgenden Spitzenpaar
ermittelt wird, wobei jede der Spaltenzentralzeilen eine Größe aufweist,
die kleiner als ein zweiter vorbestimmter Wert ist. Das Vertikalkantenzählfeld wird
anders verarbeitet, wobei zuerst das Verfahren der ersten Ausführungsform
verwendet wird, bei dem die Reihenzentralzeilen dadurch bestimmt
werden, daß jedes
aufeinanderfolgende Spitzenpaar in den Vertikalkantenzählungen
ermittelt wird, wobei jede der Spitzen eine Größe aufweist, die größer als
der erste vorbestimmte Wert ist, und dann eine Reihenzentralzeile
in einem Talbereich zwischen jedem aufeinanderfolgenden Spitzenpaar
ermittelt wird, wobei jede der Reihenzentralzeilen eine Größe aufweist,
die kleiner als ein zweiter vorbestimmter Wert ist. Wenn die Anzahl
an Reihenzentralzeilen, die dadurch ermittelt sind, mit dem erwarteten
Wert übereinstimmt,
wird die Verarbeitung beendet und die codierte Information kann
von dem abgetasteten Barcode gelesen werden. Wenn jedoch die Anzahl
der ermittelten Reihenzentralzeilen um Eins größer als der erwartete Wert
ist, wird die zusätzliche Zentralzeile
ermittelt und gelöscht.
Auch wird, wenn die Anzahl an ermittelten Reihenzentralzeilen um Eins
kleiner als der erwartete Wert ist, die ausgelassene Zentralzeile
ermittelt und eingesetzt. Zusätzlich werden,
wenn die Anzahl von Reihenzentralzeilen um mehr als Eins größer als
der erwartete Wert oder um mehr als Eins kleiner als der erwartete
Wert ist, die Reihenzentralzeilen abwechselnd durch Ermitteln der
lokalen Minima ermittelt, die die Reihenzentralzeilen in den Vertikalkantenzählungen
darstellen. Sobald die Spalten- und Reihenzentralzeilen korrekt
bestimmt worden sind, werden die Binärdaten, die an der Überschneidung
jeder Reihenzentralzeile mit jeder Spaltenzentralzeile ermittelt
sind, gelesen, um ein Signal zu erzeugen, das die codierte Information in
dem zweidimensionalen Barcode darstellt.
-
Die
obigen Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung
werden durch die folgende detaillierte Beschreibung der gegenwärtig bevorzugten,
veranschaulichenden Ausführungsformen der
vorliegenden Erfindung unter Bezugnahme auf die begleitenden Zeichnungen
offensichtlicher, wobei:
-
1 einen
zweidimensionalen Barcode zeigt, der eine Zeilenabfallverzerrung
aufweist, und das resultierende Histogramm von Vertikalkanten und
berechneten Zentralzeilen für
diesen Barcode,
-
2 ein
vertikales Kantenhistogramm eines zweidimensionalen Barcodes ist,
das bestimmte Elemente darstellt, die bei einer ersten Ausführungsform
der vorliegenden Erfindung verwendet sind und den Nullkreuzungsübergang,
den minimalen Spitzenspalt und die maximale Talschwelle umfassen,
-
3 ein
vertikales Kantenhistogramm eines zweidimensionalen Barcodes ist,
das zeigt, wie der adaptive Prozeß der ersten Ausführungsform
arbeitet,
-
4 ein
Flußdiagramm
ist, das den Betrieb der ersten Ausführungsform der vorliegenden
Erfindung beschreibt,
-
5 ein
Flußdiagramm
ist, das zeigt, wie Spaltenzentralzeilen bei der zweiten Ausführungsform
der vorliegenden Erfindung berechnet werden,
-
6 ein
Flußdiagramm
ist, das zeigt, wie Reihenzentralzeilen bei der zweiten Ausführungsform
der vorliegenden Erfindung berechnet werden,
-
7A einen
zweidimensionalen Barcode mit Verzerrung und das resultierende Histogramm aus
Vertikalkanten und berechneten Zentralzeilen für diesen Barcode einschließlich einer
zusätzlichen Zentralzeile
zeigt, und
-
7B einen
zweidimensionalen Barcode mit Zeilenabfallverzerrung zusammen mit
dem resultierenden Histogramm aus Vertikalkanten und berechneten
Zentralzeilen für
diesen Barcode zeigt, nachdem die zusätzliche Zentralzeile bei einem
Aspekt der zweiten Ausführungsform
der vorliegenden Erfindung gelöscht
worden ist,
-
8 einen
zweidimensionalen Barcode mit Verzerrung und das resultierende Histogramm
aus Vertikalkanten und berechneten Zentralzeilen für diesen
Barcode zeigt, wobei gezeigt ist, wie eine zusätzliche Zentralzeile bei einem
anderen Aspekt der zweiten Ausführungsform
der vorliegenden Erfindung eingesetzt wird.
-
Die
vorliegende Erfindung stellt eine Verbesserung des Verfahrens zum
Lesen eines zweidimensionalen Barcodes nach der
US 5 862 270 A dar und sieht
beim lesen von zweidimensionalen Barcodes verbesserte Ergebnisse
vor, die eine Verzerrung umfassen, die durch die Übertragung
des Dokumentes bewirkt wird, auf dem der Barcode gedruckt ist. Es sind
zwei bevorzugte Ausführungsformen
der vorliegenden Erfindung offenbart. Bei beiden Ausführungsformen
werden zunächst
eindimensionale Felder, die vertikale und horizontale Histogramme
der Reihenkantenzählungen
und Spaltenkantenzählungen
darstellen, auf die gleiche Art und Weise erzeugt, wie in der
US 5 862 270 A vollständig beschrieben
ist. Die erste Ausführungsform
analysiert die Kantenzählungen
in den horizontalen und vertikalen Feldern separat, um die Spalten-
bzw. Reihenzentralzeilen für die
logischen Bits zu ermitteln, und sieht eine stark verbesserte Leistungsfähigkeit
vor, wenn auf eine Zeilerabfall- oder Zeilenwiederholungsverzerrung
gestoßen
wird. Jedoch kann es im Vergleich zu dem Verfahren der
US 5 862 270 A eine erhöhte Anzahl von
Gesamtfehlern erzeugen. Somit verwendet die zweite Ausführungsform
selektiv das Verfahren der ersten Ausführungsform oder das Verfahren
nach der
US 5 862 270
A und sieht in bezug auf sowohl eine Zeilenabfall- oder
Zeilenwiederholungsverzerrung als auch den Gesamtfehler im Vergleich
zu der ersten Ausführungsform
der Erfindung eine verbesserte Leistungsfähigkeit vor.
-
Wie
oben detaillierter beschrieben ist, bestimmt das Verfahren nach
der
US 5 862 270 A lokale Minima
in Bereichen, in denen ein Auftreten von Zentralzeilen erwartet
wird, um die Reihen- und Spaltenzentralzeilen in den Vertikal- bzw.
Horizontalkantenhistogrammen zu finden. Bei der Verwendung des Verfahrens
nach der
US 5 862 270
A können
sich Fehler ergeben, wenn der zweidimensionale Barcode eine Zeilenabfall-
oder Zeilenwiederholungsverzerrung umfaßt, da dann die Zentralzeilen
außerhalb des
erwarteten Bereiches angeordnet sind. Um diese Fehler zu beseitigen,
wird ein anderes Verfahren zur Analyse der Vertikal- und Horizontalkantenhistogrammfelder
ausgeführt,
das nacheinander jedes Feld abtastet, um jede der Spitzen in dem
Kantenfeld zu identifizieren. Während
dieses Abtastprozesses wird das Tal zwischen jedem aufeinanderfolgenden Spitzenpaar überprüft, um die
Zentralzeilen dazwischen zu ermitteln.
-
In 2 ist
ein Histogramm 100 gezeigt, das ein Kantenfeld (entweder
horizontal oder vertikal) darstellt, das so verarbeitet wird, um
die Zentralzeilen darin zu ermitteln. Bei dem Verfahren der ersten
Ausführungsform
besitzen Spitzen (beispielsweise Spitze 115) im allgemeinen
einen Wert, der größer als
ein minimaler Anfangsspitzenwert 140 ist, und werden bevorzugt
durch Identifikation der Punkte ermittelt, an denen der Feldwert über den
minimalen Anfangsspitzenwert 140 übergeht, obwohl Fachleute leicht erkennen,
daß verschiedene
andere Verfahren dazu verwendet werden können, die Spitzen innerhalb
der Kantenfelder zu ermitteln. Insbesondere wird Spitze 115 bevorzugt
durch Ermitteln eines Aufwärtskreuzungspunktes 110 (d.h.
des lokalen Punktes, an dem das Feld von einem Wert, der kleiner
als der minimale Anfangsspitzenwert 140 ist, zu einem Wert übergeht, der
größer als
der minimale Anfangsspitzenwert 140 ist) und eines Abwärtskreuzungspunktes 120 (d.h. des
lokalen Punktes, an dem das Feld von einem Wert, der größer als
der minimale Anfangsspitzenwert 140 ist, zu einem Wert übergeht,
der kleiner als der minimale Anfangsspitzenwert 140 ist)
identifiziert, während
das durch das Histogramm 100 dargestellte Feld abgetastet
wird.
-
Um
zu verhindern, daß Brummrauschen
die falsche Identifikation einer Spitze bewirkt, erfordert das Verfahren
der ersten Ausführungsform
vorzugsweise, daß der
Spalt zwischen jedem aufeinanderfolgenden Paar an Spitzen (beispielsweise
Spitzen 125 und 135) um einen vorbestimmten minimalen
Spalt 130 (P_min) getrennt ist. Dieser Spalt wird als Abstand
zwischen dem Abwärtskreuzungspunkt
einer ersten Spitze (beispielsweise Punkt 103 von Spitze 125)
und dem Aufwärtskreuzungspunkt
einer zweiten Spitze (beispielsweise Punkt 108 von Spitze 135)
berechnet und auf einen Wert eingestellt, der sicherstellt, daß Rauschen
in dem Kantenfeld keine unkorrekte Identifikation einer Spitze in
dem Kantenfeld bewirkt.
-
Um
die lokale Zentralzeile zwischen jedem aufeinanderfolgenden Paar
an Spitzen zu identifizieren, erfordert das Verfahren der ersten
Ausführungsform
vorzugsweise, daß zumindest
ein Pixel (beispielsweise Pixel 145) in einem Talbereich
(beispielsweise Bereich 105) zwischen dem identifizierten Paar
an Spitzen (beispielsweise Spitzen 125 und 135)
vorhanden ist und einen Wert aufweist, der kleiner als ein vorbestimmter
maximaler Schwellenwert 150 ist, obwohl Fachleute leicht
erkennen, daß verschiedene
andere Verfahren dazu verwendet werden können, um die Zentralzeilen
zwischen jedem identifizierten Spitzenpaar zu ermitteln. Ein Talbereich (beispielsweise
Bereich 105) ist als ein Fenster aus vorzugsweise 3 Pixeln
definiert, das durch Ermittlung deren Zentralpixels identifiziert
wird, das als der Mittelpunkt zwischen dem Abwärtskreuzungspunkt von der ersten
Spitze (beispielsweise Punkt 103) und der Aufwärtskreuzung
von der nächsten
Spitze (beispielsweise Punkt 108) definiert ist. Das die
Zentralzeile identifizierende Pixel ist das Pixel in dem gültigen Talbereich
mit dem niedrigsten Wert (ein gültiger Talbereich
ist einer mit zumindest einem Pixel, das einen Wert aufweist, der
kleiner als der maximale Schwellenwert 150 ist). Die Verwendung
eines Fensters für
den Talbereich beseitigt einen gewissen Anteil des Zackenrauschens,
das in dem Feld vorhanden sein kann. Wenn beispielsweise ein enger
Zacken in dem Mittelpunktpixel zwischen zwei Spitzen auftritt, kann
der Wert an diesem Mittelpunktpixel die maximale Talschwelle überschreiten.
Durch zusätzliche
Untersuchung eines Pixels links und rechts von dem Mittelpunktpixel
kann immer noch ein Pixel mit einem Wert, der niedriger als der
maximale Schwellenwert 150 ist, gefunden werden und die
lokale Zentralzeile kann immer noch detektiert werden.
-
Wie
Fachleuten bekannt ist, kann die Anzahl von Pixeln in dem Fenster,
das den Talbereich definiert, erhöht werden, um die Leistungsfähigkeit
angesichts des Zackenrauschens weiter zu verbessern, jedoch bewirkt
dies eine Erhöhung
der Verarbeitungszeit.
-
Auf
die oben genannte Art und Weise können die meisten der Spitzen
in dem Histogramm 100 identifiziert werden. Jedoch ist,
da die logischen Bits eines zweidimensionalen Barcodes vor der Erzeugung
in Zufällszahlen
umgewandelt werden, kein feststehendes Muster für die logischen Bits vorhanden
und die Muster in den horizontalen und Vertikalkantenfeldern variieren
von einem Barcode zu dem nächsten.
Die Höhen
der Spitzen in den Feldern variieren auch erheblich von einem Barcode
zu einem anderen. Der Anfangsspitzenwert 140 wird durch Verwendung
eines empirischen Prozesses erhalten, der sicherstellt, daß dieser
bei einer Höhe
eingestellt ist, die niedrig genug ist, um die Detektion des Großteils der
Spitzen zu ermöglichen,
aber nicht zu niedrig ist, daß er
durch Rauschen erzeugte falsche Spitzen detektiert. Jedoch kann
in manchen Fällen
eine echte Spitze (beispielsweise Spitze 180) unter den
Anfangsspitzenwert 140 fallen.
-
Wie
in dem Histogramm 100 von 3 gezeigt
ist, ist der Abstand 175 zwischen dem Abwärtskreuzungspunkt 185 der
ersten Spitze 155 und dem Aufwärtskreuzungspunkt 195 der
zweiten Spitze 165, wenn eine Spitze, wie beispielsweise
eine Spitze 180, nicht identifiziert wird, größer, als
ein vorbestimmter maximaler Wert, der den normalen Spitzenspalt
darstellt. Um die vermißte
Spitze zu identifizieren, wenn festgestellt wird, daß der Abstand
zwischen zwei aufeinanderfolgenden Spitzen (berechnet als der Abstand
zwischen dem Abwärtskreuzungspunkt
einer ersten Spit ze und dem Aufwärtskreuzungspunkt
einer zweiten Spitze) größer als
dieser vorbestimmte maximale Wert ist, wird ein adaptiver Prozeß in dem
Verfahren der ersten Ausführungsform
verwendet, um einen adaptiven Bereich (d.h. den Bereich zwischen
dem Abwärtskreuzungspunkt
der ersten Spitze und dem Aufwärtskreuzungspunkt
der zweiten Spitze) unter Verwendung eines neuen Schwellenwertes 160 weiter
zu untersuchen, der kleiner als der Anfangsspitzenwert 140 ist,
vorzugsweise 20 % kleiner. Bei der Untersuchung eines adaptiven
Bereiches (beispielsweise Bereich 190) wird, wenn die zweite
Spitze (beispielsweise Spitze 165) wiederum zu weit von
der Anfangsspitze (beispielsweise Spitze 155) entfernt
ist, ein weiter verringerter Schwellenwert 170 verwendet,
der vorzugsweise 20 % kleiner als der Schwellenwert 160 ist. Vorzugsweise
werden höchstens
zwei Durchgänge in
dem gleichen adaptiven Bereich versucht, bevor bestimmt wird, daß ein Fehlerzustand
existiert, und daß der
zweidimensionale Barcode als unlesbar zurückgewiesen werden muß. Dieser
adaptive Prozeß ermöglicht,
daß eine
sehr niedrige Spitze (beispielsweise Spitze 180) detektiert
werden kann. Wie Fachleute erkennen, ist der Betrag, um den die
Schwelle pro Durchgang verringert wird, und die maximale Anzahl
der Durchgänge
konstruktionsbedingt und kann einen Kompromiß zwischen Genauigkeit und
Verarbeitungszeit darstellen und so gewählt sein, um entweder die Genauigkeit
oder die Verarbeitungszeit mit einer daraus resultierenden Verringerung
des jeweils anderen Faktors zu optimieren. Die Spitzenschwelle wird
auf ihren Anfangsspitzenwert 140 zurückgestellt und der normale
Detektionsprozeß fährt fort,
sobald eine vermißte
Spitze in einem identifizierten adaptiven Bereich erfolgreich detektiert
ist. Wenn nach dem Auffinden einer gültigen Spitze die Verarbeitung
fortfährt,
wird die erste Spitze dann als die gefundene gültige Spitze eingestellt, was
sicherstellt, daß zwei oder
mehr aufeinanderfolgende Spitzen, die Werte aufweisen, die kleiner
als die Anfangsspitzenschwelle 140 sind, ermittelt werden
können.
-
Die
Anzahl von Zentralzeilen in jedem Histogramm ist vorzugsweise vordefiniert,
wodurch es möglich
wird, daß ein
Validierungsschritt während
der Verarbeitung des Feldes ausgeführt werden kann. Der zweidimensionale
Barcode nach der
US
5 862 270 A besteht vorzugsweise aus einem 20 × 20 Bit- Feld, und daher
existiert beim Lesen dieses Barcodes, wenn die Gesamtanzahl von
Zentralzeilen, die in jedem Feld gefunden wird, nicht gleich 20
ist, ein Fehlerzustand und der zweidimensionale Barcode muß als unlesbar
zurückgewiesen
werden.
-
Wie
in 4 gezeigt ist, ist das Zentralzeilendetektionsverfahren
der ersten Ausführungsform vorzugsweise
in einer schriellen Einmalabtastprozedur ausgeführt, die die gesamte oben beschriebene Verarbeitung
integriert. Das einzige Mal, daß ein
Bereich in dem Feld nochmal abgetastet wird, ist, wenn die adaptive
Schwellenbestimmung dazu verwendet wird, niedrige Spitzen zu detektieren.
Genauer beginnt die Verarbeitung bei Schritt 200, bei dem
der gegenwärtige
Positionsindex auf den ersten Punkt in dem zu untersuchenden Feld
eingestellt wird und der erste Kreuzungspunkt (d.h. crossp_1) auch
auf den ersten Punkt in dem Feld eingestellt wird. Bei Schritt 205 wird
der gegenwärtige
Positionsindex erhöht
und bei Schritt 210 wird der gegenwärtige Positionsindex überprüft, um zu
sehen, ob das Ende des Feldes erreicht worden ist. Wenn es erreicht
ist, endet die Verarbeitung bei Schritt 215. Wenn die Verarbeitung nicht
vollständig
ist, wird der Wert des Feldes an der gegenwärtigen Position bei Schritt 220 mit
dem gegenwärtigen
T_peak-Wert verglichen (der anfänglich auf
den minimalen Anfangsspitzenwert 140 eingestellt ist, wie
in den 2 und 3 ge zeigt ist). Wenn der Wert
des Feldes an diesem Punkt kleiner oder gleich dem gegenwärtigen T_peak-Wert
ist, kehrt die Verarbeitung zu Schritt 205 zurück, bei
dem der gegenwärtige
Positionsindex erneut erhöht
wird. Wenn der Wert des Feldes an diesem Punkt größer als
der gegenwärtige
T_peak-Wert ist, fährt
die Verarbeitung mit Schritt 225 fort, bei dem der Abstand zwischen
dem gegenwärtigen
Positionsindex und dem ersten Kreuzungspunkt mit dem P_normal-Wert verglichen
wird, der den vorbe stimmten Spalt 130 darstellt, wie oben
unter Bezugnahme auf 2 beschrieben ist.
-
Wenn
der Abstand zwischen dem gegenwärtigen
Positionsindex und dem ersten Kreuzungspunkt größer als der P_normal-Wert ist,
wird bei Schritt 230 die adaptive Schwellenbestimmung begonnen,
bei dem die gegenwärtige
Position auf crossp_1 zurückgestellt
wird und der T_peak-Wert um einen voreingestellten Prozentsatz verringert wird,
vorzugsweise um 20 %, wie oben diskutiert ist. Danach kehrt die
Verarbeitung zu Schritt 205 zur Untersuchung des vorher
abgetasteten Abschnittes zurück,
aber unter Verwendung des kleineren T_peak-Wertes. Schritt 230 führt auch
die Anzahl der Iterationen für
die adaptive Schwellenbestimmung aus, die auftreten, d.h. die Anzahl
der Verringerungen von T_peak, und wenn sich bei Schritt 280 herausstellt,
daß dies
eine vorbestimmte Grenze, vorzugsweise zwei, wie oben unter Bezugnahme
auf 3 diskutiert ist, überschreitet, wird davon ausgegangen,
daß ein
Fehler aufgetreten ist, und die Verarbeitung stoppt bei Schritt 270.
-
Wenn
der Abstand zwischen dem gegenwärtigen
Positionsindex und dem ersten Kreuzungspunkt kleiner oder gleich
dem P_normal-Wert ist, fährt
die Verarbeitung mit Schritt 240 fort, bei dem der Abstand
zwischen dem gegenwärtigen
Positionsindex und dem ersten Kreuzungspunkt mit dem minimalen vorbestimmten
Spalt (d.h. P_min) verglichen wird, wie oben unter Bezugnahme auf 2 diskutiert
ist.
-
Wenn
bei Schritt 240 der Abstand zwischen dem gegenwärtigen Positionsindex
und dem ersten Kreuzungspunkt kleiner oder gleich dem P_min-Wert ist, ist die
zweite Spitze nicht gefunden worden und der erste Kreuzungspunkt
crossp_1 wird bei Schritt 235 auf die gegenwärtige Indexposition
zurückgestellt
und die Verarbeitung kehrt zu Schritt 205 zurück, um mit
der Suche nach der zweiten Spitze fortzufahren.
-
Wenn
bei Schritt 240 der Abstand zwischen dem gegenwärtigen Positionsindex
und dem ersten Kreuzungspunkt größer als
der P_min-Wert ist, wird vermutet, daß die zweite Spitze gefunden
worden ist. Wie unter Bezugnahme auf 2 beschrieben
ist, ist der zweite Kreuzungspunkt ein Aufwärtskreuzungspunkt, wie beispielsweise
Punkt 108 in 2. Der Mittelpunkt zwischen
dem ersten Kreuzungspunkt crossp_1 und der gegenwärtigen Indexposition
wird bei Schritt 245 identifiziert, wobei der gegenwärtige Indexpunkt
hier den vermuteten zweiten Kreuzungspunkt darstellt. Bei Schritt 250 wird
ein Talbereich, der den Feldwert an dem Mittelpunkt und die Feldwerte
an den Punkten, die einen Index aufweisen, der um Eins größer und
um Eins kleiner als der Mittelpunkt ist, identifiziert, und der
Index des untersten dieser drei Werte wird als mögliche Zentralzeile gewählt. Der
Wert an der möglichen
Zentralzeile wird mit dem vorbestimmten maximalen Schwellenwert V_max
(unter Bezugnahme auf 2 oben beschrieben) bei Schritt 255 verglichen.
-
Wenn
bei Schritt 255 der Wert an der möglichen Zentralzeile kleiner
als V_max ist, ist eine gültige
Zentralzeile gefunden worden und deren Index wird bei Schritt 260 gespeichert.
Bei Schritt 265 wird die Gesamtzahl von gefundenen Zentralzeilen
mit einer vorbestimmten Anzahl, vorzugsweise 20, verglichen. Wenn
die Anzahl an Zentralzeilen diese vorbestimmte Anzahl überschritten
hat, ist ein Fehler aufgetreten, wobei bei Schritt 270 die
Verarbeitung stoppt und ein Fehlersignal an den Hauptrechner geliefert
wird. Wenn die Anzahl an Zentralzeilen kleiner oder gleich der vorbestimmten
Anzahl von Zentralzeilen ist, fährt
die Verarbeitung mit Schritt 275 fort, bei dem T_peak auf
den Anfangswert zurückgestellt wird
und fährt
anschließend
mit Schritt 235 fort, bei dem die gegenwärtige Indexposition
auf crossp_1 eingestellt wird und fährt dann mit Schritt 205 fort,
bei dem die Suche nach der nächsten
Zentralzeile beginnt, wie oben diskutiert ist.
-
Wenn
bei Schritt 255 der Wert an der möglichen Zentralzeile größer oder
gleich V_max ist, dann ist eine gültige Zentralzeile nicht gefunden
worden, die gegenwärtige
Indexposition wird bei Schritt 235 auf crossp_1 eingestellt
und die Verarbeitung fährt mit
Schritt 205 fort, bei dem die Suche nach der nächsten gültigen Zentralzeile
fortfährt,
wie oben diskutiert ist. Dieser Prozeß fährt fort, bis das Ende des Feldes
erreicht ist oder sich ein Fehlerzustand ergibt.
-
Es
hat sich herausgestellt, daß das
Verfahren der ersten Ausführungsform
gegenüber
dem Verfahren nach der
US
5 862 270 A eine verbesserte Leistungsfähigkeit vorsieht, wenn es zum
Lesen von Barcodes verwendet wird, die eine Zeilenabfallverzerrung
aufweisen, die vier aufeinanderfolgende Zeilen beeinflußt. Es hat
sich jedoch zusätzlich
herausgestellt, daß,
wenn Bar codes mit einer Zeilenwiederholungsverzerrung, die vier
aufeinanderfolgende Zeilen beeinflußt, oder einer Zeilenabfall-
oder Zeilenwiederholungsverzerrung, die zwei aufeinanderfolgende
Zeilen beeinflußt,
unter Verwendung des Verfahrens der ersten Ausführungsform gelesen wurden,
die Gesamtanzahl der zurückgewiesenen
Barcodes im Vergleich zu dem Verfahren nach der
US 5 862 270 A erhöht war.
-
Aufgrund
der erhöhten
Anzahl von Fehlern, auf die bei Verwendung des Verfahrens der ersten Ausführungsform
gestoßen
wurde, wurde ein zweites Verfahren entwickelt, das abwechselnd das
Verfahren nach der
US
5 862 270 A oder das Verfahren der ersten Ausführungsform
abhängig
von den jeweiligen Umständen
verwendet. Auf diese Art und Weise wird ein Verfahren erreicht,
das die verbesserte Leistungsfähigkeit
gegenüber
dem Verfahren der ersten Ausführungsform
beim Lesen von Barcodes mit Zeilenabfall- und/oder Zeilenwiederholungsverzerrung vorsieht
und auch die niedrige Fehlerrate des Verfahrens nach der
US 5 862 270 A vorsieht.
Insbesondere hat dieses Verfahren die Tatsache zum Vorteil, daß eine Zeilenabfall- und/oder Zeilenwiederholungsverzerrung
gewöhnlich
bei einer Bewegung in einer vertikalen Richtung auftritt und verschiedene
Stufen an die Horizontal- und Vertikalkantenfelder anlegt. Zusätzlich sieht
das Verfahren der zweiten Ausführungsform
vor, daß Zentralzeilen,
vorzugsweise eine, eingesetzt oder gelöscht werden können, wenn
sich herausgestellt hat, daß die
Anzahl der Zentralzeilen kleiner als erwartet bzw. größer als
erwartet ist.
-
Wie
in dem Flußdiagramm
von
5 gezeigt ist, wendet das Verfahren der zweiten
Ausführungsform,
da es nicht wahrscheinlich ist, daß eine Zeilenabfall- oder Zeilenwiederholungsverzerrung
die Spalten des zweidimensio nalen Barcodes beeinflußt, zunächst das
Verfahren nach der
US
5 862 270 A bei Schritt
300 auf das Horizontalkantenfeld
an. Wenn Schritt
305 bestimmt, daß die korrekte Anzahl an Spaltenzentralzeilen
in dem Horizontalkantenfeld bei Schritt
300 detektiert
wurde, bewegt sich die Verarbeitung zu der Detektion der Reihenzentralzeilen
in dem Vertikalkantenfeld (Schritt
320), wie in Verbindung
mit
6 unten beschrieben ist. Wenn die korrekte Anzahl
an Spaltenzentralzeilen in dem Horizontalkantenfeld bei Schritt
300 nicht
detektiert wurde, wird das Horizontalkantenfeld unter Verwendung
des Verfahrens der ersten Ausführungsform
bei Schritt
310 nochmals verarbeitet. Wenn sich herausgestellt hat,
daß das
Verfahren der ersten Ausführungsform bei
Schritt
315 keine Fehler erzeugt hat (mitgeteilt durch
Ermittlung der richtigen Anzahl an Spaltenzentralzeilen, die bei
der bevorzugten Ausführungsform 20
ist), fährt
die Verarbeitung mit der Detektion der Reihenzentralzeilen in dem
Vertikalkantenfeld (Schritt
320) fort. Wenn das Verfahren
der ersten Ausführungsform
eine unkorrekte Anzahl an Zentralzeilen erzeugt, wird ein Fehler
vermerkt und die Verarbeitung stoppt, wie bei Schritt
325 gezeigt
ist.
-
Wie
in dem Flußdiagramm
von
6 gezeigt ist, wird das Verfahren der ersten Ausführungsform, da
die Zeilenabfall-/Zeilenwiederholungsverzerrung am wahrscheinlichsten
die Reihen des zweidimensionalen Barcodes beeinflußt, zunächst bei
Schritt
350 auf das Vertikalkantenfeld angewendet. Wenn
sich bei Schritt
360 herausstellt, daß das Verfahren der ersten
Ausführungsform
die richtige Anzahl von Reihenzentralzeilen erzeugt hat, die vorzugsweise
20 beträgt,
ist der Leseprozeß vollständig, wie
bei Schritt
400 gezeigt ist. Wenn jedoch die Anzahl an
Reihenzentralzeilen unkorrekt ist, wird zunächst bestimmt, ob eine zusätzliche
Zentralzeile (bei Schritt
365) oder eine Zentralzeile zu
wenig (bei Schritt
380) vor handen ist. Wenn eine zusätzliche
Zentralzeile existiert, fährt
die Verarbeitung mit dem Zentralzeilenlöschschritt
370 fort,
wie unten unter Bezugnahme auf die
7A und
7B detailliert
diskutiert ist. Wenn eine Zentralzeile zu wenig vorhanden ist, fährt die Verarbeitung
mit dem Zentralzeileneinsetzschritt
375 fort, der unten
unter Bezugnahme auf
8 detailliert beschrieben ist.
Wenn mehr als eine zusätzliche Zeile
oder mehr als eine Zeile weniger vorhanden ist, fährt die
Verarbeitung mit Schritt
385 fort, bei dem das Verfahren
nach der
US 5 862 270
A dazu verwendet wird, das Vertikalkantenfeld zu verarbeiten. Bei
Beendigung entweder des Zentralzeilenlöschschrittes
370,
des Zentralzeileneinsetzschrittes
375 oder des Schrittes
385 wird
bestimmt, ob bei der Ausführung
des gewählten
Verfahrens bei Schritt
390 irgendwelche Fehler aufgetreten
sind. Wenn keine Fehler aufgetreten sind, ist der Leseprozeß dollständig, wie
bei Schritt
400 gezeigt ist. Wenn Fehler entdeckt wurden,
wird ein Fehler vermerkt und die Verarbeitung stoppt, wie bei Schritt
395 gezeigt
ist.
-
Obwohl
das Verfahren der zweiten Ausführungsform
unter Bezugnahme auf eine Orientierung des zweidimensionalen Barcodes
diskutiert worden ist, ist es für
Fachleute offensichtlich, daß das
Verfahren dazu verwendet werden kann, zweidimensionale Barcodes
zu lesen, die eine Zeilenabfall- oder
Zeilenwiederholungsverzerrung in der vertikalen Richtung aufweisen,
wie sie beispielsweise in einem Dokument auftritt, das in einem "Landschafts"-Modus anstelle eines "Portrait"-Modus übertragen
ist, und zwar durch einfaches Umkehren der Verarbeitung, die in den 5 und 6 beschrieben
ist, so daß die
Verarbeitung von 5 auf das Vertikalkantenfeld
und die Verarbeitung von 6 auf das Horizontalkantenfeld
angewendet wird.
-
Da
das Verfahren der ersten Ausführungsform
keine Fehler verbreitet (dies bedeutet, daß nur die Zentralzeilen für Abschnitte
des Barcodes, die eine Verzerrung aufweisen, durch die Verzerrung
beeinflußt
sind, und die Zentralzeilen für
Abschnitte des Barcodes, die keine Verzerrung aufweisen, richtig
ermittelt werden) ist es, wenn sich die Anzahl von Zentralzeilen,
die unter Verwendung dieses Verfahrens ermittelt sind, nur um Eins
von dem erwarteten Wert (d.h. 19 oder 21 bei der bevorzugten Ausführungsform)
unterscheidet, möglich,
das Vertikalkantenfeld weiter zu verarbeiten und entweder eine zusätzliche Reihenzentralzeile
hinzuzufügen
oder zu löschen.
-
Wie
in dem Matrixcode
500 und dem zugehörigen Histogramm
505 von
7A gezeigt
ist, ist, wenn eine zusätzliche
Zentralzeile unter den Zentralzeilen
510 detektiert wird,
am wahrscheinlichsten eine "falsche" Zentralzeile vorhanden.
Ohne Verzerrung sind die ermittelten Zentralzeilen
510 gleichmäßig über das
Kantenhistogramm
505 getrennt. Aufgrund dessen ist es somit
sehr wahrscheinlich, daß die "falsche" Zentralzeile, beispielsweise
Zentralzeile
525, zwischen zwei echten Zentralzeilen, beispielsweise
Zentralzeilen
530 und
535, angeordnet ist. Folglich
ist ein engerer Abstand zwischen der "falschen" Zentralzeile
525 und den beiden
umgebenden Zentralzeilen
530 und
535 vorhanden.
Die "falsche" Zentralzeile
525 wird
dadurch identifiziert, daß zuerst
der engste Zentralzeilenabstand
520 ermittelt wird und
dann ein Löschbereich
515 hergestellt
wird, der durch die beiden Zentralzeilen, beispielsweise Zentralzeilen
530,
540,
benachbart der Zentralzeilen mit dem engsten Abstand, d.h. Zentralzeilen
525 und
535,
gebildet wird. Danach wird der Löschbereich
515 durch
Identifikation der lokalen Minima darin (auf die gleiche Weise,
wie bei dem Verfahren nach der
US 5 862 270 A ) erneut verarbeitet, um eine
einzelne Zentralzeile darin zu ermitteln.
7B zeigt
Zentralzeilen
550, die sich nach einer solchen Verarbeitung in
dem Löschbereich
515 ergeben
und eine neu ermittelte Zentralzeile
555 zwischen bereits
existierenden Zentralzeilen
530 und
540 umfassen.
Obwohl das bevorzugte Verfahren dieser Ausführungsform das Vertikalkantenfeld
unter Verwendung des Verfahrens nach der
US 5 862 270 A vollständig neu
verarbeitet hat, wenn mehr als eine zusätzliche Zentralzeile gefunden
wird (siehe Schritt
385 von
6), erkennen
Fachleute, daß die
obige Methodologie leicht ausgeweitet werden kann, um mehr als eine
zusätzliche
Zentralzeile zum Löschen
durch Wiederholung desselben Prozesses ermittelt werden kann, sobald die
erste Zentralzeile gelöscht
ist.
-
In
dem Matrixcode
600 und dem zugehörigen Histogramm
605 in
8 tritt
eine ähnliche
Situation bei dem oben diskutierten Zentralzeilenlöschschritt
auf, wenn die Anzahl an detektierten Zentralzeilen
610 um
Eins niedriger als erwartet ist. Die durchgezogenen Zentralzeilen
625,
630 und
635 stellen
die Zentralzeilen dar, die tatsächlich
in dem relevanten Bereich des Matrixcodes
600 detektiert sind.
Der Bereich (beispielsweise Bereich
615), in den eine fehlende
Zentralzeile fallen sollte, wird als zwischen zwei Zentralzeilen
(beispielsweise Zentralzeilen
630 und
635) befindlich
identifiziert, die die größte Trennung
dazwischen aufweisen. Sobald der Bereich
615 identifiziert
ist, wird die Zentralzeile durch Identifikation der lokalen Minima
dann auf die gleiche Art und Weise ermittelt, wie bei dem Verfahren
nach der
US 5 862 270
A verwendet ist. Die ermittelte Zentralzeile
640 ist
in
8 in gestrichelter Form gezeigt. Obwohl das bevorzugte
Verfahren dieser Ausführungsform
das Vertikalkantenfeld unter Verwendung des Verfahrens nach der
US 5 862 270 A erneut
verarbeitet, wenn mehr als eine Zentralzeile fehlt (siehe Schritt
385 von
6),
erkennen Fachleute, daß die
obige Methodologie leicht ausgeweitet werden kann, um mehr als eine
Zentralzeile durch Wiederholung desselben Prozesses zu ermitteln,
sobald die erste Zentralzeile eingesetzt ist.