DE19964415B4 - Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes - Google Patents

Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes Download PDF

Info

Publication number
DE19964415B4
DE19964415B4 DE19964415A DE19964415A DE19964415B4 DE 19964415 B4 DE19964415 B4 DE 19964415B4 DE 19964415 A DE19964415 A DE 19964415A DE 19964415 A DE19964415 A DE 19964415A DE 19964415 B4 DE19964415 B4 DE 19964415B4
Authority
DE
Germany
Prior art keywords
area
bit pattern
bar code
pixels
skew angle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19964415A
Other languages
English (en)
Inventor
Yue Ma
Junichi Kanai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/212,243 external-priority patent/US6082619A/en
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Application granted granted Critical
Publication of DE19964415B4 publication Critical patent/DE19964415B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1456Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore

Landscapes

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

Abstract

Die Erfindung betrifft ein Verfahren zum Auffinden eines digitalen Bitmusters innerhalb einer abgetasteten Binärabbildung mit den Schritten, dass ein Fenster über die Abbildung schrittweise in einem vorherbestimmten Muster bewegt wird, bei jedem Schritt ein Teil der Abbildung, der von dem Fenster umgeben ist, geprüft wird, um zu bestimmen, ob der Teil zu einem Charakteristikum oder mehreren Charakteristiken des Bitmusters passt, und die Umgrenzungen des Bitmusters als die Umgrenzungen des Fensters festgelegt werden, wenn der Teil zu dem einen Charakteristikum oder den mehreren Charakteristiken des Bitmusters passt.

