Die Erfindung betrifft im allgemeinen ein verbessertes Verfahren zum Auf
finden und Lesen innerhalb einer Abbildung gedruckter, zweidimensiona
ler Strichcodes.
Im Gegensatz zu den häufigen Voraussagen, daß wir eines Tages in einer
"papierlosen Gesellschaft" leben werden, spielen Papier und andere be
druckte Medien eine zunehmend wichtige Rolle als ein billiges, effektives
und zweckmäßiges Kommunikationsmittel. Eine grundlegende Einschrän
kung bei Papier ist jedoch, daß es vom Standpunkt des Computers aus
gegenwärtig ein Format allein zur Ausgabe ist. Während Papier das bevor
zugte Medium zur Anzeige von Information für den Gebrauch durch den
Menschen sein kann, ist es schwierig, wenn nicht unmöglich, daß ein
Computer zuverlässig Daten wiederfinden kann, sobald sie gedruckt wor
den sind. Die optische Zeichenerkennung (optical character recognition
oder OCR) versucht, dieses Problem auf einem relativ einfachen Gebiet,
wie Text, der unter Verwendung von Standardfonts ausgedrückt ist, zu
lösen, hat dies aber bisher nur mit begrenztem Erfolg erreicht. Während
Genauigkeitsraten von neunundneunzig (99%) Prozent vielleicht erzielbar
sind und eindrucksvoll erscheinen mögen, wird eine Seite mit 3000 Zei
chen noch im Durchschritt dreißig (30) OCR-Fehler aufweisen und somit
eine teure und zeitraubende Nachbearbeitung von Hand benötigen.
Ein anderer Ansatz verwendet computerlesbare Strichcodes, die direkt auf
Papier (oder einem anderen bedruckten Medium, wie Mikrofilm) enthalten
sein können. Sobald sie codiert worden sind, können derartige Strichcodes
von dem Computer verwendet werden, um Information wiederzufinden,
die für den menschlichen Leser offenbar, aber für einen Computer schwie
rig zu erkennen ist (z. B. gedruckter Text), Information, die zur Schaffung
der Seite einbegriffen, jedoch für den menschlichen Leser im wesentlichen
unsichtbar ist (z. B. Tabellenkalkulationsformulare), oder irgendwelche
andere gewünschte Information, ob von dem tatsächlichen Zeichentext auf
dem Papier abhängig oder nicht.
Computerlesbare Strichcodes, in denen digitale Daten direkt auf Papier
aufgezeichnet sind, sind bekannt und sind dafür verwendet worden, eine
Dokument- oder Produktkennzeichnung bereitzustellen, wobei ein fester
Satz von Werten unter Verwendung einfacher numerischer Codierungs-
und Lesetechniken gegeben ist. Dokument- oder Produktkennzeichnungs
systeme, die in der Vergangenheit angewandt worden sind, umfassen
Strichcodemarkierer und -lesegeräte, die in einem weiten Bereich von
Schauplätzen Verwendung gefunden haben. Mit Bezug auf Papierdoku
mente sind spezielle Markierungen oder Muster in dem Papier dazu ver
wendet worden, Information über ein in Beziehung stehendes Ausrü
stungsstück bereitzustellen, beispielsweise das Auftragssteuerungsblatt
zur Bildverarbeitung, wie es von Hikawa in dem US-Patent Nr. 5 051 779
gelehrt wird. Ähnlich sind Kennzeichnungsmarkierungen, die codierte In
formation umfassen, auf die Fläche vorgedruckter Formulare gedruckt
worden, wie es in dem US-Patent Nr. 5 060 980 von Johnson et al be
schrieben worden ist. Das System von Johnson et al schreibt vor, daß ein
Benutzer handgeschriebene Information in die Felder einer Papierkopie
des Formulars eingibt und dann das Formular abtastet, liest oder scannt,
um Einträge in die Felder in dem Duplikatformular zu schaffen, das elek
tronisch in dem Computer gespeichert ist. Ein weiteres System ist in dem
US-Patent Nr. 5 091 966 von Bloomberg et al beschrieben, daß das Deco
dieren von skulpturförmigen Codes lehrt, die digital codierte Daten auf
Papier sind. Die Kennzeichnungscodes können von einem Computer gele
sen werden und vereinfachen dadurch die Computerhandhabung des Do
kuments, wie die Kennzeichnung, das Wiederfinden und das Übertragen
eines solchen Dokuments.
Neben den oben beschriebenen, verschieden geformten Strichcodes sind
zweidimensionale Strichcodes, die "Datenstreifen" genannt werden, mit
mehreren Reihen aus "Datenlinien", die auf bedruckte Medien digital co
dierte Information darstellen, in der Technik ebenfalls bekannt. Jede Da
tenlinienreihe besteht aus einer Reihe aus schwarzen und weißen Pixeln
oder Bildpunkten, die jeweils eine binäre "0" bzw. "1" darstellen. Die Ori
entierung oder Ordnung der Bits in jeder Reihe bestimmt die darin gespei
cherten digitalen Daten. Die in der Gesamtheit der Reihen gespeicherten
Daten definieren die Daten, die in dem zweidimensionalen Strichcode ent
halten sind. Um den Strichcode zu lesen, führt der Benutzer normalerwei
se ein Handlesegerät (Handscanner), das gleichzeitig die Information in
jeder Datenlinienreihe liest, vertikal entlang der Länge des Strichcodes,
um alle Datenlinienreihen zu lesen.
Ein Beispiel eines Systems nach dem Stand der Technik, das einen zwei
dimensionalen Datenstreifenstrichcode mit Reihen aus Datenlinien mit
Papiermedien verwendet, wird in den US-Patenten Nr. 4 692 603,
4 754 127 und 4 782 221 von Brass et al gefunden. Bei diesem System
bestehen zweidimensionale Strichcodes aus Datenlinienreihen, die dazu
verwendet werden, Computerprogramme und Daten auf Papier zu codie
ren, und unter Verwendung eines Handlesegerätes eingelesen oder ge
scannt werden. Zusätzlich zum Codieren der Computerprogramme und
Daten enthalten diese Datenlinien auch Folge- und Synchronisationsbits,
die nachstehend als "Taktbits" bezeichnet werden. Die Anforderung zur
Verwendung zahlreicher Taktbits direkt innerhalb jeder Datenlinienreihe
reduziert die Menge von digitalen Daten wesentlich, die innerhalb jeder
Reihe gespeichert werden kann. Wenn Datenlinienreihen mit Taktbits be
schädigt sind, was üblich ist, wenn derartige Strichcodes fotokopiert oder
durch Faksimilesysteme übertragen werden, würden ferner derartige
Taktbits verlorengehen, was es schwierig, wenn nicht unmöglich, macht,
die in dem Strichcode codierte Information zu decodieren. Andere Bei
spiele von zweidimensionalen Strichcodes umfassen: (1) US-Patent Nr.
5 083 214 von Knowles, das ein zweidimensionales Strichcodesystem be
schreibt, das innerhalb der codierten Daten selbst eingebettete Taktbits
erfordert, und (2) US-Patent Nr. 4 924 078 von Sant'Anselmo et al. das ein
zweidimensionales Strichcodesystem beschreibt, bei dem ein Orientie
rungs- und/oder Zeitgebungszellenrand innerhalb des Körpers des Strich
codes selbst enthalten ist.
In der anhängigen Patentanmeldung "A Clock-Free Two-Dimensional Bar
code and Method for Printing and Reading the Same", (Serial Nr.
08/569 280, am 8. Dezember 1995 eingereicht) ("die '280-Anmeldung"),
deren Offenbarungsgehalt hierin durch Bezugnahme explizit enthalten ist,
ist ein taktloser, zweidimensionaler Strichcode mit einem Rand auf min
destens einer der vier Seiten des Strichcodes beschrieben, wobei der Rand
außerhalb der Umgrenzungen des Strichcodes selbst angeordnet ist. Die
zweidimensionalen Strichcodes werden manchmal "PanaMarks"® ge
nannt. Wie es in Fig. 1A hierin abgebildet ist, ist ein zweidimensionaler
Strichcode 10 an der unteren rechten Ecke einer bedruckten Seite 11 ge
druckt, obwohl diese Position völlig beliebig ist. Bei der in Fig. 1A abgebil
deten Ausführungsform ist der restliche Teil der bedruckten Seite 11 von
gedrucktem Text 12 eingenommen. Jedoch wird ein Fachmann feststellen,
daß irgendeine Art eines computererzeugten, bedruckten Materials, bei
spielsweise ein Tabellenkalkulationsblatt oder Graphiken, den gedruckten
Text 12 ersetzen kann. Der zweidimensionale Strichcode 10, der hierin in
Fig. 1B abgebildet ist, umfaßt einen Rand 13, der an all seinen vier Seiten
vorhanden ist. Wie es in der '280-Anmeldung vollständig beschrieben ist,
ist der Rand 13, obwohl er nur auf einer der vier Seiten des zweidimensio
nalen Strichcodes 10 notwendig ist, aus ästhetischen Gründen typischer
weise auf allen vier Seiten enthalten.
In der anhängigen Patentanmeldung "A Borderless Clock-Free Two-
Dimensional Barcode and Method for Printing and Reading the Same",
(Serial Nr. 09/088 189, am 1. Juni 1998 eingereicht) ("die '189-
Anmeldung"), deren Offenbarungsgehalt hierin durch Bezugnahme explizit
enthalten ist, ist ein taktloser, zweidimensionaler Strichcode ohne eine
Rand (hierin in Fig. 2 gezeigt) zusammen mit Verfahren zum Drucken und
Lesen desselben beschrieben. In der '189-Anmeldung sind zwei alternative
Symbologien für den Strichcode dargestellt, und zwar eine erste Symbolo
gie, die erfordert, daß die vier Eckenbits 21 schwarz sind (wenn auf einen
weißen Hintergrund gedruckt wird), und eine zweite Symbologie, in der
keine schwarzen Eckenbits 21 erforderlich sind. Als solche sind zwei al
ternative Verfahren zum Lesen des Strichcodes von Fig. 2 in der '189-
Anmeldung beschrieben, und zwar ein erstes Verfahren, das den Strich
code verarbeitet, der keine Eckenbits erfordert, wie es durch das Flußdia
gramm in Fig. 8A darin und der damit in Beziehung stehenden Beschrei
bung beschrieben ist, und ein zweites Verfahren, das den Strichcode ver
arbeitet, der Eckenbits benötigt, wie es durch das Flußdiagramm in Fig.
8B darin und die damit in Beziehung stehende Beschreibung beschrieben
ist. Obwohl die beiden Verfahren zum Lesen des Strichcodes, die in der
'189-Anmeldung beschrieben sind, befriedigende Ergebnisse liefern, wurde
es herausgefunden, daß, wenn der Strichcode auf eine Seite mit einem
komplexen Hintergrund gedruckt war, die durch den Auffindungsschritt
70 der Fig. 8A und 8B der '189-Anmeldung, die darin in Verbindung mit
den Fig. 9A und 9B beschrieben ist, gelieferten Ergebnisse weniger als op
timal waren, insbesondere bei der Anwesenheit von Einzellinienrauschzu
ständen (d. h., eine beliebige Linie über den Strichcode hinweg mit einer
Breite, die kleiner oder gleich der Breite eines Bitblocks innerhalb des
Strichcodes ist, was oft bei gefaxten Dokumenten und durch schlecht ge
wartete Drucker gedruckten Dokumenten auftreten kann). Zusätzlich
wurde herausgefunden, daß Änderungen bei dem Schritt der Abschätzung
des Schrägstellungswinkels über Hough-Transformation 71 der Fig. 8A und
8B der ' 189-Anmeldung vorgenommen werden könnten, um die Verarbei
tungsgeschwindigkeit zu erhöhen. Wegen der zunehmenden Verarbei
tungsgeschwindigkeit des Schrittes der Abschätzung des Schrägstellung
winkels über Hough-Transformation der vorliegenden Erfindung ist auch
der Schritt der Abschätzung des Schrägstellungswinkels zur Vorlagenan
passung 71 der Fig. 8B der '189-Anmeldung nicht länger erforderlich, der
es erfordert, daß der Strichcode Eckenbits umfaßt, wodurch die Zahl von
Bits verkleinert wird, die innerhalb des Strichcodes gespeichert werden
kann, und eine weniger als optimale Verarbeitungsgeschwindigkeit auf
weist.
Es ist deshalb ein Ziel der vorliegenden Erfindung, ein Verfahren zum De
codieren von Information zu schaffen, die digital in der Form eines randlo
sen, taktfreien, zweidimensionalen Strichcodes codiert ist, der auf ein be
drucktes Medium gedruckt ist, das bei Anwesenheit komplexer Hinter
gründe arbeiten kann.
Es ist ein zusätzliches Ziel dieser Erfindung, ein Verfahren zum Decodie
ren von Information zu schaffen, die digital in der Form eines randlosen,
taktfreien, zweidimensionalen Strichcodes codiert ist, der auf ein be
drucktes Medium gedruckt ist, das eine verbesserte Verarbeitungsge
schwindigkeit aufweist.
Es ist außerdem ein weiteres Ziel dieser Erfindung, ein Verfahren zum De
codieren von Information zu schaffen, die digital in der Form eines randlo
sen, taktfreien, zweidimensionalen Strichcodes codiert ist, der auf ein be
drucktes Medium gedruckt ist und keine Eckenbits umfaßt.
Es ist ein anderes Ziel dieser Erfindung, ein Verfahren zum Decodieren
von Information zu schaffen, die digital in der Form eines zweidimensio
nalen Strichcodes codiert ist, der auf ein bedrucktes Medium gedruckt ist,
und der einen Rand umfassen kann oder auch nicht umfassen kann.
Verschiedene andere Ziele, Vorteile und Merkmale der vorliegenden Erfin
dung werden leicht aus der folgenden detaillierten Beschreibung ersicht
lich werden, und die neuartigen Merkmale werden in den beigefügten An
sprüchen besonders herausgestellt.
Diese und andere Ziele werden durch ein Verfahren zum Decodieren sto
chastisierter Information erreicht, die auf ein von einem Menschen lesba
res Medium in der Form eines Pixel- oder Bitmusters (Bitmaps) aus Rei
hen und Spalten aus Datenpixeln gedruckt ist, die codierte Datenbits dar
stellen. Jedes Datenpixel weist entweder eine erste oder eine zweite Farbe
auf. Das Bitmuster weist eine vorherbestimmte Größe auf und ist von ei
nem Außenbereich aus Pixeln mit einer vorherbestimmten, im wesentli
chen gleichmäßigen Farbe umgeben. Ein Rand aus einer kontrastbilden
den Farbe kann innerhalb des Außenbereichs vorhanden sein. Das vom
Menschen lesbare Medium wird zuerst abgetastet oder gescannt, um das
Bitmuster zu digitalisieren, und dann zu einer Grauskalendarstellung auf
einer Pixelbasis formatiert. Die Grauskalendarstellung auf Pixelbasis wird
in eine Binärdarstellung auf Pixelbasis umgewandelt, indem ein Schwel
lenwertintensitätspegel auf der Grundlage der Grauskalendarstellung fest
gelegt wird, und Pixel, die größer oder gleich dem Schwellenwert sind, auf
einen ersten Pegel, z. B. "0", umgewandelt werden, und Pixel, die kleiner
als der Schwellenwert sind, auf einen zweiten Pegel, z. B. "1", umgewandelt
werden. Die Reihen- und Spaltenumgrenzungen des digitalisierten Bitmu
sters werden aufgefunden oder lokalisiert, indem ein Fenster schrittweise
in einem vorherbestimmten Muster über die Binärdarstellung auf Pixelba
sis bewegt wird. Bei jedem Schritt wird der Teil der Darstellung, der von
dem Fenster umgeben ist, geprüft, um zu bestimmen, ob der Teil zu einem
Charakteristikum oder mehreren Charakteristiken des Bitmusters paßt,
und die Umgrenzungen des digitalisierten Bitmusters werden als die Um
grenzungen des Fensters festgelegt, wenn der Teil zu der einen Charakte
ristik oder den mehreren Charakteristiken des Bitmusters paßt. Der
Schrägstellungswinkel des digitalisierten Bitmusters wird bestimmt, und
die Schrägstellung des digitalisierten Bitmusters wird gegebenenfalls be
seitigt, so daß der Schrägstellungswinkel auf im wesentlichen Null verrin
gert wird. Das digitalisierte Bitmuster wird danach gestutzt oder zuge
schnitten, und die Binärdaten werden aus dem digitalisierten Bitmuster
ausgelesen, wodurch ein eindimensionales Feld oder Array aus digitalen
Daten erzeugt wird. Schließlich wird das eindimensionale Array entsto
chastisiert, und es wird eine Fehlerkorrektur angewandt, um eine im we
sentlichen fehlerfreie digitale Darstellung der codierten Information zu er
zeugen.
Bei einer Ausführungsform umfaßt das Fenster, das bei dem Auffindungs-
oder Lokalisierungsschritt verwendet wird, einen Kernbereich, der der
vorherbestimmten Größe des Bitmusters entspricht, und einen Ruhebe
reich, der dem Außenbereich entspricht. Das Prüfen umfaßt das getrennte
Prüfen von Teilen der Darstellung, die von dem Kernbereich und dem Ru
hebereich umgeben sind, um zu bestimmen, ob die Teile zu einem Cha
rakteristikum oder mehreren Charakteristiken des Bitmusters bzw. des
Außenbereichs passen. Vorzugsweise wird die Pixelverteilung jedes Be
reichs geprüft, um zu bestimmen, ob sie in vorherbestimmte Bereiche
fällt, um zu bestätigen, daß das Bitmuster in der Abbildung vorhanden ist,
d. h., das Bitmuster im Kernbereich wird eine annähernd gleichmäßige Pi
xelverteilung aufweisen, und der Außenbereich wird eine Pixelverteilung
aufweisen, die Pixel nahe bei 100% mit entweder "0" oder "1" besitzt.
Wenn die Teile der Darstellung, die von dem Kernbereich und dem Ruhe
bereich umgeben sind, zu dem einen Charakteristikum oder den mehreren
Charakteristiken des Bitmusters passen, werden die Umgrenzungen eines
Kandidatbereichs für das digitalisierte Bitmuster auf die Umgrenzungen
des Kernbereichs festgelegt. Wenn zusätzlich herausgefunden wird, daß
die Teile der Darstellung, die von dem Fenster umgeben sind, die vorher
gehende Prüfung bestehen, kann der Teil, der vom Kernbereich umgeben
ist, auch zugeschnitten werden, um die äußeren Umgrenzungen des Kan
didatbitmusters darin zu bestimmen, wenn die äußeren Umgrenzungen
mit den vorherbestimmten Abmessungen des Bitmusters verglichen wer
den, um weiter zu bestätigen, daß ein Bitmuster innerhalb des Fensters
vorhanden ist.
Bei einer anderen Ausführungsform der vorliegenden Erfindung wird der
Schrägstellungswinkel bestimmt, indem zuerst alle horizontalen oder ver
tikalen Kanten innerhalb des aufgefundenen Kandidatbereichs vorzugs
weise unter Verwendung eines Erkenners endlicher Zustände aufgefunden
werden. Die Koordinaten einer horizontalen oder vertikalen Linie inner
halb des aufgefundenen Kandidatbereichs, die die horizontalen oder verti
kalen Kanten darstellen, werden dann unter Verwendung der Hough-
Transformation berechnet. Schließlich wird der Schrägstellungswinkel als
der Winkel zwischen den Koordinaten der horizontalen oder vertikalen Li
nie innerhalb des Kandidatbereichs und einer horizontalen Linie, die eine
Reihe aus Pixeln innerhalb der Darstellung darstellt, oder einer vertikalen
Linie, die eine Spalte aus Pixeln innerhalb des Kandidatbereichs darstellt,
berechnet. Wahlweise können sowohl die horizontalen als auch vertikalen
Kanten aufgefunden werden, und der Schrägstellungswinkel kann unter
Verwendung sowohl der horizontalen als auch vertikalen Kanten berech
net werden.
Bei einer anderen Ausführungsform wird der Kandidatbereich in mehrere
horizontale und/oder vertikale Bereiche unterteilt. Für jeden horizontalen
und/oder vertikalen Bereich werden vorläufige Schrägstellungswinkel be
rechnet, und der Schrägstellungswinkel wird durch ein Wahlschema aus
den vorläufigen Schrägstellungswinkeln ausgewählt, beispielsweise wird
der Medianwert ausgewählt.
Die Erfindung wird im folgenden beispielhaft anhand der Zeichnung be
schrieben, in dieser ist bzw. sind:
Fig. 1A ein Diagramm, das schematisch den zweidimensionalen
Strichcode der '280-Anmeldung veranschaulicht, der auf
eine Seite aus gedrucktem Text gedruckt ist, und Fig. 1B
ein Beispiel des zweidimensionalen Strichcodes der '280-
Anmeldung,
Fig. 2 ein Beispiel eines zweidimensionalen Strichcodes gemäß der
vorliegenden Erfindung,
Fig. 3 ein Flußdiagramm, das die Schritte zum Codieren und De
codieren von Information auf einem bedruckten Medium
gemäß der vorliegenden Erfindung zeigt,
Fig. 4 ein zweidimensionaler Strichcode, der auf ein bedrucktes
Medium mit einem komplexen Hintergrund gedruckt ist,
wobei eine Ruhezone um den Strichcode herum vorgesehen
ist,
Fig. 5 ein Flußdiagramm, das beschreibt, wie der zweidimensio
nale Strichcode gemäß der vorliegenden Erfindung zu lesen
ist,
Fig. 6 die Auslegung des Schiebefensters, das als Teil des Auffin
dungsverfahrens der vorliegenden Erfindung verwendet
wird,
Fig. 7A, 7B und 7C drei alternative Ausführungsformen von Suchmu
stern, die als Teil des Auffindungsverfahrens der vorliegen
den Erfindung verwendet werden,
Fig. 8 ein Schaubild des Erkenners endlicher Zustände, der dazu
verwendet wird, Kantenpixel bei dem Verfahren zur Schräg
stellungsabschätzung der vorliegenden Erfindung zu detek
tieren,
Fig. 9A ist ein Diagramm eines Verfahrens zur Schrägstellungswin
kelabschätzung nach dem Stand der Technik auf der
Grundlage der Verwendung einer einzigen Linie innerhalb
der Kantenabbildung, und Fig. 9B ist ein Diagramm des
Wahlschemaverfahrens, das als Teil des Verfahrens zur
Schrägstellungswinkelabschätzung der vorliegenden Erfin
dung verwendet wird.
Wie es in den US-Patenten Nr. 5 625 721 und Nr. 5 703 972 von Lopresti
et al. die beide mit "Certifiable Optical Character Recognition" betitelt sind,
und in US-Patent Nr. 5 748 807, das mit "A Method and Means For En
hancing Optical Character Recognition of Printed Documents" betitelt ist,
deren Offenbarungsgehalte alle hierin explizit durch Bezugnahme einge
schlossen sind, beschrieben ist, kann Information über Inhalte, Layout,
Erzeugung und Wiederauffindung eines Dokuments durch einen Compu
ter codiert werden, wenn das Dokument zu Beginn erzeugt wird oder bei
einer anschließenden Computerverarbeitung desselben. Die codierte Do
kumentinformation kann dann über einen zweidimensionalen Strichcode
bereitgestellt werden, der auf der Fläche einer gedruckten Version des Do
kuments erzeugt ist. Fortschrittliche Codier- und Druckauflösungsfähig
keiten, die gegenwärtig verfügbar sind, können bis zu 30 000 Bits Infor
mation auf dem Raum von einem einzigen Quadratzoll (645,16 mm2) auf
nehmen. Deshalb kann man, wie es durch die oben genannten Anmel
dungen gelehrt wird, theoretisch die gesamten Dokumentinhalte codieren,
wobei dies nur durch die Menge an Raum auf der Dokumentfläche be
grenzt ist, die man dem zweidimensionalen Strichcode zu opfern gewillt
ist. Ein Strichcodelesegerät in Verbindung mit einem optischen Seiten
scanner oder Seitenlesegerät oder vollständig getrennt von diesem, kann
den zweidimensionalen Strichcode abtasten und die Information einem
zugehörigen System liefern, das mit der geeigneten Erkennungs- und De
codier-Software ausgestattet ist. Die decodierte Information kann dann
von dem Abtastsystem dazu verwendet werden, eine neue Version des Do
kuments zu schaffen oder die Erkennung, Wiedergabe und Fehlerkorrek
tur für das gescannte oder abgetastete Dokument zu verbessern. Um den
zweidimensionalen Strichcode zu decodieren, ist es nicht erforderlich, daß
ein derartiges Strichcodelesegerät- und -abtastsystem die Druckauflösung
des zweidimensionalen Strichcodes kennt, vorausgesetzt, daß die Ab
tastauflösung des Lesegeräts in der Lage ist, mindestens eine 3 × 3-
Pixelmatrix für jedes logische Bit des zweidimensionalen Strichcodes für
die bevorzugte Ausführungsform des unten in bezug auf Fig. 8 diskutier
ten Erkenners endlicher Zustände herzustellen.
Die in der Form eines zweidimensionalen Strichcodes codierte Information
kann dazu verwendet werden, die Software-Werkzeuge zu verbessern, die
bereits dazu verwendet werden, Papierdokumente zu schaffen. Beispiele
umfassen Textverarbeitungs-, Tabellenkalkulations-, objektorientierte
Graphik- und Multimediaanwendungen, wie Sprachaufzeichnung und fo
tografische Bildgebung.
Der Rand 13, der bei dem zweidimensionalen Strichcode 10 von Fig. 1
verwendet wird, war kein kritisches Merkmal der Erfindung, die in der
'280-Anmeldung offenbart ist, da der größte Teil der darin beschriebenen
Schlüsselverfahrensschritte funktioniert, ob ein Rand vorhanden ist oder
nicht. Jedoch wurde der Rand 10 bei der '280-Anmeldung von den
Schritten der Schrägstellungsabschätzung und der Schrägstellungsbesei
tigung verwendet.
Fig. 2 veranschaulicht ein Beispiel der zweidimensionalen Strichcodesym
bologie, die bei der '189-Anmeldung eingeführt wurde. Ein zweidimensio
naler Strichcode 20 umfaßt einen codierten Satz aus Datenbits in einem
zweidimensionalen Gitter. Typischerweise wird jedes Datenbit; das codiert
ist, als eine Matrix aus schwarzen oder weißen Pixeln 23 gedruckt. Eine
Pixelmatrix, die ein Datenbit darstellt, ist quadratisch und kann so klein
wie eine 1 × 1-Matrix bis so groß wie eine 6 × 6-Matrix oder größer sein.
Es können auch nichtquadratische Matrizen verwendet werden. Es sind
keine Takte oder Ränder bei der Symbologie für den zweidimensionalen
Strichcode 20 notwendig oder erforderlich. Bei der bevorzugten Ausfüh
rungsform ist der zweidimensionale Strichcode 20 ein 20 × 20-Array aus
Datenbits, wobei jedes Bit in einer 9 × 9-Pixelmatrix gespeichert ist, ob
wohl festgestellt werden kann, daß die Größe flexibel ist, und daß die ein
zige Anforderung an die Größe ist, daß der Leseprozeß die Größe des co
dierten Arrays kennt.
In der '189-Anmeldung sind zwei unterschiedliche Ausführungsformen der
Strichcode-Symbologie beschrieben. Bei der ersten Ausführungsform sind
die vier Eckenbits 21 immer schwarz (wenn auf einen weißen Hintergrund
gedruckt wird). Die vier Eckenbits 21 bei der ersten Ausführungsform
werden "Ankerbits" genannt. Die restlichen Datenbits bei der ersten Aus
führungsform der ' 189-Anmeldung sind pseudo-stochastisiert (pseudo
randomized) und können irgendeine Kombination gewünschter Informati
on und Fehlerkorrekturbits enthalten. Die Symbologie der ersten Ausfüh
rungsform sorgt für eine gute Schrägstellungsabschätzung, wenn die
Schrägstellung klein ist und der zweidimensionale Strichcode 20 frei von
irgendeiner Beschädigung ist. Jedoch macht die Plazierung der Ankerbits
21 in der Ecke diese gegenüber Beschädigung anfällig. Somit gibt es bei
der in der '189-Anmeldung beschriebenen zweiten Ausführungsform keine
Forderung nach Ankerbits 21, und der zweidimensionale Strichcode 20 ist
einfach ein N×M-Array aus Datenbits, vorzugsweise mit N = M = 20, wo
bei in diesem Fall für die Speicherung von bis zu 50 Bytes (400 Bits) In
formation gesorgt wird. Bei der zweiten Ausführungsform sind alle Daten
bits pseudo-stochastisiert und können irgendeine Kombination ge
wünschter Informations- und Fehlerkorrekturbits enthalten. Vorzugsweise
wird ein herkömmlicher (7, 4) Hamming-Code als der Fehlerkorrekturcode
verwendet, um statistisches Rauschen zu detektieren und zu korrigieren,
wobei in diesem Fall der zweidimensionale Strichcode bis zu 28 Bytes (224
Bits) Information festhalten kann.
Fig. 3 veranschaulicht die Schritte, die in dem Codier/Decodier-Prozeß
enthalten sind. Mit der Ausnahme, wie es hierin in bezug auf die Verfah
ren der vorliegenden Erfindung beschrieben ist, ist jeder Schritt ausführli
cher in der '280-Anmeldung und/oder in der '189-Anmeldung beschrie
ben. Während des Codierprozesses werden zunächst Eingangsdaten in der
Form eines eindimensionalen, linearen Bitstroms verarbeitet, um bei
Schritt 30 einen normalen, auf Blöcken beruhenden Fehlerkorrekturcode
("ECC") zu addieren, bei Schritt 31 stochastisiert, bei Schritt 32 von einem
eindimensionalen Bitstrom auf eine zweidimensionale Darstellung, d. h.,
den zweidimensionalen Strichcode, abgebildet, und der zweidimensionale
Strichcode wird schließlich bei Schritt 33 gedruckt. Der Decodierprozeß
wiederholt diese Schritte in umgekehrter Reihenfolge, wobei der gedruck
te, zweidimensionale Strichcode bei Schritt 34 gelesen wird, bei Schritt 35
aus einer zweidimensionalen auf eine eindimensionale Darstellung abge
bildet wird, bei Schritt 36 entstochastisiert wird, und schließlich bei
Schritt 37 der ECC angewandt wird, um den "rohen" linearen Bitstrom
wiederherzustellen. Insbesondere werden die Verfahren der vorliegenden
Erfindung bei dem Leseschritt 34 verwendet.
Fig. 5 veranschaulicht die Schritte bei dem Leseverfahrensschritt der vor
liegenden Erfindung. Zuerst wird die gescannte oder abgetastete Grau
skalenabbildung durch den Schwellenwertbildungsschritt 100 in schwarz
und weiß umgewandelt, wobei ein bestimmter Intensitätspegel dynamisch
ausgewählt wird (z. B. der mittlere oder Medianwert-Pixelwert) und Pixel
mit einem Pegel gleich oder über dem ausgewählten Intensitätspegel wer
den als schwarz (oder weiß) angesehen, und Pixel mit einem Intensitätsp
egel, der kleiner als der ausgewählte Intensitätspegel ist, werden als weiß
(oder schwarz) angesehen. Um den Prozeß zu beschleunigen, wird als
nächstes wahlweise die Auflösung der gescannten oder abgetasteten Ein
gangsabbildung bei Schritt 102 reduziert, wie es unten weiter diskutiert
wird. Danach wird bei Schritt 104 durch das Schiebefensterverfahren der
vorliegenden Erfindung ein zweidimensionaler Kandidatstrichcodebereich
lokalisiert oder aufgefunden und aus der Eingangsabbildung herausgezo
gen, wie es unten in bezug auf die Fig. 4, 6 und 7 weiter diskutiert wird.
Wenn bestimmt wird, daß ein Kandidatbereich einen zweidimensionalen
Strichcode umfaßt, wird der Kandidatbereich bei Schritt 104 aus der ur
sprünglichen Abbildung herausgezogen (mit der ursprünglichen Auflö
sung). Dann wird bei Schritt 106 der Schrägstellungswinkel des zweidi
mensionalen Strichcodes innerhalb des Kandidatbereichs durch das Ver
fahren der vorliegenden Erfindung abgeschätzt, wie es mit Bezug auf die
Fig. 8 und 9 hierin weiter beschrieben wird.
Sobald der Schrägstellungswinkel bekannt ist, wird er bei Schritt 108 wie
notwendig korrigiert, wie es in der '189-Anmeldung ausführlicher be
schrieben ist. Wenn der Schrägstellungswinkel ϕ größer als ein minimaler
Schwellenwert α ist, über welchen der Leseschritt 112 nicht länger in der
Lage ist, den Strichcode zuverlässig zu lesen, jedoch unter einem zweiten
Schwellenwert β, wird ein einfaches Schrägstellungsbeseitigungsverfahren
angewandt. Wenn der Schrägstellungswinkel ϕ größer als der zweite
Schwellenwert β ist, der typischerweise auf sieben Grad Schrägstellung
festgelegt ist, wird ein trigonometrischer Schrägstellungsbeseitigungspro
zeß angewandt, der mehr Verarbeitungszeit als das einfache Schrägstel
lungsbeseitigungsverfahren benötigt. Das einfache Schrägstellungsbeseiti
gungsverfahren wendet das Scher-Dreh-Verfahren an, und ist vollständig
in der '189-Anmeldung in bezug auf die Fig. 16A, 16B und 16C darin of
fenbart. Das trigonometrische Schrägstellungsbeseitigungsverfahren ist
auch vollständig in der '189-Anmeldung in bezug auf Fig. 17 darin be
schrieben.
Der Kandidatbereich wird wahlweise bei Schritt 110 zugeschnitten, um
eine enge Umgrenzung um den zweidimensionalen Strichcode herum zu
schaffen, wie es unten weiter beschrieben ist. Schließlich wird die Infor
mation, die in dem zweidimensionalen Strichcode codiert ist, bei Schritt
112 aus dem Kandidatbereich gelesen, wie es in den '280- und '189-
Anmeldungen vollständig beschrieben ist. Der Kandidatbereich kann so
wohl bei dem Zuschneideschritt 110 als auch dem Leseschritt 112 geprüft
werden, um sicherzustellen, daß er bestimmte Charakteristiken des zwei
dimensionalen Strichcodes enthält, und in dem Fall, daß der Kandidatbe
reich derartige Charakteristiken nicht enthält, kann die Verarbeitung zu
dem Auffindungsschritt 104 zurückkommen, um die Suche nach einem
Kandidatbereich wiederaufzunehmen.
Der erste Schritt 102 des Leseprozesses verringert die Auflösung der Ab
bildung um einen Faktor von vorzugsweise vier, um den Auffindungs
schritt 104 zu beschleunigen, obwohl ein Fachmann feststellen kann, daß
die Auflösung der Abbildung um andere Faktoren verringert werden kann,
und, wenn die Verarbeitungsgeschwindigkeit kein Thema ist, muß dieser
Schritt überhaupt nicht ausgeführt werden. Die Eingangsabbildung wird
vorzugsweise einfach unterabgetastet, um eine Abbildung mit niedrigerer
Auflösung zu schaffen. Die folgende Gleichung beschreibt, wie eine Abbil
dung mit verringerter Auflösung aus der ursprünglichen Eingangsabbil
dung erzeugt werden kann:
R(I, J) = O(Reihe_Sprung * I, Spalte_Sprung * J) (1)
für:
0 ≦ I < Reihe_m/Reihe_Sprung
0 ≦ J < Spalte_m/Spalte_Sprung
wobei O(x, y) die ursprüngliche Eingangsabbildung darstellt, R(x, y) die
reduzierte Abbildung darstellt, Reihe_m und Spalte_m jeweils die vertikale
bzw. horizontale Größe des Eingangsabbildungs-Arrays darstellen, und
Reihe_Sprung und Spalte_Sprung jeweils Abtastfaktoren in den vertikalen
bzw. horizontalen Richtungen sind. Vorzugsweise sind Reihe_Sprung und
Spalte_Sprung beide gleich 4. Wie der Fachmann feststellen kann, können
andere Verfahren zur Verringerung der Auflösung der Eingangsabbildung
das durch Gleichung (1) beschriebene, bevorzugte Verfahren ersetzen.
Der Auffindungsschritt 104 bestimmt den Ort des zweidimensionalen
Strichcodes innerhalb einer gegebenen Dokumentabbildung. Verfahren
nach dem Stand der Technik zur Auffindung umfassen ein einfaches Auf
findungsschema auf der Grundlage der Verteilung eines Histogramms der
horizontalen und vertikalen Projektion von Abbildungspixeln, wie es in der
'280-Anmeldung beschrieben ist, und ein mathematisches, auf Morpholo
gie beruhendes Schema, das in der anhängigen Patentanmeldung "Method
of Locating a Machine Readable Two Dimensional Barcode Within an
Image (amended)", (Serial Nr. 08/822 347, am 17. März 1997 eingereicht)
("die '347-Anmeldung") beschrieben ist. Das einfache Auffindungsschema
der '280-Anmeldung ist ungeachtet des Ortes des zweidimensionalen
Strichcodes innerhalb einer Abbildung relativ schnell, liefert jedoch keine
optimalen Ergebnisse, wenn der zweidimensionale Strichcode auf einen
komplexen Hintergrund gedruckt ist, Einzellinienrauschen umfaßt oder
einen Schrägstellungswinkel aufweist, der größer als fünf Grad ist. Das
auf Morphologie beruhende Auffindungsschema der '347-Anmeldung kann
mit Dokumenthintergründen wie gedrucktem Text umgehen, kann jedoch
nicht mit komplexen Hintergründen, wie dem dunklen Hintergrund 220
von Fig. 4 umgehen und ist im Hinblick auf die Verarbeitungsgeschwin
digkeit nicht so effektiv. Das unten beschriebene Verfahren der vorliegen
den Erfindung hat die günstigen Eigenschaften der beiden Verfahren nach
dem Stand der Technik und ist in der Lage, den zweidimensionalen
Strichcode aufzufinden, wenn er auf ein Dokument gedruckt ist, das einen
komplexen Hintergrund, wie den dunklen Hintergrund 220 von Fig. 4,
umfaßt.
Nach Fig. 4 wird nun beim Drucken eine Ruhezone 200 aus weißem Raum
explizit um den zweidimensionalen Strichcode 210 herum geschaffen, um
die Genauigkeit des Auffindungsprozesses zu verbessern, wenn der zwei
dimensionale Strichcode 210 in einem bedruckten Medium eingeschlossen
ist, das komplexe Hintergründe, wie Hintergrund 220, enthält. Die Ruhe
zone 200 verbessert auch die Genauigkeit des Auffindungsprozesses bei
der Anwesenheit von Linienrauschen und Schrägstellung des zweidimen
sionalen Strichcodes. Wie es in Fig. 1A gezeigt ist, ist, wenn der zweidi
mensionale Strichcode in einer Ecke eines Dokuments außerhalb der
Grenzen angeordnet ist, in denen die Dokumentinhalte, wie Text oder
Graphiken, liegen, von Natur aus eine Fläche aus weißem Raum vorhan
den. Jedoch zeigt sich eine viel schwierigere Situation, wenn ein Doku
ment keine derartigen Grenzen oder anderen Flächen aus weißem Raum
umfaßt. Somit kann dadurch, daß explizit die Anwesenheit einer Ruhezo
ne 200 um den zweidimensionalen Strichcode 210 herum erforderlich ist,
der zweidimensionale Strichcode 210 überall auf einem Dokument mit ei
nem komplexen Hintergrund plaziert sein, wie es allgemein in Fig. 4 ge
zeigt ist, und dennoch durch das Verfahren der vorliegenden Erfindung
gelesen werden.
Der Auffindungsschritt 120 von Fig. 5 zieht Nutzen aus der Tatsache, daß
der zweidimensionale Strichcode in der Mitte einer Ruhezone (weißer Be
reich) angeordnet ist, wobei die Kombination auf jede Art von Dokument
hintergrund gedruckt werden kann. Deshalb ist der zweidimensionale
Strichcode von einem weißen Randbereich umgeben, wie es in Fig. 4 ge
zeigt ist. Wie ein Fachmann feststellen wird, erfordert die Ruhezone, daß
im wesentlichen alle Pixel darin die gleiche Farbe aufweisen, jedoch kann
die besondere Farbe schwarz oder weiß sein (oder eine andere Farbe im
Fall eines Farbdokuments, die in dem Schwellenwertschritt 100 in
schwarz oder weiß umgewandelt wird). Der Auffindungsschritt 120 muß
ein gewisses Niveau an "Speckle"-Rauschen und Linienrauschen gestat
ten, das in die Ruhezone beispielsweise während des Druckens oder Abta
stens bzw. Scannens eingeleitet wird. Der Auffindungsschritt 120 verwen
det das in Fig. 6 veranschaulichte Schiebefenster 300, um einen zweidi
mensionalen Strichcode in der Eingangsabbildung aufzufinden. Insbeson
dere wird das Schiebefenster 300 über die Eingangsabbildung hinweg be
wegt und wird an ausgewählten Positionen dazu verwendet, den Teil der
Abbildung innerhalb der Umgrenzungen des Schiebefensters 300 heraus
zuziehen. Der herausgezogene Teil der Abbildung wird dann geprüft, um
zu bestimmen, ob ein zweidimensionaler Strichcodekandidatbereich darin
vorhanden ist, wie es unten weiter diskutiert wird. Das Schiebefenster 300
weist zwei Bereiche auf: (1) einen Kernbereich 310 und (2) einen Ruhebe
reich 320. Der Kernbereich 310 entspricht dem zweidimensionalen Strich
code selbst, und der Ruhebereich 320 entspricht der Ruhezone des zwei
dimensionalen Strichcodes. Die Größe der beiden Bereiche ist hauptsäch
lich durch die Spezifikation des zweidimensionalen Strichcodes, d. h., die
Größe des zweidimensionalen Strichcodes 210 und der Ruhezone 200, die
in Fig. 4 gezeigt sind, bestimmt. Da jedoch die Größe des rechteckigen
Fensters, die notwendig ist, um den zweidimensionalen Strichcode zu ent
halten, zunimmt, wenn der zweidimensionale Strichcode schräggestellt ist,
wie dies durch den schräggestellten, zweidimensionalen Strichcode 330 in
Fig. 6 gezeigt ist, ist die Größe des Kernbereichs des Schiebefensters 300
geringfügig größer als die erwartete Größe des zweidimensionalen Strich
codes, um sich an Umstände anzupassen, bei denen ein zweidimensiona
ler Strichcode bis zu einer bestimmten maximalen Größe schräggestellt
ist. Zusätzlich gestattet diese Eigenschaft auch, daß der zweidimensionale
Strichcode während des Druck- und/oder Scanprozesses geringfügig ver
größert und dennoch durch das Verfahren der vorliegenden Erfindung
aufgefunden werden kann.
Es können verschiedene Suchmuster für das Schiebefenster 300 verwen
det werden. Der Einfachheit halber kann das Suchmuster von der oberen
linken Ecke der Abbildung starten und Reihe um Reihe von links nach
rechts für jede Reihe abtasten, wie es in Fig. 7A gezeigt ist, was leicht
durchzuführen ist, jedoch keinerlei a priori Wissen um den Ort des zwei
dimensionalen Strichcodes innerhalb einer gegebenen Abbildung verwen
det und deshalb nicht das effektivste Suchverfahren sein kann.
In der Praxis wird der zweidimensionale Strichcode gewöhnlich an einen
vordefinierten Ort innerhalb einer Seite gedruckt. Wenn decodiert wird,
braucht somit nur ein kleiner Teil der gesamten Dokumentabbildung
durch das Schiebefenster 300 abgetastet werden. Dieser kleine Bereich
wird gewöhnlich durch die Abtastvorrichtung gemäß dem erwarteten Ort
des zweidimensionalen Strichcodes, z. B. in jeder Ecke des Dokuments,
erhalten. Sobald der kleine Bereich (oder Bereiche) herausgezogen sind, ist
es wahrscheinlicher, daß sich der zweidimensionale Strichcode näher an
der Mitte des herausgezogenen kleinen Bereichs als an der Umgrenzung
befinden wird. Das bevorzugte Suchmuster startet von der Mitte des her
ausgezogenen kleinen Bereichs und dehnt sich in einem spiralähnlichen
Muster nach außen aus, wie es in Fig. 7B gezeigt ist, was es gestattet, daß
der zweidimensionale Strichcodekandidatbereich viel schneller aufgefun
den wird, als durch das einfache Verfahren, das in bezug auf Fig. 7A dis
kutiert wurde. Jedoch kann die Implementierung dieses Suchverfahrens
komplizierter sein. Deshalb kann alternativ ein Suchmuster, das weniger
kompliziert als das Suchmuster von Fig. 7B durchzuführen jedoch
schneller als das Suchmuster von Fig. 7A ist, unter Verwendung eines
Sprungreihensuchmusters durchgeführt werden, wie es in Fig. 7C veran
schaulicht ist, das reihenweise in dem herausgezogenen kleinen Bereich
sucht. Wie es in Fig. 7C gezeigt ist, startet das Sprungreihensuchmuster
das Suchen in der mittleren Reihe, springt dann von der mittleren Reihe
eine Reihe nach oben und eine Reihe nach unten, dann von der mittleren
Reihe zwei Reihen nach oben und zwei Reihen nach unten, wobei jede
Reihe durchsucht wird, bis ein zweidimensionaler Kandidatstrichcodebe
reich gefunden wird oder das obere Ende und das untere Ende des her
ausgezogenen kleinen Bereichs erreicht sind. Für jede Reihe sucht das
Sprungreihensuchmuster von links nach rechts. Obwohl es nicht so ef
fektiv wie das spiralähnliche Muster von Fig. 7B ist, ist es leichter durch
zuführen.
Wenn eine verbesserte Effektivität notwendig ist, kann ferner jedes hierin
diskutierte Suchmuster derart modifiziert werden, daß es durch Über
springen einiger Abtastwege sucht, so daß nur entlang der geradzahligen
Wege gesucht wird, wie es in den Fig. 7A-7C gezeigt ist.
Wenn das Schiebefenster jeden Ort passiert, wird der Abbildungsbereich
innerhalb des Schiebefensters 300 geprüft, um zu sehen, ob er bestimmte
Charakteristiken des zweidimensionalen Strichcodes enthält. Wie es oben
angedeutet wurde, sind die Bits in dem zweidimensionalen Strichcode sto
chastisiert und enthalten eine gleichmäßige Verteilung von Bits. Zusätz
lich ist die annähernde Größe des zweidimensionalen Strichcodes be
kannt, und der zweidimensionale Strichcode ist von einer Ruhezone aus
weißem Raum umgeben. Das Auffindungsverfahren der vorliegenden Er
findung prüft den Abbildungsbereich bei jedem Schritt, um zu bestimmen,
ob er diese Merkmale enthält, und somit zu bestimmen, ob der Abbil
dungsbereich als ein zweidimensionaler Strichcodekandidatbereich aus
gewählt werden sollte.
Als eine erste Prüfung an jeder Position wird der Kernbereichsdichtewert
der Abbildung innerhalb des Kernbereichs 310 des Schiebefensters 300
geprüft, um zu bestimmen, ob er in einen vorbestimmten Bereich fällt.
Weil die Bits innerhalb des zweidimensionalen Strichcodes wegen des Sto
chastisierungsprozesses (randomization process) in einem gleichmäßigen
Muster verteilt sind, wird insbesondere ein perfekt gleichmäßiger, zweidi
mensionaler Strichcode eine gleiche Anzahl von schwarzen Pixeln und
weißen Pixeln aufweisen. Die "Kernbereichsdichte" ist als das Verhältnis
der Anzahl von schwarzen Pixeln zur Gesamtzahl von Pixeln innerhalb des
Kernbereichs 310 des Abtastfensters 300 definiert. Weil der oben disku
tierte Binärisierungsprozeß (binarisation process) der Abtastvorrichtung
oder des Schwellenwertschrittes 100 bewirken kann, daß der zweidimen
sionale Strichcodebereich zu dunkel oder zu hell ist, kann die Kernbe
reichsdichte geringfügig auf einem Niveau schwanken, das etwas niedriger
oder höher als 0,5 ist. Deshalb kann der Kernbereichsdichtewert in einem
vorherbestimmten Bereich um 0,5 herum liegen. Wenn der zu decodieren
de, zweidimensionale Strichcode einen Rand umfaßt, müssen zusätzlich
der Schwellenwert und der Bereich der Kernbereichsdichte entsprechend
eingestellt werden, um den zusätzlichen schwarzen Pixeln Rechnung zu
tragen, die aufgrund des schwarzen Randes vorhanden sind (falls z. B. der
Schwellenwert 0,5 beträgt und der Bereich 0,45 bis 0,55 beträgt, wenn
kein schwarzer Rand vorhanden ist, kann der Schwellenwert 0,55 betra
gen und der Bereich ist 0,50 bis 0,60, wenn ein schwarzer Rand vorhan
den ist). Wenn herausgefunden wird, daß der Kernbereich eine Kernbe
reichsdichte aufweist, die die Anwesenheit eines zweidimensionalen
Strichcodes anzeigt, fährt die Prüfung fort, sonst wird das Schiebefenster
in seine nächste Position bewegt, um die Kernbereichsdichte zu bewerten.
Als eine zweite Prüfung an jeder Position wird die Ruhebereichsdichte des
Bereichs innerhalb des Ruhebereichs 320 des Schiebefensters 300 be
wertet, um zu bestimmen, ob sie in einen vorherbestimmten Bereich fällt.
Die Ruhebereichsdichte ist als das Verhältnis der Anzahl von schwarzen
Pixeln zur Gesamtzahl von Pixeln innerhalb des Ruhebereichs 320 des
Schiebefensters 300 definiert. Wie es in Fig. 4 gezeigt ist, enthält die Ru
hezone 200 idealerweise keine schwarzen Pixel, und somit würde ein per
fekt abgetasteter, zweidimensionaler Strichcode ohne irgendein Rauschen
(d. h. schwarze Pixel) innerhalb der Ruhezone 200 einen Ruhebereichs
dichtewert von Null ergeben. Um etwas Speckle-Rauschen oder Rauschen
einer einzelnen gezogenen Linie Rechnung zu tragen, wird im voraus ein
Maximaldichtewert, der etwas größer als Null ist, als ein annehmbarer
Wert ausgewählt. Der Ruhebereichsdichtewert für den Teil der Abbildung
in der Ruhezone 320 des Schiebefensters 300 wird bewertet, und wenn
herausgefunden wird, daß er kleiner oder gleich dem im voraus ausge
wählten Wert ist, fährt die Prüfung fort, sonst wird das Schiebefenster in
seine nächste Position bewegt, um die Kernbereichsdichte zu bewerten.
Als eine abschließende Prüfung wird ferner eine Zuschneideprüfung
durchgeführt, wenn ein Abbildungsbereich innerhalb eines Abtastfensters
in die annehmbaren Bereiche für sowohl die Kernbereichsdichte als auch
die Ruhebereichsdichte fällt, um die Gültigkeit jedes Bereichs zu prüfen.
Der Zuschneideschritt der vorliegenden Erfindung beruht auf der Tatsa
che, daß die Bits in dem zweidimensionalen Strichcode gleichmäßig ver
teilt sind. Somit wird in einem Array aus 20 × 20 Bits keine Reihe oder
Spalte in dem Kandidatbereich vorhanden sein, die nicht irgendwelche
schwarzen Bits enthält. Das Zuschneiden wird von der Mitte zur Außen
seite hin vorgenommen. Von der Mitte des Kandidatbereichs ausgehend
wird jede Abbildungsreihe fortlaufend von der Mitte zum oberen Ende des
Kandidatbereichs abgetastet, bis eine Reihe erreicht ist, die keine schwar
zen Pixel enthält, wobei man annimmt, daß dies dort ist, wo die obere
Kante des zweidimensionalen Strichcodes liegt. Der Abtastprozeß wird
weitere drei Male wiederholt, wobei die Reihenabtastung von der Mitte
nach unten zum unteren Ende des Kandidatbereichs und die Spaltenab
tastung dann von der Mitte zu der am weitesten links liegenden Spalte des
Kandidatbereichs und schließlich von der Mitte zu der am weitesten
rechts liegenden Spalte des Kandidatbereichs fortschreitet. Anstelle daß
eine einzige Reihe die Kante des zweidimensionalen Strichcodes kenn
zeichnet, können die jeweiligen Umgrenzungen des zweidimensionalen
Strichcodes durch die Anwesenheit einer vorherbestimmten, aufeinander
folgenden Anzahl von Reihen oder Spalten gekennzeichnet sein, die kein
Schwarz enthalten, um Abtastzeilenrauschen von dem Abtastprozeß oder
einer zu hellen Abbildung Rechnung zu tragen.
Nachdem der Kandidatbereich zugeschnitten worden ist, wird die Größe
des neuen Bereichs gegen die erwartete Größe des zweidimensionalen
Strichcodes geprüft. Wenn eine wesentlich unterschiedliche Größe gefun
den wird, kennzeichnet dies, daß der Kandidatbereich kein zweidimensio
naler Strichcodebereich ist, und das Schiebefenster wird in seine nächste
Position bewegt, um die Kernbereichsdichte zu bewerten. Das Prüfen der
Größe nach dem Zuschneideprozeß bewirkt die Beseitigung gewisser Be
reiche, die von den ersten beiden Prüfungen falsch detektiert worden sein
können. Beispielsweise kann ein Textbereich die Dichteprüfung bestehen,
wenn er einen Font mit einer Größe umfaßt, die der Größe jedes Bits in
nerhalb des zweidimensionalen Strichcodes ähnlich ist und einen be
stimmten Zeilenabstand und Zeichenabstand aufweist. Jedoch wird ein
Zuschneiden eines Textbereichs gewöhnlich mit einem einzigen Bereich
eines verbundenen Bestandteils, z. B. einem Zeichen, enden, der eine Grö
ße aufweisen wird, die sich wesentlich von derjenigen unterscheidet, die
für den zweidimensionalen Strichcode erwartet wird.
Sobald herausgefunden wird, daß ein Kandidatbereich alle drei Prüfungen
erfüllt, wird er als ein gültiger Kandidatbereich angesehen. Der gegenwär
tige Ort innerhalb der Abbildung des Schiebefensters wird aufgezeichnet
und auf die Abbildung mit voller Auflösung abgebildet, und der entspre
chende Bereich wird als ein Kandidatbereich zur weiteren Verarbeitung
herausgezogen. Wenn ein zweidimensionaler Strichcode innerhalb des
Schiebefensters einen relativ großen Schrägstellungswinkel aufweist, kön
nen dessen Ecken außerhalb der Umgrenzungen des Kernbereichs 310
des Schiebefensters 300 verblieben sein. Die Ecken können wiedergefun
den werden, indem die Größe des Kernbereichs 310 geringfügig ausge
dehnt wird, wenn der Kandidatbereich aus der Abbildung mit voller Auflö
sung herausgezogen wird, um sicherzustellen, daß der gesamte zweidi
mensionale Strichcode herausgezogen ist. Jegliches Rauschen, das in dem
herausgezogenen Bereich wegen der Ausdehnung der Fenstergröße ge
schaffen wird, kann bei dem Zuschneideschritt 110 beseitigt werden, der
die gleiche Zuschneideverfahrensweise von innen nach außen verwendet,
die oben in bezug auf den Auffindungsschritt 104 beschrieben wurde.
Ungleich den Auffindungsverfahren, die in den '280- und '189-Anmel
dungen beschrieben sind, schneidet das Verfahren der vorliegenden Erfin
dung den aufgefundenen Kandidatbereich vor der Schrägstellungsbeseiti
gung nicht zu, weil das Zuschneiden eines schräggestellten, zweidimen
sionalen Strichcodes leicht seine Ecken beschädigen kann, wohingegen
das Zuschneiden eines zweidimensionalen Strichcodes, dessen Schräg
stellung richtig beseitigt ist, seine Ecken bewahren wird.
Das Verfahren zur Schrägstellungsabschätzung der '280-Anmeldung be
ruht auf der Auffindung von zwei Ankerbits an der oberen linken und der
unteren linken Ecke des zweidimensionalen Strichcodes, um den Schräg
stellungswinkel zu berechnen. Wie es darin weiter diskutiert wird, werden
Vorlagen dazu verwendet, die Ecken aufzufinden, und dieses Verfahren
versagt, wenn der Schrägstellungswinkel relativ groß, wie größer als an
nähernd fünf Grad Schrägstellung ist. Zusätzlich sind die Ecken des zwei
dimensionalen Strichcodes oft durch Rauschen verformt, was zu einem
ungenauen Wert für den durch das Verfahren der '280-Anmeldung abge
schätzten Schrägstellungswinkel führt.
Um diese Mängel zu beheben, offenbart die '189-Anmeldung eine Schräg
stellungsabschätztechnik auf der Grundlage einer Hough-Transformation.
Die Hough-Transformation ist eine parametrische Transformation, die da
zu verwendet werden kann, geometrische Merkmale, wie gerade Linien,
innerhalb einer Abbildung zu detektieren. Das Verfahren der '189-Anmel
dung zieht alle horizontalen Kantenpixel unter Verwendung einer vertika
len Schwarz- und Weiß-Maske über die gesamte Abbildung hinweg her
aus. Dann wird die Hough-Transformation mit allen identifizierten hori
zontalen Kantenpixeln durchgeführt, um den Winkel der längsten Kanten
linie zu berechnen, der den Schrägstellungswinkel des zweidimensionalen
Strichcodes darstellt. Dieses Verfahren erfordert eine bedeutende Verar
beitungszeitdauer, weil eine Bewegen einer vertikalen Maske über die ge
samte Abbildung hinweg, um jedes Kantenpixel zu detektieren, umfaßt,
daß auf jedes Abbildungspixel mehrere Male zugegriffen wird (die tatsäch
liche Anzahl von Zugriffen hängt von der Größe der Maske ab), und weil
das Hough-Transformationsverfahren eine breite Vielfalt von möglichen
Winkeln in 0,5-Grad-Inkrementen für alle Kantenpixel prüft, um den Win
kel der längsten Kantenlinie zu bestimmen. Weil der durch die Hough-
Transformation bestimmte Winkel dem Winkel der Linie entspricht, die die
größte Anzahl von Pixeln enthält, wird zusätzlich der Schrägstellungswin
kel nicht genau bestimmt, wenn Rauschen einer gezogenen Linie über den
zweidimensionalen Strichcode hinweg vorhanden ist. Dies ist der Fall, weil
die Rauschlinie die dominante Linie unter allen Kantenlinien sein wird,
was bewirkt, daß der Verfahrensschritt zu Schrägstellungsabschätzung
den Winkel gemäß dem Linienrauschen berechnet. Die Auswirkung einer
gezogenen Linie ist in Fig. 9A veranschaulicht, wobei Linie 400 entlang
des unteren Endes des zweidimensionalen Strichcodes 410 gezogen ist.
Weil die dominante Linie 430 in der horizontalen Kantenabbildung 420 die
dominante Linie ist, wird das Verfahren zur Schrägstellungswinkelab
schätzung der '189-Anmeldung den Schrägstellungswinkel falsch als
0,5 Grad berechnen.
Das Verfahren zur Schrägstellungsabschätzung der vorliegenden Erfin
dung beruht auch auf dem Hough-Transformationsverfahren mit zwei we
sentlichen Änderungen, um das Verfahren praktischer und zuverlässiger
zu gestalten. Zuerst wird ein Erkenner endlicher Zustände dazu verwen
det, die Kantenpixel des zweidimensionalen Strichcodes in einem einzigen
Durchgang zu detektieren, anstelle der vertikalen Maske, die bei der '189-
Anmeldung verwendet wird. Da die Schwarz-Weiß- und Weiß-Schwarz-
Übergänge innerhalb des Kandidatbereichs Kanten in den logischen Rei
hen und Spalten zugeordnet sind, wird ein gültiger Übergang durch eine
spezifizierte Anzahl von aufeinanderfolgenden schwarzen Pixeln gefolgt
durch eine spezifizierte Anzahl von aufeinanderfolgenden weißen Pixeln
(oder umgekehrt) durch einen zusätzlichen Erkenner endlicher Zustände
bestimmt, der in Fig. 8 in Diagrammform gezeigt ist. Dieses Verfahren ist
effizienter, weil es nur einmal auf jedes Abbildungspixel zugreift, und
kann dazu verwendet werden, entweder horizontale oder vertikale Kanten
oder beide zu detektieren. Zusätzlich erfordert der Erkenner endlicher Zu
stände nicht, daß der zweidimensionale Strichcode überhaupt irgendwel
che Ankerbits umfaßt, was das Verfahren zur Schrägstellungsabschät
zung der vorliegenden Erfindung bei der Anwesenheit einer geringfügigen
Verformung irgendeiner Ecke des abgetasteten, zweidimensionalen Strich
codes robuster macht.
Insbesondere überprüft der Erkenner endlicher Zustände nacheinander
jedes Pixel in jeder Reihe (oder Spalte), um vertikale (oder horizontale)
Kanten zu finden. Ein Kantentransistor oder -übergang ist als eine erste
Abfolge von mindestens N Pixeln in einer ersten Farbe gefolgt durch eine
zweite Abfolge von mindestens N Pixeln in der entgegengesetzten Farbe
definiert. Die Position des schwarzen Pixels, die den Kantenübergang be
wirkt, wird als der Ort der Kante verwendet. In einer Reihe, die beispiels
weise aus vier aufeinanderfolgenden weißen Pixeln gefolgt von vier aufein
anderfolgenden schwarzen Pixeln und weiter gefolgt von drei aufeinan
derfolgenden weißen Pixeln besteht, werden somit nur die fünf Pixel in der
Reihe als ein Kantenübergang bezeichnet, wenn N = 4. Wenn jedoch in
dem gleichen Beispiel N = 3, werden die fünften und die achten Pixel als
Kantenübergänge (Kanten) bezeichnet.
Im Zustandsdiagramm von Fig. 8 ist ein Erkenner endlicher Zustände, der
eine Maschine für bedingte Zustände ist, gezeigt, der für N gleich oder
größer als 3 arbeitet. In Fig. 8 beziehen sich die Bezeichnungen "B" und
"W" auf die Farbe (d. h., schwarz oder weiß) des Pixels an der besonderen
Position innerhalb der verarbeiteten Reihe oder Spalte. Somit geht in ei
nem Anfangszustand 500, wenn die Farbe des ersten Pixels schwarz ist,
der Prozeß von Zustand 500 zu Zustand 501 über. Wenn die Farbe des
ersten Pixels weiß ist, geht statt dessen der Prozeß von Zustand 500 zu
Zustand 502 über. Die Verarbeitung fährt durch die Zustandsmaschine
weiter fort, wie es weiter unten diskutiert wird, bis ein spezielles Zeichen
erreicht ist, das das Ende der besonderen verarbeiteten Reihe oder Spalte
angibt, an welchem Punkt die nächste Reihe oder Spalte vom Anfangszu
stand 500 verarbeitet wird. Bei jedem Zustand über Zustand 500 hinaus,
wird ein Positionsindex I inkrementiert, um die Position des Pixels zu ver
folgen, das innerhalb der besonderen Reihe oder Spalte untersucht wird.
Zusätzlich werden bestimmte andere Arbeitsgänge bei verschiedenen Zu
ständen durchgeführt, wie dies in Tabelle 1 angegeben und unten weiter
beschrieben ist.
Tabelle 1
Zustand |
Operation(en) |
501, 502 |
#Pixel = 2 |
503-506, 509, 510 |
#Pixel = #Pixel + 1 |
507
|
#Pixel = 2 |
Kanten_Kandidat = I-1 |
508
|
#Pixel = 2 |
Kanten_Kandidat = I |
511, 512 |
#Pixel = #Pixel + 1 |
Speichere(Kanten_Kandidat) |
Wenn bei Zustand 501 die Farbe des nächsten Pixels schwarz ist, geht die
Verarbeitung zu Zustand 503 über, wohingegen, wenn die Farbe des
nächsten Pixels weiß ist, die Verarbeitung zu Zustand 502 übergeht.
Wenn ebenso bei Zustand 502 die Farbe des nächsten Pixels weiß ist, geht
die Verarbeitung zu Zustand 504 über, wohingegen, wenn die Farbe des
nächsten Pixels schwarz ist, die Verarbeitung zu Zustand 501 übergeht.
Wie es in Tabelle 1 angegeben ist, ist bei den Zuständen 501 und 502 die
Anzahl von aufeinanderfolgenden Pixeln, denen begegnet wird, auf 2 fest
gesetzt (für zwei aufeinanderfolgende schwarze Pixel bei Zustand 501 und
zwei aufeinanderfolgende weiße Pixel bei Zustand 502). Vom Zustand 501
aus geht die Verarbeitung zu Zustand 503 über, wenn das nächste Pixel
schwarz ist, und zu Zustand 502, wenn das nächste Pixel weiß ist. Bei
Zustand 503 fährt die Verarbeitung bei Zustand 503 fort, solange jedes
folgende Pixel, dem begegnet wird, schwarz ist und die Anzahl der Pixel
kleiner als N bleibt. Jedesmal, wenn Zustand 503 durchlaufen wird, wird
der Pixelzählwert, d. h., #Pixel in Tabelle 1, inkrementiert. Wenn das N-te
aufeinanderfolgende schwarze Pixel erreicht wird, geht die Verarbeitung zu
Zustand 505 über. Wenn einem weißen Pixel vor N aufeinanderfolgenden
schwarzen Pixeln begegnet wird, geht die Verarbeitung zu Zustand 502
über. Die Verarbeitung durchläuft die Zustände 502, 504 und 506 auf
analoge Weise, wenn zuerst einer Reihe von weißen Pixeln begegnet wird,
wobei die Pixelfarben umgekehrt sind.
Bei Zustand 505 fährt die Verarbeitung bei Zustand 505 für jedes folgende
schwarze Pixel fort, wobei der Pixelzählwert für jeden Durchlauf inkre
mentiert wird und tatsächlich nach dem letzten schwarzen Pixel in der ge
genwärtigen Abfolge gesucht wird. Wenn bei Zustand 505 einem weißen
Pixel begegnet wird, geht die Verarbeitung zu Zustand 507 über, wo der
Pixelzählwert auf 2 gesetzt wird und der Index des letzten schwarzen Pi
xels als ein "Kanten_Kandidat" gesetzt wird. Der Kanten_Kandidat ist das
letzte schwarze Pixel in einer Abfolge von N oder mehr aufeinanderfolgen
den schwarzen Pixeln. Bei Zustand 507 wird der Pixelzählwert auf 2 zu
rückgesetzt. Wenn das Pixel, dem bei Schritt 507 begegnet wird, schwarz
ist, geht die Verarbeitung zurück zu Zustand 501, um ein Zählen von
schwarzen Pixeln zu beginnen, wobei tatsächlich der Kanten_Kandidat
verworfen wird, weil die notwendige Bedingung, d. h. mindestens N aufein
anderfolgende schwarze Pixel gefolgt von mindestens N aufeinanderfolgen
den weißen Pixeln, nicht erfüllt worden ist. Wenn das Pixel, dem bei Zu
stand 507 begegnet wird, weiß ist, geht die Verarbeitung zu Zustand 509
über, wo der Pixelzählwert inkrementiert wird. Die Verarbeitung fährt bei
Zustand 509 fort, solange weißen Pixeln begegnet wird und der Pixelzähl
wert kleiner als N bleibt. Wenn einem schwarzen Pixel zu irgendeiner Zeit,
bevor das N-te weiße Pixel erreicht ist, begegnet wird, kehrt die Verarbei
tung zu Zustand 501 zurück, wobei der Kanten_Kandidat verworfen wird,
weil die notwendige Bedingung von mindestens N aufeinanderfolgenden
weißen Pixeln nicht erfüllt ist. Wenn das N-te aufeinanderfolgende weiße
Pixel erreicht ist, geht die Verarbeitung zu Zustand 511 über, bei dem der
Kantenkandidat gespeichert wird, und der Pixelzählwert wird inkremen
tiert. Wie es oben mit Bezug auf die Zustände 502, 506 und 506 festge
stellt wurde, ist die Verarbeitung durch die Zustände 508, 510 und 512
analog zu derjenigen, die oben mit Bezug auf die Zustände 507, 509 und
511 diskutiert wurde, wobei die Pixelfarben umgekehrt sind. Die einzige
Ausnahme ist, daß der Kanten_Kandidat bei Zustand 508 auf den Index
des gegenwärtigen Pixels gesetzt ist, während der Kanten_Kandidat bei
Zustand 507 auf den Index des vorhergehenden Pixels gesetzt ist, wie es
in Tabelle 1 angegeben ist, da nur schwarze Pixel als Kanten bezeichnet
werden können.
Wenn als nächstes bei Zustand 511 einem schwarzen Pixel begegnet wird,
geht die Verarbeitung zu Zustand 508 über und dieses schwarze Pixel
wird als ein Kanten_Kandidat festgelegt, da mindestens N aufeinanderfol
genden weißen Pixeln begegnet worden ist (nur schwarze Pixel können
Kanten sein). Nach Zustand 508 fährt die Verarbeitung durch die Zustän
de 510 und 512 fort, auf eine ähnliche Weise wie die Verarbeitung, die bei
den Zuständen 509 und 511 auftrat, um zu bestimmen, ob es N aufein
anderfolgende schwarze Pixel gibt, die mindestens N aufeinanderfolgenden
weißen Pixeln folgen, und wenn dies der Fall ist, wird der Kanten Kandi
dat als eine Kante bei Schritt 512 gespeichert. Wenn bei Zustand 511 ei
nem weißen Pixel begegnet wird, geht die Verarbeitung zu Zustand 506
über, um das letzte weiße Pixel in der gegenwärtigen Abfolge zu suchen,
und geht dann zu Zustand 508 über, sobald das letzte weiße Pixel aufge
funden wurde, um zu bestimmen, ob eine Abfolge von mindestens N
schwarzen Pixeln folgt. Analoge Schritte treten mit Bezug auf die Verar
beitung von Zustand 512 durch die Zustände 505, 507, 509 und 511 auf.
Der Kantendetektionsprozeß fährt durch die Reihe oder Spalte aus Pixeln
fort, wobei nach N aufeinanderfolgenden schwarzen (oder weißen) Pixeln
und dann nach N aufeinanderfolgenden weißen (oder schwarzen) Pixeln
einer zweiten Farbe gesucht wird, bis das spezielle Zeichen erreicht ist,
das das Ende der Reihe oder Spalte bezeichnet. An jedem Punkt, an dem
N aufeinanderfolgende schwarze (oder weiße) Pixel gefunden werden, dem
N aufeinanderfolgende weiße (oder schwarze) Pixel folgen, wird das
schwarze Pixel an der Grenze zwischen den beiden Abfolgen als eine Kante
festgelegt.
Sobald die Kantenpixel (entweder horizontal, vertikal oder sowohl hori
zontal als auch vertikal) durch den Erkenner endlicher Zustände detek
tiert werden, werden sie in den Hough-Bereich unter Verwendung des
gleichen Prozesses, der in der '189-Anmeldung beschrieben ist, abgebildet.
Der Erkenner endlicher Zustände verbessert die Verarbeitungsgeschwin
digkeit des Schrittes zur Schrägstellungsabschätzung, beeinflußt jedoch
nicht die Auswirkung von Linienrauschen. Wenn, wie es in Fig. 9A gezeigt
ist, eine Linie 400 gezogen wird, die durch einen Strichcode 410 hindurch
verläuft, wird sie die dominante Kantenlinie 430 innerhalb der Kantenab
bildung 420 werden und wird ein falsches Ergebnis für den Schrägstel
lungswinkel erzeugen, wenn die Linie nicht parallel zur horizontalen (oder
vertikalen, wenn vertikale Kanten detektiert werden) Achse des Strich
codes selbst gezogen ist. Die Linie 430 in Fig. 9A bewirkt, daß der Schräg
stellungswinkel falsch als 0,5 Grad abgeschätzt wird. Um den Einfluß ei
ner derartigen beliebig gezogenen Linie beim Abschätzen des Schrägstel
lungswinkels des zweidimensionalen Strichcodes zu verringern, unterteilt
das Verfahren der vorliegenden Erfindung die horizontale Kantenabbil
dung, die von dem Erkenner endlicher Zustände geschaffen wird, in eine
Anzahl von Bereichen. Der Schrägstellungswinkel wird für jeden Bereich
bestimmt, und es wird ein Wahlschema dazu verwendet, den Schrägstel
lungswinkel zu bestimmen, der am wahrscheinlichsten die tatsächliche
Schrägstellung repräsentiert. Bei dem bevorzugten Verfahren wird die ho
rizontale Kantenabbildung in drei Bereiche unterteilt, wie einen oberen
Bereich 440, einen mittleren Bereich 450 und einen unteren Bereich 460
der horizontalen Kantenabbildung 420 von Fig. 9B. Der Schrägstellungs
winkel wird für jeden Bereich bestimmt, d. h., fünf Grad für den oberen
Bereich 440 und den mittleren Bereich 450 und 0,5 Grad für den unteren
Bereich (aufgrund der Kantenlinie 430, die durch die gezogene Linie 400
hervorgerufen wird), und der Medianwert, d. h., vorzugsweise fünf Grad,
wird als die tatsächliche Schrägstellungswinkelabschätzung gewählt. Wie
der Fachmann feststellen wird, gibt es viele Möglichkeiten, das Wahl
schema zu implementieren. Bei der vorliegenden Erfindung wird der Me
dianwert verwendet, weil er den geringsten Overhead im Hinblick auf die
Verarbeitungsgeschwindigkeit liefert. Andere Verfahren zum Bestimmen
des Schrägstellungswinkels umfassen den am häufigsten auftretenden
Schrägstellungswinkel (d. h., Majoritätswahl) oder komplexere Gewich
tungstechniken (d. h. gewichtete Wahl). Dieses Mehrbereichs-Schräg
stellungsabschätzschema ist robuster gegenüber beliebigem Linienrau
schen als Verfahren nach dem Stand der Technik, weil, wenn Linienrau
schen vorhanden ist, das die Schrägstellungsabschätzung beeinflussen
wird, es wahrscheinlich ist, daß nur ein einziger Bereich beeinflußt wird,
wie es durch die Linie 400 in Fig. 9B veranschaulicht ist. Wenn Linienrau
schen vorhanden ist, das mehr als einen Bereich überquert, muß es unter
einem relativ großen Winkel in bezug auf die Kantenpixel in der horizon
talen Kantenabbildung sein und wird somit keine dominante Linie sein,
die die Schrägstellungswinkelabschätzung beeinflußt. Wie der Fachmann
feststellen wird, kann auf der Grundlage der Detektion von sowohl hori
zontalen als auch vertikalen Kanten die Kantenabbildung in sowohl hori
zontale als auch vertikale Bereiche zur Prüfung durch eines der Wahl
schemata unterteilt sein.
Wie es oben diskutiert wurde, gestattet die Verwendung eines Erkenners
endlicher Zustände, um die Kantenpixel aufzufinden, gefolgt durch den
Schrägstellungsabschätzschritt auf der Grundlage der Hough-Transfor
mation, daß das Verfahren der vorliegenden Erfindung die Notwendigkeit
für Ankerbits in dem zweidimensionalen Strichcode beseitigt, was die
Auswirkung von Eckenverformung des zweidimensionalen Strichcodes
verringert. Zusätzlich erhöht das Mehrbereichs-Wahlschema die Immuni
tät des Verfahrens zur Schrägstellungsabschätzung der vorliegenden Er
findung gegenüber Hintergrundrauschen, insbesondere gezogene Linien,
weiter.
Sobald der Schrägstellungswinkel abgeschätzt worden ist, wird die
Schrägstellung des Kandidatbereichs beseitigt, wie es oben mit Bezug auf
Schritt 108 von Fig. 5 diskutiert ist, und in der '189-Anmeldung ausführ
licher beschrieben ist, unter Verwendung eines Scher-Dreh-Verfahrens für
kleinere Schrägstellungsniveaus und alternativ unter Verwendung eines
trigonometrischen Verfahrens für größere Schrägstellungsniveaus.
Nach dem Korrigieren des Schrägstellungswinkels wird die Umgrenzung
des zweidimensionalen Strichcodes wahlweise durch den Zuschneide
schritt 110 von Fig. 5 bestimmt, der das gleiche Verfahren von innen nach
außen verwendet, das oben mit Bezug auf den Auffindungsschritt 104 be
schrieben ist, obwohl ein engerer Schwellenwert dazu verwendet wird, die
Gültigkeit des Kandidatbereichs des zweidimensionalen Strichcodes zu
prüfen, da die Beseitigung der Schrägstellung bereits aufgetreten ist und
es unwahrscheinlich ist, daß irgendwelche gültigen Bits weggeschnitten
sind. Sobald der Kandidatbereich zugeschnitten ist, werden dessen Ab
messungen mit den erwarteten Abmessungen des zweidimensionalen
Strichcodes verglichen. Wenn sich die Abmessungen stark unterscheiden,
ist kein zweidimensionaler Strichcode in dem Kandidatbereich vorhanden,
und die Verarbeitung geht zurück zu dem Auffindungsschritt 104, wie es
in Fig. 5 gezeigt ist. Wenn die Abmessungen in einen Bereich fallen, der
nahe bei der Größe des zweidimensionalen Strichcodes ist, geht die Verar
beitung zum Leseschritt 112 über.
An diesem Punkt ist der abgetastete, zweidimensionale Strichcode aufge
funden, dessen Schrägstellung beseitigt und er eng zugeschnitten worden.
Der nächste Schritt ist es, die Datenbits auszulesen, was den zweidimen
sionalen Strichcode aus dem Abbildungsbereich, in dem jedes Bit als eine
Ansammlung schwarzer oder weißer Pixel dargestellt ist, bei der bevor
zugten Ausführungsform in ein 20 × 20-Bit-Array aus logischen Werten
transformiert. Es ist anzumerken, daß, da die zweidimensionale Strich
codesymbologie taktfrei ist, es keine vorherbestimmten Referenzmuster
gibt, um zu helfen, den Leseprozeß zu orientieren. Jedoch ist die logische
Größe des zweidimensionalen Strichcodes im voraus bekannt, beispiels
weise ein Quadrat, das bei der bevorzugten Ausführungsform 20 Bits auf
jeder Seite mißt. Weil diese Bits in der Markierung während des Codier
prozesses pseudo-stochastisiert werden, wird außerdem irgendeine be
sondere Reihe oder Spalte aus Pixeln eine stärkere Verteilung von
Schwarz-Weiß- und Weiß-Schwarz-Übergängen in der Nähe der Kanten in
den logischen Reihen und Spalten und eine geringere Verteilung in der
Nähe der Mitten aufweisen. Dieser Prozeß ist vollständig in der '280-An
meldung beschrieben. Sobald horizontale und vertikale Mittellinien durch
den in der '280-Anmeldung beschriebenen Prozeß hergestellt sind, werden
die Bits aus dem zweidimensionalen Strichcode ausgelesen, indem der Pi
xelwert aufgezeichnet wird, der an der Schnittstelle jeder horizontalen und
vertikalen Mittellinie liegt (wobei beispielsweise jeder "weiße" Pixelwert =
"0" und jeder "schwarze" Pixelwert = "1" gesetzt wird). Die '189-Anmeldung
beschreibt mit Bezug auf die Fig. 18A-18D ein verbessertes Taktungsver
fahren zum Auslesen der Bits aus dem zweidimensionalen Strichcode, das
die Fehlerrate reduziert, indem die Bits in jeder der vier möglichen Rich
tungen gelesen werden, wodurch vier unterschiedliche Arrays geschaffen
werden, die Daten darstellen, und das Array zur Ausgabe ausgewählt
wird, bei dem der ECC-Schritt 37 von Fig. 3 zeigt, daß es die geringste An
zahl von Fehlern aufweist. Wenn der Leseschritt versagt, wie es beispiels
weise von dem ECC bestimmt wird, kann die Verarbeitung hier wieder zu
rück zu dem Auffindungsschritt 104 übergehen, wie es in Fig. 5 gezeigt
ist.
Zusammengefaßt sind zweidimensionale Strichcodes, die von einer Ruhe
zone aus weißem Raum umgeben sind, die einen Rand umfassen oder
nicht umfassen kann, wobei jeder Strichcode codierte, digitale Information
in einem Bitmuster aufweist, das vorzugsweise stochastisierte, codierte
Datenbits darstellt, auf ein bedrucktes Medium gedruckt. Um die codierte,
digitale Information aus dem bedruckten Medium herauszuziehen, wird
das bedruckte Medium abgetastet, dann wird das Bitmuster innerhalb des
bedruckten Mediums aufgefunden, indem ein Fenster schrittweise in ei
nem vorherbestimmten Muster über das bedruckte Medium hinweg be
wegt wird. Bei jedem Schritt wird der Teil des bedruckten Mediums, der
von dem Fenster umgeben ist, geprüft, um zu bestimmen, ob er zu einem
Charakteristikum oder mehreren Charakteristiken des Bitmusters paßt.
Die Schrägstellung des Bitmusters, falls eine vorhanden ist, wird be
stimmt, indem ein Erkenner endlicher Zustände in Kombination mit einer
Hough-Transformationsberechnung verwendet wird. Bei einer Ausfüh
rungsform wird der Kandidatbereich in mehrere horizontale Bereiche un
terteilt, vorläufige Schrägstellungswinkel werden für jeden Bereich be
rechnet, und der tatsächliche Schrägstellungswinkel wird unter Verwen
dung eines Wahlschemas ausgewählt. Sobald der Schrägstellungswinkel
berechnet worden ist, wird die Schrägstellung des Bitmusters, falls not
wendig, beseitigt, das Bitmuster wird zugeschnitten und die stochasti
sierte, digitale Information wird aus dem Bitmuster ausgelesen. Schließ
lich werden in dem Prozeß, der jegliche entdeckte Fehler korrigiert
und/oder aufzeichnet, die digitalen Informationen entstochastisiert und
jegliche Fehlerkorrekturcodes entfernt, wodurch die ursprüngliche, co
dierte, digitale Information reproduziert wird.