Description

  • Die Erfindung betrifft im allgemeinen ein verbessertes Verfahren zum Auffinden und Lesen innerhalb einer Abbildung gedruckter, zweidimensionaler Strichcodes.
  • Im Gegensatz zu den häufigen Voraussagen, daß wir eines Tages in einer "papierlosen Gesellschaft" leben werden, spielen Papier und andere bedruckte Medien eine zunehmend wichtige Rolle als ein billiges, effektives und zweckmäßiges Kommunikationsmittel. Eine grundlegende Einschränkung bei Papier ist jedoch, daß es vom Standpunkt des Computers aus gegenwärtig ein Format allein zur Ausgabe ist. Während Papier das bevorzugte 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 worden 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 Zeichen 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 schwierig 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 Produktkennzeichnungssysteme, 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 Papierdokumente sind spezielle Markierungen oder Muster in dem Papier dazu verwendet worden, Information über ein in Beziehung stehendes Ausrüstungsstück bereitzustellen, beispielsweise das Auftragssteuerungsblatt zur Bildverarbeitung, wie es in der US 5 051 779 A gelehrt wird. Ähnlich sind Kennzeichnungsmarkierungen, die codierte Information umfassen, auf die Fläche vorgedruckter Formulare gedruckt worden, wie es in der US 5 060 980 A von Johnson et al beschrieben worden ist. Diese schreibt vor, dass 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 elektronisch in dem Computer gespeichert ist. Ein weiteres System ist in der US 5 091 966 A von Bloomberg et al beschrieben, dass das Decodieren von skulpturförmigen Codes lehrt, die digital codierte Daten auf Papier sind. Die Kennzeichnungscodes können von einem Computer gelesen werden und vereinfachen dadurch die Computerhandhabung des Dokuments, 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 codierte Information darstellen, in der Technik ebenfalls bekannt. Jede Datenlinienreihe besteht aus einer Reihe aus schwarzen und weissen Pixeln oder Bildpunkten, die jeweils eine binäre "0" bzw. "1" darstellen. Die Orientierung oder Ordnung der Bits in jeder Reihe bestimmt die darin gespeicherten digitalen Daten. Die in der Gesamtheit der Reihen gespeicherten Daten definieren die Daten, die in dem zweidimensionalen Strichcode enthalten sind. Um den Strichcode zu lesen, führt der Benutzer normalerweise 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 zweidimensionalen Datenstreifenstrichcode mit Reihen aus Datenlinien mit Papiermedien verwendet, wird in der US 4 692 603 A , US 4 754 127 A und US 4 782 221 A gefunden. Bei diesem System bestehen zweidimensionale Strichcodes aus Datenlinienreihen, die dazu verwendet werden, Computerprogramme und Daten auf Papier zu codieren, und unter Verwendung eines Handlesegerätes eingelesen oder gescannt 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 beschä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 Beispiele von zweidimensionalen Strichcodes umfassen: US 5 083 214 A , die ein zweidimensionales Strichcodesystem beschreibt, das innerhalb der codierten Daten selbst eingebettete Taktbits erfordert, und US 4 924 078 A die ein zweidimensionales Strichcodesystem beschreibt, bei dem ein Orientierungs- und/oder Zeitgebungszellenrand innerhalb des Körpers des Strichcodes selbst enthalten ist.
  • In der nachveröffentlichten US 5 862 270 A ist ein taktloser, zweidimensionaler Strichcode mit einem Rand auf mindestens einer der vier Seiten des Strichcodes beschrieben, wobei der Rand ausserhalb der Umgrenzungen des Strichcodes selbst angeordnet ist.
  • Wie es in 1A hierin abgebildet ist, ist ein zweidimensionaler Strichcode 10 an der unteren rechten Ecke einer bedruckten Seite 11 gedruckt, obwohl diese Position völlig beliebig ist. Bei der in 1A abgebildeten Ausführungsform ist der restliche Teil der bedruckten Seite 11 von gedrucktem Text 12 eingenommen. Jedoch wird ein Fachmann feststellen, dass irgendeine Art eines computererzeugten, bedruckten Materials, beispielsweise ein Tabellenkalkulationsblatt oder Graphiken, den gedruckten Text 12 ersetzen kann. Der zweidimensionale Strichcode 10, der hierin in 1B abgebildet ist, umfasst einen Rand 13, der an all seinen vier Seiten vorhanden ist. Wie in der US 5 862 270 A vollständig beschrieben ist, ist der Rand 13, obwohl er nur auf einer der vier Seiten des zweidimensionalen Strichcodes 10 notwendig ist, aus ästhetischen Gründen typischerweise auf allen vier Seiten enthalten.
  • In der nachveröffentlichten US 6 201 901 B1 ist ein taktloser, zweidimensionaler Strichcode ohne eine Rand (hierin in 2 gezeigt) zusammen mit Verfahren zum Drucken und Lesen desselben beschrieben. In der US 6 201 901 B1 sind zwei alternative Symbologien für den Strichcode dargestellt, und zwar eine erste Symbologie, die erfordert, dass die vier Eckenbits 21 schwarz sind (wenn auf einen weissen Hintergrund gedruckt wird), und eine zweite Symbologie, in der keine schwarzen Eckenbits 21 erforderlich sind. Als solche sind zwei alternative Verfahren zum Lesen des Strichcodes von 2 in der US 6 201 901 B1 beschrieben, und zwar ein erstes Verfahren, das den Strich code verarbeitet, der keine Eckenbits erfordert, wie es durch das Flussdiagramm in 8A darin und der damit in Beziehung stehenden Beschreibung beschrieben ist, und ein zweites Verfahren, das den Strichcode verarbeitet, der Eckenbits benötigt, wie es durch das Flussdiagramm in 8B darin und die damit in Beziehung stehende Beschreibung beschrieben ist. Obwohl die beiden Verfahren zum Lesen des Strichcodes, die in der US 6 201 901 B1 beschrieben sind, befriedigende Ergebnisse liefern, wurde es herausgefunden, dass, wenn der Strichcode auf eine Seite mit einem komplexen Hintergrund gedruckt war, die durch den Auffindungsschritt 70 der 8A und 8B der US 6 201 901 B1 , die darin in Verbindung mit den 9A und 9B beschrieben ist, gelieferten Ergebnisse weniger als optimal waren, insbesondere bei der Anwesenheit von Einzellinienrauschzustä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 gewartete Drucker gedruckten Dokumenten auftreten kann). Zusätzlich wurde herausgefunden, dass Änderungen bei dem Schritt der Abschätzung des Schrägstellungswinkels über Hough-Transformation 71 der 8A und 8B der US 6 201 901 B1 vorgenommen werden könnten, um die Verarbeitungsgeschwindigkeit zu erhöhen. Wegen der zunehmenden Verarbeitungsgeschwindigkeit des Schrittes der Abschätzung des Schrägstellungwinkels über Hough-Transformation der vorliegenden Erfindung ist auch der Schritt der Abschätzung des Schrägstellungswinkels zur Vorlagenanpassung 71 der 8B der US 6 201 901 B1 nicht länger erforderlich, der es erfordert, dass der Strichcode Eckenbits umfasst, wodurch die Zahl von Bits verkleinert wird, die innerhalb des Strichcodes gespeichert werden kann, und eine weniger als optimale Verarbeitungsgeschwindigkeit aufweist.
  • Der Erfindung liegt die Aufgabe zugrunde, ein verbessertes Verfahren zum Decodieren stochastisierter Informationen bereitzustellen, das ein verbessertes Verfahren zum Bestimmen des Schrägstellungswinkels eines digitalen Bitmusters verwendet. Diese Aufgabe wird mit den Merkmalen der Patentansprüche gelöst.
  • Das erfindungsgemäße Verfahren zum Decodieren von Information, die digital in der Form eines randlosen, taktfreien, zweidimensionalen Strichcodes codiert ist, der auf ein bedrucktes Medium gedruckt ist, ist von Vorteil, da es bei Anwesenheit komplexer Hintergründe arbeiten kann.
  • Das erfindungsgemäße Verfahren zum Decodieren von Information, die digital in der Form eines randlosen, taktfreien, zweidimensionalen Strichcodes codiert ist, der auf ein bedrucktes Medium gedruckt ist, ist von Vorteil, da es eine verbesserte Verarbeitungsgeschwindigkeit aufweist.
  • Das erfindungsgemäße Verfahren ist zum Decodieren von Information von Vorteil, die digital in der Form eines randlosen, taktfreien, zweidimensionalen Strichcodes codiert ist, der auf ein bedrucktes Medium gedruckt ist und keine Eckenbits umfasst.
  • Das erfindungsgemäße Verfahren ist zum Decodieren von Information von Vorteil, die digital in der Form eines zweidimensionalen Strichcodes codiert ist, der auf ein bedrucktes Medium gedruckt ist, und der einen Rand umfassen kann oder auch nicht umfassen kann.
  • Diese und andere Ziele werden durch ein Verfahren zum Decodieren stochastisierter Information erreicht, die auf ein von einem Menschen lesbares Medium in der Form eines Pixel- oder Bitmusters (Bitmaps) aus Reihen und Spalten aus Datenpixeln gedruckt ist, die codierte Datenbits darstellen. Jedes Datenpixel weist entweder eine erste oder eine zweite Farbe auf. Das Bitmuster weist eine vorherbestimmte Größe auf und ist von einem Außernbereich aus Pixeln mit einer vorherbestimmten, im wesentlichen gleichmäßigen Farbe umgeben. Ein Rand aus einer kontrastbildenden 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 Schwellenwertintensitätspegel auf der Grundlage der Grauskalendarstellung festgelegt 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 Bitmusters werden aufgefunden oder lokalisiert, indem ein Fenster schrittweise in einem vorherbestimmten Muster über die Binärdarstellung auf Pixelbasis 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 Umgrenzungen des Fensters festgelegt, wenn der Teil zu der einen Charakteristik 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 verringert wird. Das digitalisierte Bitmuster wird danach gestutzt oder zugeschnitten, 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 entstochastisiert, und es wird eine Fehlerkorrektur angewandt, um eine im wesentlichen fehlerfreie digitale Darstellung der codierten Information zu erzeugen.
  • 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 Ruhebereich, der dem Außenbereich entspricht. Das Prüfen umfaßt das getrennte Prüfen von Teilen der Darstellung, die von dem Kernbereich und dem Ruhebereich umgeben sind, um zu bestimmen, ob die Teile zu einem Charakteristikum oder mehreren Charakteristiken des Bitmusters bzw. des Außenbereichs passen. Vorzugsweise wird die Pixelverteilung jedes Bereichs 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 Pixelverteilung 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 Ruhebereich 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 Kandidatbitmusters darin zu bestimmen, wenn die äußeren Umgrenzungen mit den vorherbestimmten Abmessungen des Bitmusters verglichen werden, 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 vertikalen Kanten innerhalb des aufgefundenen Kandidatbereichs vorzugsweise unter Verwendung eines Erkenners endlicher Zustände aufgefunden werden. Die Koordinaten einer horizontalen oder vertikalen Linie innerhalb des aufgefundenen Kandidatbereichs, die die horizontalen oder vertikalen 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 Linie 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 berechnet 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 berechnet, 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 beschrieben, in dieser ist bzw. sind:
  • 1A ein Diagramm, das schematisch den zweidimensionalen Strichcode der '280-Anmeldung veranschaulicht, der auf eine Seite aus gedrucktem Text gedruckt ist, und 1B ein Beispiel des zweidimensionalen Strichcodes der '280-Anmeldung,
  • 2 ein Beispiel eines zweidimensionalen Strichcodes gemäß der vorliegenden Erfindung,
  • 3 ein Flußdiagramm, das die Schritte zum Codieren und Decodieren von Information auf einem bedruckten Medium gemäß der vorliegenden Erfindung zeigt,
  • 4 ein zweidimensionaler Strichcode, der auf ein bedrucktes Medium mit einem komplexen Hintergrund gedruckt ist, wobei eine Ruhezone um den Strichcode herum vorgesehen ist,
  • 5 ein Flußdiagramm, das beschreibt, wie der zweidimensionale Strichcode gemäß der vorliegenden Erfindung zu lesen ist,
  • 6 die Auslegung des Schiebefensters, das als Teil des Auffindungsverfahrens der vorliegenden Erfindung verwendet wird,
  • 7A, 7B und 7C drei alternative Ausführungsformen von Suchmustern, die als Teil des Auffindungsverfahrens der vorliegenden Erfindung verwendet werden,
  • 8 ein Schaubild des Erkenners endlicher Zustände, der dazu verwendet wird, Kantenpixel bei dem Verfahren zur Schrägstellungsabschätzung der vorliegenden Erfindung zu detektieren,
  • 9A ist ein Diagramm eines Verfahrens zur Schrägstellungswinkelabschätzung nach dem Stand der Technik auf der Grundlage der Verwendung einer einzigen Linie innerhalb der Kantenabbildung, und 9B ist ein Diagramm des Wahlschemaverfahrens, das als Teil des Verfahrens zur Schrägstellungswinkelabschätzung der vorliegenden Erfindung verwendet wird.
  • Wie es in der US 5 625 721 A und US 5 703 972 A sowie in der US 5 748 807 A 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 Dokumentinformation kann dann über einen zweidimensionalen Strichcode bereitgestellt werden, der auf der Fläche einer gedruckten Version des Dokuments erzeugt ist. Fortschrittliche Codier- und Druckauflösungsfähigkeiten, die gegenwärtig verfügbar sind, können bis zu 30 000 Bits Information auf dem Raum von einem einzigen Quadratzoll (645,16 mm2) aufnehmen. Deshalb kann man, wie es durch die oben genannten Anmeldungen gelehrt wird, theoretisch die gesamten Dokumentinhalte codieren, wobei dies nur durch die Menge an Raum auf der Dokumentfläche begrenzt ist, die man dem zweidimensionalen Strichcode zu opfern gewillt ist. Ein Strichcodelesegerät in Verbindung mit einem optischen Seitenscanner 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 Decodier-Software ausgestattet ist. Die decodierte Information kann dann von dem Abtastsystem dazu verwendet werden, eine neue Version des Dokuments zu schaffen oder die Erkennung, Wiedergabe und Fehlerkorrektur 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 Abtastauflö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 8 diskutierten 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 fotografische Bildgebung.
  • Der Rand 13, der bei dem zweidimensionalen Strichcode 10 von 1 verwendet wird, war kein kritisches Merkmal der Erfindung, die in der US 5 862 270 A offenbart ist, da der grösste Teil der darin beschriebenen Schlüsselverfahrensschritte funktioniert, ob ein Rand vorhanden ist oder nicht. Jedoch wurde der Rand 10 bei der US 5 862 270 A von den Schritten der Schrägstellungsabschätzung und der Schrägstellungsbeseitigung verwendet.
  • 2 veranschaulicht ein Beispiel der zweidimensionalen Strichcodesymbologie, die bei der US 6 201 901 B1 eingeführt wurde. Ein zweidimensionaler Strichcode 20 umfasst einen codierten Satz aus Datenbits in einem zweidimensionalen Gitter. Typischerweise wird jedes Datenbit; das codiert ist, als eine Matrix aus schwarzen oder weissen Pixeln 23 gedruckt. Eine Pixelmatrix, die ein Datenbit darstellt, ist quadratisch und kann so klein wie eine 1 × 1-Matrix bis so gross wie eine 6 × 6-Matrix oder grösser 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ührungsform ist der zweidimensionale Strichcode 20 ein 20 × 20-Array aus Datenbits, wobei jedes Bit in einer 9 × 9-Pixelmatrix gespeichert ist, obwohl festgestellt werden kann, dass die Grösse flexibel ist, und dass die ein zige Anforderung an die Grösse ist, dass der Leseprozess die Grösse des codierten Arrays kennt.
  • In der US 6 201 901 B1 sind zwei unterschiedliche Ausführungsformen der Strichcode-Symbologie beschrieben. Bei der ersten Ausführungsform sind die vier Eckenbits 21 immer schwarz (wenn auf einen weissen Hintergrund gedruckt wird). Die vier Eckenbits 21 bei der ersten Ausführungsform werden "Ankerbits" genannt. Die restlichen Datenbits bei der ersten Ausführungsform der US 6 201 901 B1 sind pseudostochastisiert (pseudorandomized) und können irgendeine Kombination gewünschter Information und Fehlerkorrekturbits enthalten. Die Symbologie der ersten Ausführungsform 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 US 6 201 901 B1 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, wobei in diesem Fall für die Speicherung von bis zu 50 Bytes (400 Bits) Information gesorgt wird. Bei der zweiten Ausführungsform sind alle Datenbits pseudo-stochastisiert und können irgendeine Kombination gewünschter Informations- und Fehlerkorrekturbits enthalten. Vorzugsweise wird ein herkömmlicher Hamming-Code (7, 4) 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.
  • 3 veranschaulicht die Schritte, die in dem Codier/Decodier-Prozess enthalten sind. Mit der Ausnahme, wie es hierin in bezug auf die Verfahren der vorliegenden Erfindung beschrieben ist, ist jeder Schritt ausführlicher in der US 5 862 270 A und/oder in der US 6 201 901 B1 beschrieben. 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 schliesslich bei Schritt 33 gedruckt. Der Decodierprozess wiederholt diese Schritte in umgekehrter Reihenfolge, wobei der gedruckte, zweidimensionale Strichcode bei Schritt 34 gelesen wird, bei Schritt 35 aus einer zweidimensionalen auf eine eindimensionale Darstellung abgebildet wird, bei Schritt 36 entstochastisiert wird, und schliesslich 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.
  • 5 veranschaulicht die Schritte bei dem Leseverfahrensschritt der vorliegenden Erfindung. Zuerst wird die gescannte oder abgetastete Grauskalenabbildung durch den Schwellenwertbildungsschritt 100 in schwarz und weiss 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 werden als schwarz (oder weiss) angesehen, und Pixel mit einem Intensitätspegel, der kleiner als der ausgewählte Intensitätspegel ist, werden als weiss (oder schwarz) angesehen. Um den Prozess zu beschleunigen, wird als nächstes wahlweise die Auflösung der gescannten oder abgetasteten Eingangsabbildung 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 herausgezogen, wie es unten in bezug auf die 4, 6 und 7 weiter diskutiert wird. Wenn bestimmt wird, dass ein Kandidatbereich einen zweidimensionalen Strichcode umfasst, wird der Kandidatbereich bei Schritt 104 aus der ursprünglichen Abbildung herausgezogen (mit der ursprünglichen Auflösung). Dann wird bei Schritt 106 der Schrägstellungswinkel des zweidimensionalen Strichcodes innerhalb des Kandidatbereichs durch das Verfahren der vorliegenden Erfindung abgeschätzt, wie es mit Bezug auf die 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 US 6 201 901 B1 ausführlicher beschrieben ist. Wenn der Schrägstellungswinkel phi grösser als ein minimaler Schwellenwert alpha ist, über welchen der Leseschritt 112 nicht länger in der Lage ist, den Strichcode zuverlässig zu lesen, jedoch unter einem zweiten Schwellenwert beta, wird ein einfaches Schrägstellungsbeseitigungsverfahren angewandt. Wenn der Schrägstellungswinkel phi grösser als der zweite Schwellenwert beta ist, der typischerweise auf sieben Grad Schrägstellung festgelegt ist, wird ein trigonometrischer Schrägstellungsbeseitigungsprozess angewandt, der mehr Verarbeitungszeit als das einfache Schrägstellungsbeseitigungsverfahren benötigt. Das einfache Schrägstellungsbeseitigungsverfahren wendet das Scher-Dreh-Verfahren an, und ist vollständig in der US 6 201 901 B1 in bezug auf die 16A, 16B und 16C darin offenbart. Das trigonometrische Schrägstellungsbeseitigungsverfahren ist auch vollständig in der US 6 201 901 B1 in bezug auf 17 darin beschrieben.
  • 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. Schliesslich wird die Information, die in dem zweidimensionalen Strichcode codiert ist, bei Schritt 112 aus dem Kandidatbereich gelesen, wie es in der US 5 862 270 A und US 6 201 901 B1 vollständig beschrieben ist. Der Kandidatbereich kann sowohl bei dem Zuschneideschritt 110 als auch dem Leseschritt 112 geprüft werden, um sicherzustellen, dass er bestimmte Charakteristiken des zweidimensionalen Strichcodes enthält, und in dem Fall, dass der Kandidatbereich 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 Abbildung um einen Faktor von vorzugsweise vier, um den Auffindungsschritt 104 zu beschleunigen, obwohl ein Fachmann feststellen kann, dass die Auflösung der Abbildung um andere Faktoren verringert werden kann, und, wenn die Verarbeitungsgeschwindigkeit kein Thema ist, muss 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 Abbildung mit verringerter Auflösung aus der ursprünglichen Eingangsabbildung 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_Sprungwobei 0(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össe 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 Auffindungsschema auf der Grundlage der Verteilung eines Histogramms der horizontalen und vertikalen Projektion von Abbildungspixeln, wie es in der US 5 862 270 A beschrieben ist, und ein mathematisches, auf Morphologie beruhendes Schema, das in der nachveröffentlichten US 5 974 200 A beschrieben ist. Das einfache Auffindungsschema der US 5 862 270 A 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 umfasst oder einen Schrägstellungswinkel aufweist, der grösser als fünf Grad ist. Das auf Morphologie beruhende Auffindungsschema der US 5 974 200 A kann mit Dokumenthintergründen wie gedrucktem Text umgehen, kann jedoch nicht mit komplexen Hintergründen, wie dem dunklen Hintergrund 220 von 4 umgehen und ist im Hinblick auf die Verarbeitungsgeschwindigkeit nicht so effektiv. Das unten beschriebene Verfahren der vorliegenden 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 4, umfasst.
  • Nach 4 wird nun beim Drucken eine Ruhezone 200 aus weissem Raum explizit um den zweidimensionalen Strichcode 210 herum geschaffen, um die Genauigkeit des Auffindungsprozesses zu verbessern, wenn der zweidimensionale Strichcode 210 in einem bedruckten Medium eingeschlossen ist, das komplexe Hintergründe, wie Hintergrund 220, enthält. Die Ruhezone 200 verbessert auch die Genauigkeit des Auffindungsprozesses bei der Anwesenheit von Linienrauschen und Schrägstellung des zweidimensionalen Strichcodes. Wie es in 1A gezeigt ist, ist, wenn der zweidimensionale Strichcode in einer Ecke eines Dokuments ausserhalb der Grenzen angeordnet ist, in denen die Dokumentinhalte, wie Text oder Graphiken, liegen, von Natur aus eine Fläche aus weissem Raum vorhanden. Jedoch zeigt sich eine viel schwierigere Situation, wenn ein Dokument keine derartigen Grenzen oder anderen Flächen aus weissem Raum umfasst. Somit kann dadurch, dass explizit die Anwesenheit einer Ruhezone 200 um den zweidimensionalen Strichcode 210 herum erforderlich ist, der zweidimensionale Strichcode 210 überall auf einem Dokument mit einem komplexen Hintergrund plaziert sein, wie es allgemein in 4 gezeigt ist, und dennoch durch das Verfahren der vorliegenden Erfindung gelesen werden.
  • Der Auffindungsschritt 120 von 5 zieht Nutzen aus der Tatsache, daß der zweidimensionale Strichcode in der Mitte einer Ruhezone (weißer Bereich) angeordnet ist, wobei die Kombination auf jede Art von Dokumenthintergrund gedruckt werden kann. Deshalb ist der zweidimensionale Strichcode von einem weißen Randbereich umgeben, wie es in 4 gezeigt 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 gestatten, das in die Ruhezone beispielsweise während des Druckens oder Abtastens bzw. Scannens eingeleitet wird. Der Auffindungsschritt 120 verwendet das in 6 veranschaulichte Schiebefenster 300, um einen zweidimensionalen Strichcode in der Eingangsabbildung aufzufinden. Insbesondere wird das Schiebefenster 300 über die Eingangsabbildung hinweg bewegt und wird an ausgewählten Positionen dazu verwendet, den Teil der Abbildung innerhalb der Umgrenzungen des Schiebefensters 300 herauszuziehen. 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 Ruhebereich 320. Der Kernbereich 310 entspricht dem zweidimensionalen Strich code selbst, und der Ruhebereich 320 entspricht der Ruhezone des zweidimensionalen Strichcodes. Die Größe der beiden Bereiche ist hauptsächlich durch die Spezifikation des zweidimensionalen Strichcodes, d.h., die Größe des zweidimensionalen Strichcodes 210 und der Ruhezone 200, die in 4 gezeigt sind, bestimmt. Da jedoch die Größe des rechteckigen Fensters, die notwendig ist, um den zweidimensionalen Strichcode zu enthalten, zunimmt, wenn der zweidimensionale Strichcode schräggestellt ist, wie dies durch den schräggestellten, zweidimensionalen Strichcode 330 in 6 gezeigt ist, ist die Größe des Kernbereichs des Schiebefensters 300 geringfügig größer als die erwartete Größe des zweidimensionalen Strichcodes, um sich an Umstände anzupassen, bei denen ein zweidimensionaler 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 vergrößert und dennoch durch das Verfahren der vorliegenden Erfindung aufgefunden werden kann.
  • Es können verschiedene Suchmuster für das Schiebefenster 300 verwendet 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 7A gezeigt ist, was leicht durchzuführen ist, jedoch keinerlei a priori Wissen um den Ort des zweidimensionalen Strichcodes innerhalb einer gegebenen Abbildung verwendet 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 herausgezogenen kleinen Bereichs und dehnt sich in einem spiralähnlichen Muster nach außen aus, wie es in 7B gezeigt ist, was es gestattet, daß der zweidimensionale Strichcodekandidatbereich viel schneller aufgefunden wird, als durch das einfache Verfahren, das in bezug auf 7A diskutiert wurde. Jedoch kann die Implementierung dieses Suchverfahrens komplizierter sein. Deshalb kann alternativ ein Suchmuster, das weniger kompliziert als das Suchmuster von 7B durchzuführen jedoch schneller als das Suchmuster von 7A ist, unter Verwendung eines Sprungreihensuchmusters durchgeführt werden, wie es in 7C veranschaulicht ist, das reihenweise in dem herausgezogenen kleinen Bereich sucht. Wie es in 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 Kandidatstrichcodebereich gefunden wird oder das obere Ende und das untere Ende des herausgezogenen kleinen Bereichs erreicht sind. Für jede Reihe sucht das Sprungreihensuchmuster von links nach rechts. Obwohl es nicht so effektiv wie das spiralähnliche Muster von 7B ist, ist es leichter durchzuführen.
  • Wenn eine verbesserte Effektivität notwendig ist, kann ferner jedes hierin diskutierte Suchmuster derart modifiziert werden, daß es durch Überspringen einiger Abtastwege sucht, so daß nur entlang der geradzahligen Wege gesucht wird, wie es in den 7A7C 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 stochastisiert und enthalten eine gleichmäßige Verteilung von Bits. Zusätzlich ist die annähernde Größe des zweidimensionalen Strichcodes bekannt, und der zweidimensionale Strichcode ist von einer Ruhezone aus weißem Raum umgeben. Das Auffindungsverfahren der vorliegenden Erfindung prüft den Abbildungsbereich bei jedem Schritt, um zu bestimmen, ob er diese Merkmale enthält, und somit zu bestimmen, ob der Abbildungsbereich als ein zweidimensionaler Strichcodekandidatbereich ausgewä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 Stochastisierungsprozesses (randomization process) in einem gleichmäßigen Muster verteilt sind, wird insbesondere ein perfekt gleichmäßiger, zweidimensionaler 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 zweidimensionale Strichcodebereich zu dunkel oder zu hell ist, kann die Kernbereichsdichte 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 decodierende, 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 betragen und der Bereich ist 0,50 bis 0,60, wenn ein schwarzer Rand vorhanden ist). Wenn herausgefunden wird, daß der Kernbereich eine Kernbereichsdichte 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 bewertet, 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 4 gezeigt ist, enthält die Ruhezone 200 idealerweise keine schwarzen Pixel, und somit würde ein perfekt abgetasteter, zweidimensionaler Strichcode ohne irgendein Rauschen (d.h. schwarze Pixel) innerhalb der Ruhezone 200 einen Ruhebereichsdichtewert 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 ausgewä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 Tatsache, daß die Bits in dem zweidimensionalen Strichcode gleichmäßig verteilt 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ßenseite 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 schwarzen 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 Spaltenabtastung 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, aufeinanderfolgenden 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 gefunden wird, kennzeichnet dies, daß der Kandidatbereich kein zweidimensionaler 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 Bereiche, 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 innerhalb des zweidimensionalen Strichcodes ähnlich ist und einen bestimmten 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ärtige Ort innerhalb der Abbildung des Schiebefensters wird aufgezeichnet und auf die Abbildung mit voller Auflösung abgebildet, und der entsprechende Bereich wird als ein Kandidatbereich zur weiteren Verarbeitung herausgezogen. Wenn ein zweidimensionaler Strichcode innerhalb des Schiebefensters einen relativ grossen Schrägstellungswinkel aufweist, können dessen Ecken ausserhalb der Umgrenzungen des Kernbereichs 310 des Schiebefensters 300 verblieben sein. Die Ecken können wiedergefunden werden, indem die Grösse des Kernbereichs 310 geringfügig ausgedehnt wird, wenn der Kandidatbereich aus der Abbildung mit voller Auflösung herausgezogen wird, um sicherzustellen, dass der gesamte zweidimensionale Strichcode herausgezogen ist. Jegliches Rauschen, das in dem herausgezogenen Bereich wegen der Ausdehnung der Fenstergrösse geschaffen wird, kann bei dem Zuschneideschritt 110 beseitigt werden, der die gleiche Zuschneideverfahrensweise von innen nach aussen verwendet, die oben in bezug auf den Auffindungsschritt 104 beschrieben wurde.
  • Ungleich den Auffindungsverfahren, die in der US 5 862 270 A und US 6 201 901 B1 beschrieben sind, schneidet das Verfahren der vorliegenden Erfindung den aufgefundenen Kandidatbereich vor der Schrägstellungsbeseitigung nicht zu, weil das Zuschneiden eines schräggestellten, zweidimensionalen Strichcodes leicht seine Ecken beschädigen kann, wohingegen das Zuschneiden eines zweidimensionalen Strichcodes, dessen Schrägstellung richtig beseitigt ist, seine Ecken bewahren wird.
  • Das Verfahren zur Schrägstellungsabschätzung der US 5 862 270 A beruht auf der Auffindung von zwei Ankerbits an der oberen linken und der unteren linken Ecke des zweidimensionalen Strichcodes, um den Schrägstellungswinkel zu berechnen. Wie es darin weiter diskutiert wird, werden Vorlagen dazu verwendet, die Ecken aufzufinden, und dieses Verfahren versagt, wenn der Schrägstellungswinkel relativ gross, wie grösser als annähernd fünf Grad Schrägstellung ist. Zusätzlich sind die Ecken des zweidimensionalen Strichcodes oft durch Rauschen verformt, was zu einem ungenauen Wert für den durch das Verfahren der US 5 862 270 A abgeschätzten Schrägstellungswinkel führt.
  • Um diese Mängel zu beheben, offenbart die US 6 201 901 B1 eine Schrägstellungsabschätztechnik auf der Grundlage einer Hough-Transformation. Die Hough-Transformation ist eine parametrische Transformation, die dazu verwendet werden kann, geometrische Merkmale, wie gerade Linien, innerhalb einer Abbildung zu detektieren. Das Verfahren der US 6 201 901 B1 zieht alle horizontalen Kantenpixel unter Verwendung einer vertikalen Schwarz- und Weiss-Maske über die gesamte Abbildung hinweg heraus. Dann wird die Hough-Transformation mit allen identifizierten horizontalen Kantenpixeln durchgeführt, um den Winkel der längsten Kantenlinie zu berechnen, der den Schrägstellungswinkel des zweidimensionalen Strichcodes darstellt. Dieses Verfahren erfordert eine bedeutende Verarbeitungszeitdauer, weil eine Bewegen einer vertikalen Maske über die gesamte Abbildung hinweg, um jedes Kantenpixel zu detektieren, umfasst, dass auf jedes Abbildungspixel mehrere Male zugegriffen wird (die tatsächliche Anzahl von Zugriffen hängt von der Grösse 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 Winkel der längsten Kantenlinie zu bestimmen. Weil der durch die Hough-Transformation bestimmte Winkel dem Winkel der Linie entspricht, die die grösste Anzahl von Pixeln enthält, wird zusätzlich der Schrägstellungswinkel 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, dass der Verfahrensschritt zu Schrägstellungsabschätzung den Winkel gemäss dem Linienrauschen berechnet. Die Auswirkung einer gezogenen Linie ist in 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ägstellungswinkelabschätzung der '189-Anmeldung den Schrägstellungswinkel falsch als 0,5 Grad berechnen.
  • Das Verfahren zur Schrägstellungsabschätzung der vorliegenden Erfindung beruht auch auf dem Hough-Transformationsverfahren mit zwei wesentlichen Änderungen, um das Verfahren praktischer und zuverlässiger zu gestalten. Zuerst wird ein Erkenner endlicher Zustände dazu verwendet, die Kantenpixel des zweidimensionalen Strichcodes in einem einzigen Durchgang zu detektieren, anstelle der vertikalen Maske, die bei der US 6 201 901 B1 verwendet wird. Da die Schwarz-Weiss- und Weiss-Schwarz- Übergänge innerhalb des Kandidatbereichs Kanten in den logischen Reihen und Spalten zugeordnet sind, wird ein gültiger Übergang durch eine spezifizierte Anzahl von aufeinanderfolgenden schwarzen Pixeln gefolgt durch eine spezifizierte Anzahl von aufeinanderfolgenden weissen Pixeln (oder umgekehrt) durch einen zusätzlichen Erkenner endlicher Zustände bestimmt, der in 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 Zustände nicht, dass der zweidimensionale Strichcode überhaupt irgendwelche Ankerbits umfasst, was das Verfahren zur Schrägstellungsabschätzung der vorliegenden Erfindung bei der Anwesenheit einer geringfügigen Verformung irgendeiner Ecke des abgetasteten, zweidimensionalen Strichcodes 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 bewirkt, wird als der Ort der Kante verwendet. In einer Reihe, die beispielsweise aus vier aufeinanderfolgenden weißen Pixeln gefolgt von vier aufeinanderfolgenden schwarzen Pixeln und weiter gefolgt von drei aufeinanderfolgenden 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 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 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 einem 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 Anfangszustand 500 verarbeitet wird. Bei jedem Zustand über Zustand 500 hinaus, wird ein Positionsindex I inkrementiert, um die Position des Pixels zu verfolgen, das innerhalb der besonderen Reihe oder Spalte untersucht wird. Zusätzlich werden bestimmte andere Arbeitsgänge bei verschiedenen Zuständen durchgeführt, wie dies in Tabelle 1 angegeben und unten weiter beschrieben ist.
  • Figure 00320001
  • 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 festgesetzt (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 inkrementiert wird und tatsächlich nach dem letzten schwarzen Pixel in der gegenwä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 Pixels als ein "Kanten_Kandidat" gesetzt wird. Der Kanten_Kandidat ist das letzte schwarze Pixel in einer Abfolge von N oder mehr aufeinanderfolgenden schwarzen Pixeln. Bei Zustand 507 wird der Pixelzählwert auf 2 zurü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 aufeinanderfolgende schwarze Pixel gefolgt von mindestens N aufeinanderfolgenden weißen Pixeln, nicht erfüllt worden ist. Wenn das Pixel, dem bei Zustand 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ählwert kleiner als N bleibt. Wenn einem schwarzen Pixel zu irgendeiner Zeit, bevor das N-te weiße Pixel erreicht ist, begegnet wird, kehrt die Verarbeitung 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 inkrementiert. Wie es oben mit Bezug auf die Zustände 502, 506 und 506 festgestellt 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 aufeinanderfolgenden weißen Pixeln begegnet worden ist (nur schwarze Pixel können Kanten sein). Nach Zustand 508 fährt die Verarbeitung durch die Zustände 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 aufeinanderfolgende schwarze Pixel gibt, die mindestens N aufeinanderfolgenden weissen Pixeln folgen, und wenn dies der Fall ist, wird der Kanten Kandidat als eine Kante bei Schritt 512 gespeichert. Wenn bei Zustand 511 einem weissen Pixel begegnet wird, geht die Verarbeitung zu Zustand 506 über, um das letzte weisse Pixel in der gegenwärtigen Abfolge zu suchen, und geht dann zu Zustand 508 über, sobald das letzte weisse Pixel aufgefunden wurde, um zu bestimmen, ob eine Abfolge von mindestens N schwarzen Pixeln folgt. Analoge Schritte treten mit Bezug auf die Verarbeitung von Zustand 512 durch die Zustände 505, 507, 509 und 511 auf.
  • Der Kantendetektionsprozess fährt durch die Reihe oder Spalte aus Pixeln fort, wobei nach N aufeinanderfolgenden schwarzen (oder weissen) Pixeln und dann nach N aufeinanderfolgenden weissen (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 weisse) Pixel gefunden werden, dem N aufeinanderfolgende weisse (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 horizontal als auch vertikal) durch den Erkenner endlicher Zustände detektiert werden, werden sie in den Hough-Bereich unter Verwendung des gleichen Prozesses, der in der US 6 201 901 B1 beschrieben ist, abgebildet.
  • Der Erkenner endlicher Zustände verbessert die Verarbeitungsgeschwindigkeit des Schrittes zur Schrägstellungsabschätzung, beeinflußt jedoch nicht die Auswirkung von Linienrauschen. Wenn, wie es in 9A gezeigt ist, eine Linie 400 gezogen wird, die durch einen Strichcode 410 hindurch verläuft, wird sie die dominante Kantenlinie 430 innerhalb der Kantenabbildung 420 werden und wird ein falsches Ergebnis für den Schrägstellungswinkel erzeugen, wenn die Linie nicht parallel zur horizontalen (oder vertikalen, wenn vertikale Kanten detektiert werden) Achse des Strichcodes selbst gezogen ist. Die Linie 430 in 9A bewirkt, daß der Schrägstellungswinkel falsch als 0,5 Grad abgeschätzt wird. Um den Einfluß einer derartigen beliebig gezogenen Linie beim Abschätzen des Schrägstellungswinkels des zweidimensionalen Strichcodes zu verringern, unterteilt das Verfahren der vorliegenden Erfindung die horizontale Kantenabbildung, 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ägstellungswinkel zu bestimmen, der am wahrscheinlichsten die tatsächliche Schrägstellung repräsentiert. Bei dem bevorzugten Verfahren wird die horizontale Kantenabbildung in drei Bereiche unterteilt, wie einen oberen Bereich 440, einen mittleren Bereich 450 und einen unteren Bereich 460 der horizontalen Kantenabbildung 420 von 9B. Der Schrägstellungswinkel 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 Wahlschema 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 Gewichtungstechniken (d.h. gewichtete Wahl). Dieses Mehrbereichs-Schrägstellungsabschätzschema ist robuster gegenüber beliebigem Linienrauschen als Verfahren nach dem Stand der Technik, weil, wenn Linienrauschen 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 9B veranschaulicht ist. Wenn Linienrauschen vorhanden ist, das mehr als einen Bereich überquert, muß es unter einem relativ großen Winkel in bezug auf die Kantenpixel in der horizontalen 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 horizontalen als auch vertikalen Kanten die Kantenabbildung in sowohl horizontale als auch vertikale Bereiche zur Prüfung durch eines der Wahlschemata 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-Transformation, 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 Immunitä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 5 diskutiert ist, und in der US 6 201 901 B1 ausführlicher beschrieben ist, unter Verwendung eines Scher-Dreh-Verfahrens für kleinere Schrägstellungsniveaus und alternativ unter Verwendung eines trigonometrischen Verfahrens für grössere Schrägstellungsniveaus.
  • Nach dem Korrigieren des Schrägstellungswinkels wird die Umgrenzung des zweidimensionalen Strichcodes wahlweise durch den Zuschneideschritt 110 von 5 bestimmt, der das gleiche Verfahren von innen nach aussen verwendet, das oben mit Bezug auf den Auffindungsschritt 104 beschrieben 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, dass irgendwelche gültigen Bits weggeschnitten sind. Sobald der Kandidatbereich zugeschnitten ist, werden dessen Abmessungen 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 5 gezeigt ist. Wenn die Abmessungen in einen Bereich fallen, der nahe bei der Grösse des zweidimensionalen Strichcodes ist, geht die Verarbeitung zum Leseschritt 112 über.
  • An diesem Punkt ist der abgetastete, zweidimensionale Strichcode aufgefunden, dessen Schrägstellung beseitigt und er eng zugeschnitten worden. Der nächste Schritt ist es, die Datenbits auszulesen, was den zweidimensionalen Strichcode aus dem Abbildungsbereich, in dem jedes Bit als eine Ansammlung schwarzer oder weisser Pixel dargestellt ist, bei der bevorzugten Ausführungsform in ein 20 × 20-Bit-Array aus logischen Werten transformiert. Es ist anzumerken, dass, da die zweidimensionale Strichcodesymbologie taktfrei ist, es keine vorherbestimmten Referenzmuster gibt, um zu helfen, den Leseprozess zu orientieren. Jedoch ist die logische Grösse des zweidimensionalen Strichcodes im voraus bekannt, beispielsweise ein Quadrat, das bei der bevorzugten Ausführungsform 20 Bits auf jeder Seite misst. Weil diese Bits in der Markierung während des Codierprozesses pseudo-stochastisiert werden, wird ausserdem irgendeine besondere Reihe oder Spalte aus Pixeln eine stärkere Verteilung von Schwarz-Weiss- und Weiss-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 Prozess ist vollständig in der US 5 862 270 A beschrieben. Sobald horizontale und vertikale Mittellinien durch den in der US 5 862 270 A beschriebenen Prozess hergestellt sind, werden die Bits aus dem zweidimensionalen Strichcode ausgelesen, indem der Pixelwert aufgezeichnet wird, der an der Schnittstelle jeder horizontalen und vertikalen Mittellinie liegt (wobei beispielsweise jeder "weisse" Pixelwert = "0" und jeder "schwarze" Pixelwert = "1" gesetzt wird). Die US 6 201 901 B1 beschreibt mit Bezug auf die 18A18D ein verbessertes Taktungsverfahren zum Auslesen der Bits aus dem zweidimensionalen Strichcode, das die Fehlerrate reduziert, indem die Bits in jeder der vier möglichen Richtungen 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 3 zeigt, daß es die geringste Anzahl von Fehlern aufweist. Wenn der Leseschritt versagt, wie es beispielsweise von dem ECC bestimmt wird, kann die Verarbeitung hier wieder zurück zu dem Auffindungsschritt 104 übergehen, wie es in 5 gezeigt ist.
  • Zusammengefaßt sind zweidimensionale Strichcodes, die von einer Ruhezone 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 einem vorherbestimmten Muster über das bedruckte Medium hinweg bewegt 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 bestimmt, indem ein Erkenner endlicher Zustände in Kombination mit einer Hough-Transformationsberechnung verwendet wird. Bei einer Ausführungsform wird der Kandidatbereich in mehrere horizontale Bereiche unterteilt, vorläufige Schrägstellungswinkel werden für jeden Bereich berechnet, und der tatsächliche Schrägstellungswinkel wird unter Verwendung eines Wahlschemas ausgewählt. Sobald der Schrägstellungswinkel berechnet worden ist, wird die Schrägstellung des Bitmusters, falls notwendig, beseitigt, das Bitmuster wird zugeschnitten und die stochastisierte, 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, codierte, digitale Information reproduziert wird.

Claims (17)

  1. Verfahren zum Auffinden eines digitalen Bitmusters innerhalb einer abgetasteten Binärabbildung mit den Schritten, daß: ein Fenster über die Abbildung schrittweise in einem vorherbestimmten Muster bewegt wird, bei jedem Schritt ein Teil der Abbildung, der von dem Fenster umgeben ist, geprüft wird, um zu bestimmen, ob der Teil zu einem Charakteristikum oder mehreren Charakteristiken des Bitmusters paßt, und die Umgrenzungen des Bitmusters als die Umgrenzungen des Fensters festgelegt werden, wenn der Teil zu dem einen Charakteristikum oder den mehreren Charakteristiken des Bitmusters paßt.
  2. Verfahren zum Decodieren stochastisierter Information, die auf ein vom Menschen lesbares Medium in der Form eines Bitmusters aus Reihen und Spalten aus Datenpixeln gedruckt ist, die codierte Datenbits darstellen, wobei jedes Datenpixel entweder eine erste oder eine zweite Farbe ist, und das Bitmuster eine vorherbestimmte Größe aufweist und von einem äußeren Bereich aus Pixeln mit einer vorherbestimmten, im wesentlichen gleichmäßigen Farbe umgeben ist, mit den Schritten, daß: das vom Menschen lesbare Medium abgetastet wird, um das Bitmuster zu digitalisieren, das Bitmuster zu einer auf Pixeln beruhenden Grauskalendarstellung formatiert wird, die auf Pixeln beruhende Grauskalendarstellung in eine auf Pixeln beruhende Binärdarstellung umgewandelt wird, indem ein Schwellenwertintensitätspegel auf der Grundlage der Grauskalendarstellung festgelegt wird und Pixel auf einen ersten Pegel oder auf einen zweiten Pegel in Abhängigkeit von ihrer Beziehung zu dem Schwellenwert umgewandelt werden, die Reihen- und Spaltenumgrenzungen eines Kandidatbereichs für das digitalisierte Bitmuster durch Verwendung des Verfahrens von Anspruch 1 aufgefunden werden, der Schrägstellungswinkel des digitalisierten Bitmusters innerhalb des Kandidatbereichs bestimmt wird, die Schrägstellung des digitalisierten Bitmusters beseitigt wird, so daß der Schrägstellungswinkel auf im wesentlichen Null reduziert ist, Binärdaten aus dem digitalisierten Bitmuster ausgelesen werden, um ein eindimensionales Feld aus digitalen Daten zu erzeugen, das eindimensionale Feld aus digitalen Daten entstochastisiert wird, und Fehler des entstochastisierten, eindimensionalen Feldes aus digitalen Daten korrigiert werden, um eine im wesentlichen fehlerfreie, digitale Darstellung der codierten Information zu erzeugen.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß das Fenster der Auffindungsschrittes einen Kernbereich, der der vorherbestimmten Größe des Bitmusters entspricht, und einen Ruhebereich umfaßt, der dem Außenbereich entspricht, und wobei das Prüfen umfaßt, daß Teile der Darstellung, die von dem Kernbereich und dem Ruhebereich umgeben sind, separat geprüft werden, um zu bestimmen, ob die Teile zu einem Charakteristikum oder mehreren Charakteristiken des Bitmusters bzw. dem Außenbereich passen, und daß die Umgrenzungen des Kandidatbereichs auf die Umgrenzungen des Kernbereichs gesetzt werden.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß das Prüfen des Kernbereichs umfaßt, daß bestimmt wird, ob die Dichte von Pixeln mit der ersten Farbe oder der zweiten Farbe innerhalb des Teils der Darstellung, der von dem Kernbereich umgegeben ist, in einem vorherbestimmten Bereich liegt.
  5. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß das Prüfen des Ruhebereichs umfaßt, daß bestimmt wird, ob die Dichte von Pixeln mit der ersten Farbe oder der zweiten Farbe innerhalb des Teils der Darstellung, der von dem Ruhebereich umgeben ist, in einem vorherbestimmten Bereich liegt.
  6. Verfahren nach einem der Ansprüche 2 bis 5, dadurch gekennzeichnet, daß der Auffindungsschritt ferner einen zusätzlichen Prüfschritt umfaßt, bei dem der Kandidatbereich zugeschnitten wird und die Abmessungen des zugeschnittenen Kandidatbereichs mit der vorherbestimmten Größe des Bitmusters verglichen werden.
  7. Verfahren nach einem der Ansprüche 2 bis 6, dadurch gekennzeichnet, daß das bedruckte, vom Menschen lesbare Medium ferner weitere Information umfaßt, und daß der Abtastschritt, der Formatierungsschritt und der Umwandlungsschritt das Bitmuster und die weitere Information verarbeiten.
  8. Verfahren nach einem der Ansprüche 2 bis 7, dadurch gekennzeichnet, daß der Schritt des Bestimmens des Schrägstellungswinkels umfaßt, daß: horizontale oder vertikale Kanten innerhalb des Bitmusters unter Verwendung eines Erkenners endlicher Zustände aufgefunden werden, die Koordinaten einer horizontalen oder vertikalen Linie innerhalb des Bitmusters, die die horizontalen oder vertikalen Kanten darstellen, unter Verwendung der Hough-Transformation berechnet werden, und der Schrägstellungswinkel als der Winkel zwischen den Koordinaten der horizontalen oder vertikalen Linie innerhalb des Bitmusters und einer horizontalen Linie, die eine Reihe aus Pixeln innerhalb des Kandidatbereichs darstellt, oder einer vertikalen Linie, die eine Spalte aus Pixeln innerhalb des Kandidatbereichs darstellt, berechnet wird.
  9. Verfahren nach einem der Ansprüche 2 bis 8, dadurch gekennzeichnet, daß der Auffindungsschritt das Fenster in einem vorherbestimmten Muster über mindestens einen vorherbestimmten Teil der umgewandelten Darstellung bewegt.
  10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß sich das vorherbestimmte Muster entlang von Reihen, beginnend bei einer mittleren Reihe der umgewandelten Darstellung, bewegt, und dann jeweils wiederholt eine Reihe nach oben und dann eine Reihe nach unten bewegt, bis die erste Reihe und die letzte Reihe der umgewandelten Darstellung erreicht sind.
  11. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß der mindestens eine vorherbestimmte Teil aus mindestens einer Ecke der umgewandelten Darstellung besteht.
  12. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß der Kandidatbereich in mehrere horizontale und/oder vertikale Bereiche unterteilt ist, vorläufige Schrägstellungswinkel für jeden der Vielzahl von horizontalen und/oder vertikalen Bereichen berechnet werden, und der Schrägstellungswinkel durch ein Wahlschema aus den vorläufigen Schrägstellungswinkeln ausgewählt wird.
  13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, daß das Wahlschema den Medianwert der vorläufigen Schrägstellungswinkel auswählt.
  14. Verfahren nach Anspruch 12, dadurch gekennzeichnet, daß das Wahlschema den Mittelwert der vorläufigen Schrägstellungswinkel auswählt.
  15. Verfahren nach Anspruch 2, das ferner den Schritt umfaßt, daß: die Auflösung der auf Pixeln beruhenden Binärdarstellung mit einem vorherbestimmten Faktor vor dem Auffindungsschritt reduziert wird, und wobei der Auffindungsschritt den Kandidatbereich mit der ursprünglichen Auflösung der auf Pixeln beruhenden Binärdarstellung herauszieht.
  16. Verfahren nach Anspruch 2, das ferner den Schritt umfaßt, daß das digitalisierte Bitmuster nach dem Schrägstellungsbeseitigungsschritt zugeschnitten wird.
  17. Verfahren nach einem der Ansprüche 1 bis 16, wobei das Bitmuster ein zweidimensionaler Strichcode ist.
DE19964415A 1998-12-16 1999-12-15 Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes Expired - Fee Related DE19964415B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/212,243 US6082619A (en) 1998-12-16 1998-12-16 Method for locating and reading a two-dimensional barcode
US09/212,243 1998-12-16
DE19960555A DE19960555B4 (de) 1998-12-16 1999-12-15 Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes

Publications (1)

Publication Number Publication Date
DE19964415B4 true DE19964415B4 (de) 2007-04-19

Family

ID=34621400

Family Applications (2)

Application Number Title Priority Date Filing Date
DE29924753U Expired - Lifetime DE29924753U1 (de) 1998-12-16 1999-12-15 Vorrichtung zum Auffinden und Lesen eines zweidimensionalen Strichcodes
DE19964415A Expired - Fee Related DE19964415B4 (de) 1998-12-16 1999-12-15 Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE29924753U Expired - Lifetime DE29924753U1 (de) 1998-12-16 1999-12-15 Vorrichtung zum Auffinden und Lesen eines zweidimensionalen Strichcodes

Country Status (1)

Country Link
DE (2) DE29924753U1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117218675A (zh) * 2023-09-19 2023-12-12 中广核工程有限公司 图纸表格区域检测方法、装置、存储介质和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0669593A2 (de) * 1994-02-24 1995-08-30 Kabushiki Kaisha TEC Erkennungsverfahren für eine zweidimensionale Kodierung
EP0783160A2 (de) * 1995-12-08 1997-07-09 Matsushita Electric Industrial Co., Ltd. Zweidimensionaler Strichcode ohne Taktsignal und Verfahren zum Drucken und Lesen des Codes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0669593A2 (de) * 1994-02-24 1995-08-30 Kabushiki Kaisha TEC Erkennungsverfahren für eine zweidimensionale Kodierung
EP0783160A2 (de) * 1995-12-08 1997-07-09 Matsushita Electric Industrial Co., Ltd. Zweidimensionaler Strichcode ohne Taktsignal und Verfahren zum Drucken und Lesen des Codes

Also Published As

Publication number Publication date
DE29924753U1 (de) 2005-05-19

Similar Documents

Publication Publication Date Title
DE19960555B4 (de) Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes
DE69929572T2 (de) Verfahren zum Lesen eines zweidimensionalen Strichcode ohne Taktsignal und ohne Ränder
US6565003B1 (en) Method for locating and reading a two-dimensional barcode
DE69129136T2 (de) Binärbildverarbeitung zur Dekodierung selbstaktierender Kodierungen in Markengestalt
DE69226846T2 (de) Verfahren zur Bestimmung von Wortgrenzen im Text
DE60013101T2 (de) Zweidimensionales codemuster zum speichern biometrischer informationen und vorrichtung zum lesen dieser informationen
DE69230632T2 (de) Optische Worterkennung durch Wortgestaltuntersuchung
DE19814075B4 (de) Verfahren zum Abtasten und Erkennen mehrerer Fotografien und zum Beseitigen von Randfehlern
DE69835358T2 (de) Verfahren zur Korrektur der Verzerrung beim Abtasten eines optischen Codes
DE10036110B4 (de) Verfahren zur Bestimmung des Schrägwinkels eines zweidimensionalen Barcodes
DE69516751T2 (de) Bildvorverarbeitung für Zeichenerkennungsanlage
DE69230631T2 (de) Verfahren zum Vergleichen von Wortgestalten
DE69517564T2 (de) Verfahren und Gerät zur Erzeugung einer hybriden Datenstruktur zur Anzeige eines Rasterbildes
DE69033063T2 (de) Zweidimensionaler Zeichensatz mit hoher Dichte
DE69230633T2 (de) Verfahren zur Ermittlung von Wortformen zum folgenden Vergleich
EP0131676B1 (de) Verfahren zum automatischen Digitalisieren des Umrisses von Strichgraphiken z.B. Buchstaben
DE69727320T2 (de) Aufnahmeverfahren und gerät
DE69226609T2 (de) Verfahren und Gerät zur Dokumentbildverarbeitung
DE69414530T2 (de) Bildkompression von Dokumenten mit Aufgeben des Formblattes
DE69132206T2 (de) Verfahren und Gerät zur Bildverarbeitung
DE69130786T2 (de) Verfahren zum Kodieren digitaler Informationen
DE3716787C2 (de)
DE60222722T2 (de) Verfahren und Vorrichtung zur Korrektur von perspektivischen Verzerrungen in Dokumentbildern und zur Summierung von Bildzeilen
DE69621992T2 (de) Anlage und verfahren zur automatischen seitenerfassung und detektion von formularen
DE69523965T2 (de) Erkennungsverfahren für eine zweidimensionale Kodierung

Legal Events

Date Code Title Description
Q172 Divided out of (supplement):

Ref document number: 19960555

Country of ref document: DE

Kind code of ref document: P

Q172 Divided out of (supplement):

Ref document number: 19960555

Country of ref document: DE

Kind code of ref document: P

8142 Declaration for partition to be considered as not given as to paragraph 39 or 60
8110 Request for examination paragraph 44
8170 Reinstatement of the former position
AC Divided out of

Ref document number: 19960555

Country of ref document: DE

Kind code of ref document: P

8339 Ceased/non-payment of the annual fee