-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht
sich auf ein Linien mit Teilung extrahierendes Gerät zum Extrahieren
eines Abschnitts einer Linie mit Teilung aus einem beliebigen Dokumentbild,
das durch einen photoelektrischen Wandler etc. gelesen wird, und
ein Verfahren dafür.
-
Beschreibung der verwandten
Technik
-
In den letzten Jahren hat der Bedarf
an einem elektronischen Dateiorganisationssystem zugenommen, welches
ein Papierdokument in eine elektronische Form umwandelt und es auf
einer optischen Platte oder Bildplatte etc. speichert, um die Effizienz
von innerhalb eines Unternehmens durchgeführten Operationen zu verbessern.
Bei einem herkömmlichen
elektronischen Dateiorganisationssystem wird ein Papierdokument
durch einen photoelektrischen Wandler wie z. B. einen Bildscanner
etc. in ein Bild umgewandelt, und das Bild wird mit einem angebrachten
Suchschlüsselwort
auf einer optischen Platte oder einer Festplatte gespeichert. Da
das Schlüsselwort
von einer Tastatur aus eingegeben werden muss, ist jedoch die Eingabeoperation
lästig.
-
Als eine frühere Anmeldung durch den vorliegenden
Anmelder, um diese lästige
Operation zu überwinden,
kann auf "Title
Extracting Apparatus for Extracting Title from Document Image and
Method Thereof, U.S. Patentanmeldung 08/694,503, die japanische
Patentanmeldung H7-341983" verwiesen werden.
Bei diesem Verfahren wird ein in einem Bild enthaltener Dokumenttitel
automatisch extrahiert und als ein Schlüsselwort registriert. Zusätzlich kann
eine Verwaltungsinformation wie z. B. ein Titel, Ziel bzw. Bestimmung,
sendende Quelle etc. aus verschiedenen Dokumentbildern automatisch
extrahiert werden, die ein Tabellenformatdokument enthalten. Zum
Beispiel ist nachgewiesen, dass ein Titel außerhalb einer Tabelle mit einer
Genauigkeit von ungefähr
90% extrahiert werden kann.
-
Ein Titel innerhalb einer Tabelle
kann jedoch nur mit einer Genauigkeit von 55% extrahiert werden, was
unzureichend ist, um in praktischen Gebrauch gebracht zu werden.
Um ein Schlüsselwort
wie z. B. einen Titel aus einem Inneren einer Tabelle mit hoher Genauigkeit
zu extrahieren, müssen
die Tabelle strukturierende Linien mit Teilung genau extrahiert werden.
Die Technik zum Extrahieren einer Linie mit Teilung wurde hauptsächlich für ein Arbeitsblatt
entwickelt, in welchem Zeichen etc. regelmäßig aufgereiht sind.
-
Als die herkömmlichen Techniken zum Extrahieren
einer Linie mit Teilung kann auf "Image Extracting Method" (offengelegtes japanisches
Patent H6-309498)
und "Image Extracting
Apparatus" (offengelegtes
japanisches Patent H7-28937) verwiesen werden. Mit diesen Techniken
kann ein Rahmen oder Frame in einem Arbeitsblatt extrahiert oder
entfernt werden, ohne eine Eingabe einer Information wie z. B. einer
Frame-Position etc. zu erfordern. Ein Arbeitsblatt, welches verarbeitet
werden kann, ist ein Blatt, das aus Frames mit einem Zeichen, Block-Frames
(horizontale einzeilige Frames oder Frames mit freiem Format) besteht,
oder ein Blatt mit einer Struktur, in der die Gestalt eines Frame
rechtwinklig ist und horizontale Frame-Linien regelmäßig angeordnet sind.
-
Als die Techniken zum Extrahieren
einer Linie mit Teilung gemäß früheren Anmeldungen
in Japan durch den vorliegenden Anmelder kann zusätzlich verwiesen
werden auf "Frame
Extracting Apparatus and Rectangle Extracting Apparatus" (japanische Patentanmeldung
H7-203259), "Pattern
Area Extracting Apparatus and Pattern Extracting Apparatus" (japanische Patentanmeldung
H7-282171) und "Pattern Extracting
Apparatus and Pattern Area Extracting Method" (japanische Patentanmeldung H8-107568).
-
Mit diesen Techniken kann ein Frame
extrahiert/entfernt werden, selbst wenn der äußere Umfang von Frames rechtwinklig,
wie in 1A gezeigt ist, oder nicht
rechtwinklig ist, wie in 1B gezeigt ist.
Das Frame einer Tabelle, die durch ein Rechteck strukturiert ist,
welches von einem Frame umgeben ist, und in kleinere Abschnitte
aufgeteilt ist, kann überdies
extrahiert und entfernt werden wie der in 1B gezeigte
schattierte Abschnitt. Im folgenden wird das Konzept dieses Prozesses
geliefert.
- (1) Verdünnen:
Mit einem Maskenprozeß werden
horizontale und vertikale Segmente dünner gemacht, und die Differenz
zwischen der Dicke eines Zeichens und derjenigen eines Frame wird
eliminiert.
- (2) Segmentextraktion: Eine verhältnismäßig lange gerade Linie wird
mit dem Adjazenzprojektionsverfahren gemäß dem "Image Extracting Method" (offengelegtes japanisches
Patent H6-309498) extrahiert. Das Adjazenzprojektionsverfahren ist
ein Verfahren zum Erkennen des Ergebnisses eines Addierens des Projektionswertes
von Pixel, die in Reihen oder Spalten um eine spezifische Reihe
oder Spalte enthalten sind, zu dem Projektionswert von Pixel in der
spezifischen Reihe oder Spalte als den Endprojektionswert der spezifischen
Reihe oder Spalte. Mit diesem Verfahren kann eine Pixelverteilung
um eine bestimmte Reihe oder Spalte global identifiziert werden.
- (3) Extraktion einer geraden Linie: Extrahierte Segmente werden
sequentiell gesucht, und es wird untersucht, ob es einen leeren
Raum einer vorbestimmten Länge
zwischen Segmenten gibt oder nicht. Falls es keinen solchen leeren
Raum gibt, werden die Segmente sequentiell verknüpft, so daß eine lange gerade Linie extrahiert
wird.
- (4) Integration einer geraden Linie: Extrahierte gerade Linien
werden wieder integriert. Gerade Linien, die aufgrund einer Unschärfe in zwei
oder mehr Abschnitte getrennt sind, werden in eine gerade Linie
integriert.
- (5) Verlängerung
einer geraden Linie: Eine gerade Linie, die aufgrund einer Unschärfe verkürzt ist,
wird verlängert
und auf ihre Ursprungslänge
wiederhergestellt, nur wenn ein Arbeitsblatt sich als regulär erweist.
-
Die oben beschriebenen Techniken
weisen jedoch die folgenden Probleme auf.
-
Gemäß den in den früheren Anmeldungen offenbarten
Techniken kann, ob die Gestalt eines Frame eines Arbeitsblatts regulär oder irregulär ist, es
verarbeitet werden, solange es ein Tabellen-Frame ist, das aus rechtwinkligen
Bereichen besteht. Ob eine Linie mit Teilung, auf die abgezielt
werden soll, eine durchgezogene oder gestrichelte Linie ist, kann sie
ungeachtet der Existenz einer Unschärfe verarbeitet werden. Überdies
wird eine gerade Linie, die aufgrund einer extremen Unschärfe verkürzt ist,
nur verlängert,
wenn eine Tabelle sich als regulär
erweist.
-
Ein normales Eingabebild enthält manchmal Zeichen
eines dicken Schrifttyps oder einen schattierten Abschnitt in einer
Tabelle, wie in 1C gezeigt ist. In
einem solchen Fall wird eine Linie mit Teilung aus einer verunstalteten
Zeichenkette fälschlicherweise
extrahiert, in der Zeichen einander berühren, und Linien mit Teilung,
die fälschlicherweise
extrahiert werden, können
manchmal mit korrekten Linien mit Teilung integriert werden.
-
Außerdem kann eine Linie mit
Teilung, welche eine Gruppe schwarzer Pixel wie z. B. einen schattierten
Abschnitt berührt,
oder eine Linie mit Teilung, die ein Zeichen berührt, nicht extrahiert werden. Um
diese Probleme zu überwinden,
ist es wünschenswert,
daß ein
Tabellendokument wie z. B. ein Arbeitsblatt, dessen Struktur mit
Linien mit Teilung vorher bekannt ist, ein Prozeßziel sein sollte.
-
Da jedoch vorher nicht bekannt ist,
welchen Typ einer Tabelle ein von einer elektronischen Dateiorganisation
verarbeitetes normales Dokument enthält, ist die Wahrscheinlichkeit
hoch, daß verschiedene
Bilder, die ein verunstaltetes Zeichen etc. enthalten, eingegeben
werden. Demgemäß wird eine
Linie mit Teilung gemäß den Techniken
der früheren
Anmeldungen, wie sie vorliegen, nicht notwendigerweise und korrekt
extrahiert.
-
Saitoh et al.: "Document Image Segmentation and Layout
Analysis"; IEICE
Transcations on Information and Systems, Bd. E77-D, Nr. 7, 1. Juli 1994,
Seiten 778–784,
offenbart ein System zur Segmentierung eines Dokumentenbildes und
Ordnen von Textbereichen, das imstande ist, schräge Bilder und nicht rechtwinklige
Spalten zu verarbeiten. Komponenten (Verläufe eines verbundenen Textes)
werden extrahiert, und innerhalb jeder Komponente werden horizontale
und vertikale Linien mit Teilung extrahiert. Es sind jedoch keine
Details des Prozesses zur Extraktion von Linien mit Teilung offenbart.
-
JP-A-5 233 873 offenbart ein Linien
mit Teilung extrahierendes Gerät
und ein Linien mit Teilung extrahierendes Verfahren gemäß dem Oberbegriff der
jeweiligen unabhängigen
Ansprüche.
-
Zusammenfassung der Erfindung
-
Eine Aufgabe der vorliegenden Erfindung
ist, ein Linien mit Teilung extrahierendes Gerät und ein Verfahren dafür zu schaffen,
welche erlauben, daß ein
Abschnitt einer Linie mit Teilung aus einem normalen Dokumentenbild
extrahiert wird, dessen Struktur mit Linien mit Teilung nicht vorhergesagt
werden kann.
-
Gemäß einem ersten Gesichtspunkt
der vorliegenden Erfindung wird ein Linien mit Teilung extrahierendes
Gerät geschaffen,
welches aufweist: ein Schätzmittel
zum Schätzen
einer Größe eines
in einem Eingabebild enthaltenen Standardmusters; und ein gerade
Linien extrahierendes Mittel zum Festlegen eines Schwellenwertes
auf der Basis einer Information der Größe des Standardmusters und
Extrahieren einer Information eines oder mehrerer gerader Linienmuster
aus dem Eingabebild unter Verwendung des Schwellenwertes, dadurch
gekennzeichnet, daß:
das
gerade Linien extrahierende Mittel die geraden Linienmuster extrahiert,
indem unter Verwendung einer vorbestimmten Maske eine schräge Komponente aus
dem Eingabebild ausgeschlossen wird, um ein Segmentmuster zu detektieren,
indem ein oder mehr Segmentmuster in ein gerades Linienmuster integriert
werden und ein unnötiges
gerades Linienmuster gelöscht
wird, um eine Linie mit Teilung unter den extrahierten ein oder
mehr geraden Linienmustern zu extrahieren, von denen jedes einem
oder mehreren integrierten Segmentmustern entspricht.
-
Ein Linien mit Teilung extrahierendes
Gerät, das
die vorliegende Erfindung verkörpert,
umfaßt eine
Schätzeinheit,
eine Speichereinheit, eine Segmente extrahierende Einheit, eine
Berechnungseinheit, eine gerade Linien extrahierende Einheit, eine Graphen
erzeugende Einheit, eine gerade Linien verarbeitende Einheit, eine
gerade Linien integrierende Einheit und eine gerade Linien löschende
Einheit.
-
Die Schätzeinheit schätzt die
Größe eines
in einem Eingabebild enthaltenen Standardmusters; und die gerade
Linien extrahierende Einheit legt basierend auf der Information über die
Größe des Standardmusters
einen Schwellenwert fest und extrahiert die Information eines oder
mehrerer gerader Linienmuster aus dem Eingabebild unter Verwendung
des Schwellenwertes.
-
Die Berechnungseinheit erhält einen
repräsentativen
Wert der Größen des
einen oder der mehreren geraden Linienmuster, und die gerade Linien verarbeitende
Einheit legt basierend auf dem repräsentativen Wert einen Schwellenwert
fest und verarbeitet unter Verwendung des Schwellenwertes die Information
des einen oder der mehreren geraden Linienmuster.
-
Alternativ dazu erhält die Berechnungseinheit
einen repräsentativen
Wert der Größen eines oder
mehrerer Segmentmuster, die das eine gerade Linienmuster oder mehr
strukturieren.
-
Die Segmente extrahierende Einheit
extrahiert die Information eines oder mehrerer Segmentmuster aus
einem Eingabebild; die Speichereinheit klassifiziert die Information
eines oder mehrerer Segmentmuster in die Information eines großen Segmentmusters
und die Information eines kleinen Segmentmusters und speichert sie;
und die gerade Linien extrahierende Einheit untersucht einen Verknüpfungszustand
des einen oder mehrerer Segmentmuster und extrahiert, wenn ein großes Segmentmuster
mit kleinen Segmentmustern verknüpft
ist, ein gerades Linienmuster, das aus den kleinen Segmentmustern
besteht, ungeachtet der Größe des großen Segmentmusters.
-
Die gerade Linien integrierende Einheit
integriert zwei gerade Linienmuster, die in dem einen oder den mehreren
geraden Linienmustern enthalten sind, in eines, falls sie nahezu überlappen.
-
Danach extrahiert die gerade Linien
extrahierende Einheit die Information eines oder mehrerer gerader
Linienmuster aus einem Eingabebild, und die gerade Linien löschende
Einheit bestimmt, ob eines der geraden Linienmuster zu löschen ist
oder nicht, unter Verwendung der Information über die Gestalt eines Musters
unter dem einen oder den mehreren geraden Linienmustern und/oder
der Information über
eine Distanz zwischen zwei geraden Linienmustern, die in einem oder
mehreren geraden Linienmustern enthalten sind.
-
Zusätzlich bestimmt die gerade
Linien löschende
Einheit, ob irgendeines eines horizontalen geraden Linienmusters
und eines vertikalen geraden Linienmusters zu löschen ist oder nicht, die in
dem einen oder den mehreren geraden Linienmustern enthalten sind,
basierend auf einer Verknüpfungsbeziehung
zwischen diesen Mustern.
-
Die gerade Linien löschende
Einheit löscht überdies
ein kürzeres
Muster von zwei geraden Linienmustern, welche nahezu überlappen
und in dem einen oder den mehreren extrahierten geraden Linienmustern
enthalten sind.
-
Die gerade Linien integrierende Einheit
erkennt ein integriertes gerades Linienmuster als einen Kandidaten
für eine
Linie mit Teilung, wenn die Größe des geraden
Linienmusters, das durch Integrieren von zwei geraden Linienmustern
erzeugt wurde, die teilweise überlappen
und in dem einen oder den mehreren extrahierten geraden Linienmustern
enthalten sind, ungefähr
ein vorbestimmter Wert wird.
-
Die gerade Linien löschende
Einheit löscht ferner
ein gerades Linienmuster, das aus Segmentmustern besteht, die größer als
ein Schwellenwert sind, unter dem einen oder den mehreren extrahierten
geraden Linienmustern.
-
Die Graphen erzeugende Einheit erhält eine Anzahl
Pixel, die in einem Segmentmuster einer Standardgröße unter
einem oder mehreren Segmentmustern enthalten sind, die das gerade
Linienmuster strukturieren, und erzeugt einen Graphen, der die Anzahl
Pixel um das extrahierte gerade Linienmuster repräsentiert,
und die gerade Linien löschende
Einheit bestimmt auf der Basis der Gestalt des Graphen, ob das gerade
Linienmuster zu löschen
ist oder nicht.
-
Gemäß zweiten und dritten Gesichtspunkten der
vorliegenden Erfindung werden ein computerlesbares Speichermedium
und ein Verfahren zur Extraktion von Linien mit Teilung wie in den
entsprechenden unabhängigen
Ansprüchen
definiert geschaffen.
-
Kurze Beschreibung der
Zeichnungen
-
1A zeigt
ein einfaches Tabellen-Frame;
-
1B zeigt
ein kompliziertes Tabellen-Frame;
-
1C zeigt
ein Tabellen-Frame, aus dem eine Linie mit Teilung schwierig zu
extrahieren ist;
-
2A ist
ein Blockdiagramm, das das Prinzip eines Linien mit Teilung extrahierenden
Geräts gemäß der vorliegenden
Erfindung zeigt;
-
2B ist
ein Funktionsblockdiagramm, das das Linien mit Teilung extrahierende
Gerät zeigt;
-
3 ist
ein Blockdiagramm, das die Konfiguration einer Informationsverarbeitungsvorrichtung zeigt;
-
4 zeigt
die Struktur von Daten;
-
5 ist
ein schematisches Diagramm, das einen Markier- oder Etikettierprozeß zeigt;
-
6 zeigt
ein Histogramm von Höhen;
-
7 zeigt
ein Histogramm, um den häufigsten
Wert einer Höhe
zu erhalten;
-
8 zeigt
eine Tabelle von Rechteckhöhen;
-
9 zeigt
ein Histogramm, das den Inhalten der Tabelle von Rechteckhöhen entspricht;
-
10 ist
ein schematisches Diagramm, das einen Maskenprozeß zeigt;
-
11 ist
ein schematisches Diagramm, das ein Segmentdetektionsprozeß zeigt;
-
12 ist
ein schematisches Diagramm, das einen ersten Segmentintegrationsprozeß zeigt;
-
13 ist
ein schematisches Diagramm, das einen zweiten Segmentintegrationsprozeß zeigt;
-
14 ist
ein schematisches Diagramm, das einen Suchprozeß für gerade Linien zeigt;
-
15 ist
ein schematisches Diagramm, das einen Prozeß zum Integrieren gerader Linien zeigt,
welche vollständig überlappen;
-
16 ist
ein schematisches Diagramm, das einen ersten Prozeß zur Löschung gerader
Linien zeigt;
-
17 ist
ein schematisches Diagramm, das einen zweiten Prozeß zur Löschung gerader
Linien zeigt;
-
18 ist
ein schematisches Diagramm, das eine gerade Linie zeigt, die nicht
gelöscht
werden darf;
-
19 ist
ein schematisches Diagramm, das einen dritten Prozeß zur Löschung gerader
Linien zeigt;
-
20 zeigt
einen Prozeß zum
Integrieren gerader Linien, die teilweise überlappen;
-
21 ist
ein schematisches Diagramm, das das Innere gerader Linien zeigt,
die teilweise überlappen;
-
22 ist
ein schematisches Diagramm, das einen vierten Prozeß zur Löschung gerader
Linien zeigt;
-
23 ist
ein schematisches Diagramm, das zeigt, wie der Wert einer Distanz
zwischen zwei geraden Linien zu erhalten ist;
-
24 ist
ein schematisches Diagramm, das einen fünften Prozeß zur Löschung gerader Linien zeigt;
-
25 ist
ein schematisches Diagramm, das ein Bild zeigt, nachdem der Prozeß zum Integrieren
horizontaler Segmente durchgeführt
ist;
-
26 ist
ein schematisches Diagramm, das ein Bild zeigt, bevor ein Prozeß zum Integrieren gerader
Linien, die vollständig überlappen,
durchgeführt
wird;
-
27 ist
ein schematisches Diagramm, das ein Bild zeigt, nachdem der Prozeß zum Integrieren
gerader Linien, die vollständig überlappen, durchgeführt ist;
-
28 ist
ein schematisches Diagramm, das ein Bild zeigt, nachdem der Löschungsprozeß basierend
auf der Gestalt und Position einer geraden Linie und einer Verknüpfungsbeziehung
zwischen vertikalen und horizontalen geraden Linien durchgeführt ist;
-
29 zeigt
ein Bild, bevor der Prozeß zum Integrieren
gerader Linien, welche teilweise überlappen, durchgeführt wird;
-
30 zeigt
ein Bild, nachdem der Prozeß zum
Integrieren gerader Linien, welche teilweise überlappen, durchgeführt ist;
-
31 zeigt
ein Bild, bevor ein Prozeß zum Löschen einer
geraden Linie, welche nahezu vollständig überlappt, durchgeführt wird;
-
32 zeigt
ein Bild, nachdem der Prozeß zum
Löschen
einer geraden Linie, die nahezu vollständig überlappt, durchgeführt ist;
-
33 zeigt
ein Bild, bevor der Prozeß zum Löschen einer
aus nur großen
Segmenten bestehenden geraden Linie durchgeführt wird;
-
34 zeigt
ein Bild, nachdem der Prozeß zum
Löschen
einer aus nur großen
Segmenten bestehenden geraden Linien durchgeführt ist;
-
35 zeigt
ein Bild, bevor ein Prozeß zum Prüfen/Löschen einer
geraden Linie unter Verwendung einer Segmentverschiebung durchgeführt wird;
-
36 zeigt
ein Bild, nachdem der Prozeß zum
Prüfen/Löschen einer
geraden Linie unter Verwendung der Segmentverschiebung durchgeführt ist;
-
37 ist
ein Flußdiagramm
1, das den Prozeß zum
Integrieren von Segmenten zeigt;
-
38 ist
ein Flußdiagramm
2, das den Prozeß zum
Integrieren von Segmenten zeigt;
-
39 ist
ein Flußdiagramm
3, das den Prozeß zum
Integrieren von Segmenten zeigt;
-
40 ist
ein Flußdiagramm
4, das den Prozeß zum
Integrieren von Segmenten zeigt;
-
41 ist
ein Flußdiagramm
5, das den Prozeß zum
Integrieren von Segmenten zeigt;
-
42 ist
ein Flußdiagramm
1, das den Prozeß zum
Prüfen/Löschen einer
geraden Linie zeigt;
-
43 ist
ein Flußdiagramm
2, das den Prozeß zum
Prüfen/Löschen einer
geraden Linie zeigt;
-
44 ist
ein Flußdiagramm
3, das den Prozeß zum
Prüfen/Löschen einer
geraden Linie zeigt;
-
45 ist
ein Flußdiagramm
4, das den Prozeß zum
Prüfen/Löschen einer
geraden Linie zeigt;
-
46 ist
ein Flußdiagramm
5, das den Prozeß zum
Prüfen/Löschen einer
geraden Linie zeigt; und
-
47 ist
ein Flußdiagramm
6, das den Prozeß zum
Prüfen/Löschen einer
geraden Linie zeigt.
-
Beschreibung der bevorzugten
Ausführungsform
-
Im folgenden werden die Einzelheiten
der bevorzugten Ausführungsform
gemäß der vorliegenden
Erfindung unter Bezugnahme auf die Zeichnungen erläutert.
-
2A ist
ein Blockdiagramm, das das Prinzip eines Linien mit Teilung extrahierenden
Geräts gemäß der vorliegenden
Erfindung darstellt. Das Linien mit Teilung extrahierende Gerät, das in 2A dargestellt ist, schließt die erste,
zweite, dritte, vierte, fünfte,
sechste Ausführungsform
ein und umfaßt
eine Schätreinheit 1,
eine Speichereinheit 2, eine Segmente extrahierende Einheit 3,
eine Berechnungseinheit 4, eine gerade Linien extrahierende
Einheit 5, eine Graphen erzeugende Einheit 6,
eine gerade Linien verarbeitende Einheit 7, eine gerade
Linien integrierende Einheit 8 und eine gerade Linien löschende Einheit 9.
-
Gemäß der ersten Ausführungsform
schätzt die
Schätreinheit 1 die
Größe eines
in einem Eingabebild enthaltenen Standardmusters. Die gerade Linien
extrahierende Einheit 5 legt einen Schwellenwert basierend
auf der Information über
die Größe des Standardmusters
fest und extrahiert die Information eines oder mehrerer gerader
Linienmuster aus dem Eingabebild unter Verwendung des Schwellenwertes.
-
Das Standardmuster entspricht einem
Muster eines Zeichens oder dergleichen einer Standardgröße, welche
in einem Eingabebild am häufigsten erscheint.
Ein ein Zeichen repräsentierender
Pixelverkettungsbereich wird als Standardmuster verwendet. Zum Beispiel
wird die Höhe
oder die Breite eines um diesen Bereich umschriebenen Rechtecks
als die Größeninformation
genutzt.
-
Ein gerades Linienmuster entspricht
einem horizontal oder vertikal langen Muster, das durch einen Maskenprozeß unter
Verwendung einer horizontal oder vertikal langen Maske und einen
Segmentintegrationsprozeß aus
einem Eingabebild extrahiert wurde. Die Information eines geraden
Linienmusters enthält
zum Beispiel Koordinatenwerte eines Rechtecks, welches mehrere Segmentmuster
umschreibt, die das gerade Linienmuster strukturieren. Das Segmentmuster
entspricht einem Pixelbereich in einer Segmentgestalt, die durch
den Maskenprozeß aus einem
Bild extrahiert wird.
-
Die gerade Linien extrahierende Einheit 5 bestimmt
jeden von Schwellenwerten basierend auf der Größe des Standardmusters und
klassifiziert gerade Linienmuster in einem Bild basierend auf den Schwellenwerten.
Bei diesem Prozeß wird
ein gerades Linienmuster, das sich von einem schattierten Abschnitt
oder einem Zeichen ableitet, welches ein anderes Zeichen etc. berührt, aus
Kandidaten für
Linien mit Teilung ausgeschlossen, und ein korrekter Kandidat für eine Linie
mit Teilung kann extrahiert werden.
-
Gemäß der zweiten Ausführungsform
extrahiert die gerade Linien extrahierende Einheit 5 die
Information eines oder mehrerer gerader Linienmuster aus einem Eingabebild;
erhält
die Berechnungseinheit 4 den repräsentativen Wert der Größen des
einen oder mehrerer gerader Linienmuster. Die gerade Linien verarbeitende
Einheit 7 legt basierend auf dem repräsentativen Wert einen Schwellenwert
fest und verarbeitet die Information des einen oder mehrerer gerader
Linienmuster unter Verwendung des Schwellenwertes.
-
Die Berechnungseinheit 4 erhält die repräsentative
Größe gerader
Linienmuster zum Beispiel basierend auf einem Histogramm von Höhen oder Breiten mehrerer
gerader Linienmuster. Die gerade Linien verarbeitende Einheit 7 führt solche
Operationen durch wie Festlegen eines Schwellenwertes nahe dem repräsentativen
Wert und Ausschließen
eines geraden Linienmusters, dessen Größe größer als der Schwellenwert ist
etc., dadurch einen korrekten Kandidaten für eine Linie mit Teilung extrahierend.
-
Gemäß der dritten Ausführungsform
extrahiert die gerade Linien extrahierende Einheit 5 die
Information eines oder mehrerer gerader Linienmuster aus einem Eingabebild.
Die Berechnungseinheit 4 erhält den repräsentativen Wert der Größen eines
oder mehrerer Segmentmuster, die ein oder mehrere gerade Linienmuster
strukturieren. Die gerade Linien verarbeitende Einheit 7 legt
basierend auf dem repräsentativen
Wert einen Schwellenwert fest und verarbeitet die Information des
einen oder der mehreren geraden Linienmuster unter Verwendung des Schwellenwertes.
-
Ein Segmentmuster entspricht einem
Pixelbereich in einer Segmentgestalt, welche durch den Maskenprozeß wie oben
beschrieben aus einem Bild extrahiert wird. Die Berechnungseinheit 4 erhält die repräsentative
Größe von Segmentmustern
zum Beispiel basierend auf einem Histogramm der Höhen oder
Breiten mehrerer Segmentmuster. Die gerade Linien verarbeitende
Einheit 7 kann einen korrekten Kandidaten für eine Linie
mit Teilung extrahieren durch Durchführen der Operationen wie zum
Beispiel Ausschließen
eines geraden Linienmusters, das nur aus Segmentmustern besteht,
deren Größen größer als
der Schwellenwert sind, basierend auf dem repräsentativen Wert.
-
Gemäß der vierten Ausführungsform
extrahiert die Segmente extrahierende Einheit 3 die Information
eines oder mehrerer Segmentmuster aus einem Eingabebild. Die Speichereinheit 2 klassifiziert die
Information eines oder mehrerer Segmentmuster in die Information
eines großen
Segmentmusters und die Information eines kleinen Segmentmusters
und speichert sie. Die gerade Linien extrahierende Einheit 5 untersucht
einen Verknüpfungszustand
des einen oder mehrerer Segmentmuster und extrahiert, wenn ein großes Segmentmuster
mit kleinen Segmentmustern verknüpft
ist, ein aus den kleinen Segmentmustern bestehendes gerades Linienmuster
ungeachtet der Größe des großen Segmentmusters.
-
Die Information eines Segmentmusters schließt zum Beispiel
die Koordinatenwerte eines Rechtecks ein, das ein Segmentmuster
umschreibt etc.
-
Die Speichereinheit 2 bringt
zum Beispiel eine bestimmte Attributinformation an der Information eines
Segmentmusters an, dessen Größe größer als ein
geeigneter Schwellenwert ist, nimmt eine Unterscheidung zwischen
der Information des großen Segmentmusters
und der Information eines kleinen Segmentmusters vor und speichert
die Ergebnisse. Die gerade Linien extrahierende Einheit 5 ignoriert ein
großes
Segmentmuster und verknüpft
geeigneterweise kleine Segmentmuster auf beiden Seiten des großen Segmentmusters,
wenn sie zum Beispiel mehrere Segmentmuster integriert, welche überlappen,
und extrahiert ein Rechteck, welches die Muster umschreibt, als
ein gerades Linienmuster.
-
Mit diesem Prozeß kann aus einem Bild, das eine
Linie mit Teilung enthält,
welche einen großen Pixelbereich
wie zum Beispiel einen schattierten Abschnitt, ein Zeichen etc.
berührt,
ein Muster gerader Linien oder gerades Linienmuster, das durch die
Größe dieses
Bereichs nicht beeinflußt
wird, als ein korrekter Kandidat für eine Linie mit Teilung extrahiert werden.
-
Gemäß der fünften Ausführungsform extrahiert die gerade
Linien extrahierende Einheit 5 aus einem Eingabebild die
Information eines oder mehrerer gerader Linienmuster. Die gerade
Linien löschende Einheit 9 löscht ein
gerades Linienmuster, das aus Segmentmustern besteht, deren Größen größer als ein
Schwellenwert sind, unter dem einen oder den mehreren geraden Linienmustern.
-
Die gerade Linien löschende
Einheit 9 schließt
zum Beispiel ein gerades Linienmuster, das aus nur Segmentmustern
besteht, deren Dicken viel größer als
die repräsentative
Dicke von Segmentmustern sind, aus Kandidaten für eine Linie mit Teilung aus.
Bei diesem Prozeß wird
aus Kandidaten für Linien
mit Teilung ein gerades Linienmuster ausgeschlossen, das aus einer
verunstalteten Zeichenkette etc. abgeleitet wird, dadurch einen
korrekten Kandidaten für
eine Linie mit Teilung extrahierend.
-
Gemäß der sechsten Ausführungsform
extrahiert die gerade Linien extrahierende Einheit 5 die Information
eines geraden Linienmusters aus einem Eingabebild. Die Graphen erzeugende
Einheit 6 erhält
die Anzahl Pixel, die in ei nem Segmentmuster einer Standardgröße unter
einem oder mehreren Segmentmustern enthalten sind, die das gerade
Linienmuster strukturieren, und erzeugt einen Graphen, der die Anzahl
Pixel in der Umgebung des geraden Linienmusters repräsentiert.
Die gerade Linien löschende
Einheit 9 bestimmt basierend auf der Gestalt des Graphen,
ob das gerade Linienmuster zu löschen
ist oder nicht.
-
Die Graphen erzeugende Einheit 6 erzeugt
z. B. einen Satz Segmentmuster einer Standardgröße, indem ein großes Segmentmuster
aus einem Satz Segmentmuster ausgeschlossen wird, die ein gerades
Linienmuster strukturieren. Die Graphen erzeugende Einheit 6 verschiebt
ihn dann zu dem Bereich um das gerade Linienmuster und erzeugt einen
Graphen, der die Beziehung zwischen dem Verschiebungsbetrag und
der Anzahl Pixel repräsentiert.
Falls die Gestalt des Graphen glatt und der Maximalwert unklar ist,
löscht überdies
die gerade Linien löschende
Einheit 9 das gerade Linienmuster aus den Kandidaten für Linien
mit Teilung.
-
Für
ein aus dem Inneren eines schattierten Abschnitts oder einer verunstalteten
Zeichenkette extrahiertes gerades Linienmuster existieren oft Pixel überall um
das gerade Linienmuster. In solch einem Fall wird die Gestalt des
Graphen glatt, und das gerade Linienmuster wird aus Kandidaten für Linien
mit Teilung ausgeschlossen. Als Folge kann ein korrekter Kandidat
für eine
Linie mit Teilung extrahiert werden.
-
Die in 2A gezeigte
Speichereinheit 2 entspricht zum Beispiel einem in 3 gezeigten Speicher 32,
der später
beschrieben werden soll. Die Schätzeinheit 1,
die Segmente extrahierende Einheit 3, die Berechnungseinheit 4,
die gerade Linien extrahierende Einheit 5, die Graphen
erzeugende Einheit 6, die gerade Linien verarbeitende Einheit 7,
die gerade Linien integrierende Einheit 8 und die gerade
Linien löschende
Einheit 9 entsprechen einer CPU (zentrale Verarbeitungseinheit) 31 und
dem Speicher 32.
-
Gegenwärtig wurde ein Formen lernendes System
eines Dokuments im Tabellenformat entwickelt, um ein Schlüsselwort
wie z. B. einen Titel aus einer Tabelle etc. mit hoher Genauigkeit
automatisch zu extrahieren. Bei diesem System wird ein eine Tabelle
enthaltendes Dokument vorher registriert, und danach wird aus dem
registrierten Dokument ein korrektes Schlüsselwort mit ho her Genauigkeit
extrahiert. Die vorliegende Erfindung kann verwendet werden, um
eine Linie mit Teilung aus einem Dokumentenbild korrekt zu extrahieren,
wenn die Form eines Dokuments im Tabellenformat gelernt ist.
-
Die vorliegende Erfindung, welche
die Technik zum Extrahieren einer Linie mit Teilung in einem Arbeitsblatt
gemäß der herkömmlichen
Technik oder den herkömmlichen
Techniken in früheren
Anmeldungen verbessert, trifft eine Unterscheidung zwischen einer
aus einer ursprünglichen
Linie mit Teilung extrahierten geraden Linie und einer geraden Linie,
die aus einer Zeichenkette fälschlicherweise
extrahiert wurde, indem die Information kleiner Segmente vollständig ausgenutzt
wird, die eine Linie mit Teilung strukturieren. Als Folge kann eine
Linie mit Teilung korrekt extrahiert werden, selbst wenn ein Zeichen
eine Linie mit Teilung berührt.
-
Selbst wenn es ein Segment gibt,
das aus einem verunstalteten Abschnitt einer Tabelle extrahiert wurde,
werden überdies
Kandidaten für
Linien mit Teilung erhalten, indem nur auf Segmente abgezielt wird,
die aus einer ursprünglichen
Linie mit Teilung extrahiert wurden. Eine korrekte Linie mit Teilung
wird dann basierend auf der Gestalt und Positionsbeziehung einer
Linie mit Teilung und dem Verteilungszustand schwarzer Pixel in
einem Segment der Linie mit Teilung extrahiert.
-
Die folgende Ausführungsform zielt auf ein Dokument,
in welchem verschiedene Zeichen wie z. B. ein ein Frame berührendes
Zeichen oder ein Zeichen über
ein Frame hinaus existieren, wenn es ein oder mehrere Frames wie
z. B. ein Frame gibt, dessen Größe, Position
oder Neigung unbekannt ist. Es soll nun der Fall betrachten, in
welchem ein Frame aus solch einem Dokumentenbild extrahiert wird.
-
2B ist
ein Funktionsblockdiagramm, das ein Linien mit Teilung extrahierendes
Gerät gemäß dieser
Ausführungsform
zeigt. In dieser Figur ist ein Eingabemuster 11, auf das
abgezielt werden soll, ein Binärbild,
in welchem eine extreme Neigung oder eine Rotation korrigiert werden.
Die schattierten Prozeßblöcke geben
die Prozesse an, die von denjenigen gemäß den früheren Anmeldungen überwiegend verschieden
sind, einschließlich
der Anmeldung "Pattern
Extracting Apparatus and Pattern Region Extracting Method" (japanische Patentanmeldung H8-107568),
etc.
-
Nachdem eine Reduzierungsverarbeitungseinheit 12 ein
Bild reduziert und eine Verkettungsmuster extrahierende Einheit 13 ein
Verkettungsmuster extrahiert, berechnet das Linien mit Teilung extrahierende
Gerät den
häufigsten
Wert einer Höhe
von Rechtecken (Prozeß P1),
und eine Maskenverarbeitungseinheit 14 führt Verdünnungsoperationen durch.
-
Danach führt eine horizontale gerade
Linien extrahierende Einheit 15 eine horizontale Adjazenzprojektion
(Prozeß P2),
eine horizontale Segmentdetektion (Prozeß P3), eine horizontale
Segmentintegration (Prozeß P4)
und eine Suche nach einer horizontalen geraden Linie (Prozeß P5)
durch. Als nächstes
führt das
Linien mit Teilung extrahierende Gerät eine Detektion einer horizontalen
gepunkteten Linie durch (Schritt P6). Nachdem eine vertikale
gerade Linien extrahierende Einheit 16 eine vertikale Adjazenzprojektion
(Prozeß P7),
eine vertikale Segmentdetektion (Prozeß P8), eine vertikale
Segmentintegration (Prozeß P9)
und eine Suche nach einer vertikalen geraden Linie (Prozeß P10)
durchführt, führt das
Linien mit Teilung extrahierende Gerät eine Detektion einer vertikalen
gepunkteten Linie (Prozeß P11)
durch.
-
Als nächstes berechnet das Linien
mit Teilung extrahierende Gerät
den häufigsten
Wert einer Höhe
horizontaler gerader Linien (Prozeß P12), berechnet
den häufigsten
Wert einer Breite vertikaler gerader Linien (Prozeß P13),
berechnet den häufigsten
Wert einer Höhe
horizontaler Segmente (Prozeß P14)
und berechnet den häufigsten
Wert einer Breite vertikaler Segmente (Prozeß P15). Das Gerät integriert
dann gerade Linien, welche vollständig überlappen (Prozeß P16),
und löscht
eine unnötige
gerade Linie basierend auf der Gestalt eines geradlinigen Rechtecks
und der Distanz zum nächsten
geradlinigen Rechteck (Prozeß P17).
Als nächstes
löscht
das Gerät
eine unnötige
gerade Linie basierend auf der Verknüpfungsbeziehung zwischen vertikalen
und horizontalen geraden Linien (Prozeß P18) und integriert gerade
Linien, welche teilweise überlappen
(Prozeß P19).
-
Das gerade Linien extrahierende Gerät schließt eine
gerade Linie aus, die nahezu vollständig mit anderen überlappt
(Prozeß P20)
und löscht
eine gerade Linie, die aus nur Segmenten besteht, deren Größen größer als
ein vorbestimmter Schwellenwert sind (Prozeß P21). Das Gerät bringt
eine Markierung an einem Segment an, dessen Größe größer als der Schwellenwert ist
(Prozeß P22), prüft eine
gerade Linie, während
ein Segment, auf das abgezielt werden soll, verschoben wird und
löscht
eine unnötige
gerade Linie (Prozeß P23)
und gibt die verbleibenden geraden Linien aus (Prozeß P24).
-
Das gerade Linien extrahierende Gerät gemäß dieser
Ausführungsform
wird durch zum Beispiel eine Informationsverarbeitungsvorrichtung (Computer)
implementiert, die in 3 dargestellt
ist. Die in 3 dargestellte
Informationsverarbeitungsvorrichtung umfaßt eine CPU 31, einen
Speicher 32, eine Eingabevorrichtung 33, eine
Ausgabevorrichtung 34, eine externe Speichervorrichtung 35,
eine Medienantriebsvorrichtung 36, eine Netzwerkverbindungsvorrichtung 37 und
einen photoelektrischen Wandler 38, die alle über einen
Bus 39 miteinander verbunden sind.
-
Die CPU 31 führt ein
im Speicher 32 gespeichertes Programm aus und führt jeden
der in 28 gezeigten
Prozesse durch. Als der Speicher 32 werden zum Beispiel
ein ROM (Nurlesespeicher), RAM (Direktzugriffsspeicher) etc. verwendet.
-
Die Eingabevorrichtung 32 entspricht
zum Beispiel einer Tastatur, einer Zeigervorrichtung etc. und wird
verwendet, um eine Anforderung oder Anweisung von einem Nutzer einzugeben.
Die Ausgabevorrichtung 34 entspricht einer Anzeigevorrichtung,
einem Drucker etc. und wird verwendet, um das Ergebnis eines Prozesses
etc. auszugeben.
-
Die externe Speichervorrichtung 35 ist
zum Beispiel eine Magnetplattenvorrichtung, eine Bildplattenvorrichtung
oder eine magnetooptische Plattenvorrichtung etc. und kann ein Programm
und Daten speichern. Sie wird als eine Datenbank eines elektronischen
Dateiorganisationssystems genutzt, welches zum Speichern von Bildern,
Schlüsselworten
etc. bestimmt ist.
-
Die Medienantriebsvorrichtung 36 treibt
ein tragbares Speichermedium 40 an und kann auf dessen
gespeicherte Inhalte zugreifen. Als das tragbare Speichermedium
kann ein beliebiges computerlesbares Speichermedium wie z. B. eine
Speicherkarte, eine Diskette, ein CD-ROM (Compaktdisk-Nurlesespeicher),
eine optische Platte oder Bildplatte, eine magnetooptische Platte
etc. verwendet werden. Das tragbare Speichermedium 40 speichert
zusätzlich
zu Daten das Programm zum Durchführen
der in 2B dargestellten Prozesse.
-
Die Netzwerkverbindungsvorrichtung 37 ist mit
einem beliebigen Datenübertragungsnetzwerk wie
z. B. einem LAN (Lokalbereichsnetz) etc. verbunden und führt eine
Datenumwandlung etc. durch, die eine Datenübertragung oder Kommunikation
begleitet. Das Linien mit Teilung extrahierende Gerät kann erforderliche
Daten oder ein Programm von einer externen Datenbank etc. über die
Netzwerkverbindungsvorrichtung 37 empfangen. Der photoelektrische
Wandler 38 ist zum Beispiel ein Bildscanner und dazu bestimmt,
ein zu verarbeitendes normales Dokumentenbild einzugeben.
-
Im Speicher 32 werden für die Prozesse
erforderliche Daten zum Beispiel wie die in 4 gezeigte Struktur verwaltet. In dieser
Figur besteht eine Information 41 eines Eingabebildes aus
der Anzahl Tabellen (Tabellenformat-Frames), die in einem Bild enthalten
sind, und einer Information 42 jeder Tabelle.
-
Die Information 42 jeder
Tabelle besteht aus den Koordinatenwerten eines umschriebenen Rechtecks
einer Tabelle, der Anzahl Zellen, die in der Tabelle enthalten sind,
einer Information 43 jeder Zelle, der Anzahl horizontaler
gerader Linien, die in der Tabelle enthalten sind, einer Information 44 jeder
horizontalen geraden Linie, der Anzahl vertikaler gerader Linien,
die in der Tabelle enthalten sind, und einer Information 44 jeder
vertikalen geraden Linie. Eine Zelle gibt hier einen durch Linien
mit Teilung umgebenen Bereich an.
-
Die Information 43 jeder
Zelle enthält
Koordinatenwerte einer Zelle, und die Information 44 jeder geraden
Linie besteht aus den Koordinatenwerten eines eine gerade Linie
repräsentierenden
Rechtecks, der Attributinformation der geraden Linie, der Anzahl kleiner
Segmente, die in der geraden Linie enthalten sind, einer Information 45 jedes
kleinen Segments und einer Seriennummer der geraden Linie in dem gesamten
Bild. Die Information 45 jedes kleinen Segments enthält die Attributinformation
eines kleinen Segments und die Koordinatenwerte eines Rechtecks,
das das kleine Segment repräsentiert.
Die Attributinformation einer geraden Linie und ein kleines Segment
werden verwendet, um eine Unterscheidung zum Beispiel zwischen einer
durchgezogenen Linie und einer gepunkteten oder gestrichelten Linie und
zwischen einem Wildcard- oder Stellvertreter-Segment, dessen Höhe oder
Breite einen vorbestimmten Wert übersteigt,
und einem anderen Segment zu treffen.
-
Als nächstes wird die Erläuterung
jedes der in 2B gezeigten Prozesse
geliefert, indem auf 5 bis 24 verwiesen wird.
-
Falls die Auflösung eines Bildes des Eingabemusters 11 eine
vorbestimmte Auflösung
oder größer ist
und die Größe des Bildes
verhältnismäßig groß ist, führt die
Reduzierungsprozeßeinheit 12 einen
Prozeß zum
Reduzieren eiens Bildes durch, um die Effizienz des Prozesses zu
verbessern. Das eingegebene Ursprungsbild wird unverändert gespeichert.
-
Die Verkettungsmuster extrahierende
Einheit 13 extrahiert einen Verkettungsbereich schwarzer
Pixel, in welchem Pixel in 8 Richtungen verkettet sind, als
ein partielles Muster mit einem Etikettierprozeß, um jedes Muster stabil abzutasten,
ohne von der relativen Beziehung zwischen den Positionen abhängig zu
sein, an denen mehrere Tabellen angeordnet sind. Die Verkettungsmuster
extrahierende Einheit 13 extrahiert dann ein Tabellenmuster,
das in einem Bild enthalten ist, indem das partielle Muster untersucht wird.
-
Da die Größe des mit dem Etikettierprozeß erhaltenen
partiellen Musters später
benötigt
wird, berechnet die Verkettungsmuster extrahierende Einheit 13 die
Koordinatenwerte der Vertices des umschriebenen Rechtecks, welches
das partielle Muster approximiert, während der Etikettierprozeß durchgeführt wird.
Die Verkettungsmuster extrahierende Einheit 13 extrahiert
dann ein Muster, dessen Größe vorbestimmt
oder größer ist,
unter extrahierten partiellen Mustern als einen Kandidaten einer
Tabelle.
-
Wenn ein großes Verkettungsmuster extrahiert
wird, wird zur gleichen Zeit auch ein Muster innerhalb des großen Verkettungsmusters
extrahiert, dessen Größe vorbestimmt
oder größer ist,
und diese großen
und kleinen Muster werden als die Muster mit dem gleichen Etikett
gehandhabt. Falls ein Muster, welches ursprünglich eine Tabelle repräsentiert,
aufgrund einer Unschärfe
in zwei oder mehr Muster getrennt ist, können die separaten Muster als
Muster verarbeitet werden, die zu einem identischen Etiket gehören. Nun
werden wir die zulässige
Länge einer Unschärfe basierend
auf der Größe eines
Musters berechnen, auf das abgezielt werden soll.
-
5 veranschaulicht
den oben beschriebenen Etikettierprozeß. In einem Bild auf der linken
Seite von 5 extrahiert
zuerst die Verkettungsmuster extrahierende Einheit 13 ein
Muster 51 mit dem größten umschriebenen
Rechteck und bringt ein Etikett an ihm an. Da die Breite eines horizontalen
Linienmusters 56 zwischen Mustern 52 und 57 ein
vorbestimmter Wert oder mehr ist, erkennt die Verkettungsmuster
extrahierende Einheit 13 das horizontale Linienmuster 56 als
einen Abschnitt des großen
Musters 51 und handhabt im folgenden Prozeß diese
Muster als die Muster mit dem gleichen Etikett, wie auf der rechten
Seite von 5 gezeigt
ist. Demgemäß wird das Muster 56 mit
dem gleichen Etikett wie dem des Musters 51 angebracht.
-
Als nächstes erhält das Linien mit Teilung extrahierende
Gerät das
Histogramm, das die Häufigkeitsverteilung
von Höhen
von Rechtecken repräsentiert,
die durch die Verkettungsmuster extrahierende Einheit 13 extrahiert
wurden, unter Verwendung des Verfahrens gemäß der früheren Anmeldung 08/694,503
im Prozeß P1.
Das Gerät
erhält
dann den häufigsten
Wert "most_freq_height" und schätzt ihn als
die Standardgröße von Zeichen,
die in einem Dokument enthalten sind. Der erhaltene häufigste
Wert wird verwendet, um in den folgenden Prozessen verschiedene
Arten von Schwellenwerten festrulegen. Der Prozeß zum Berechnen des häufigsten
Wertes wird wie folgt durchgeführt.
-
Zunächst wird aus einem Satz umschriebener
Rechtecke, die aus dem Etikettierprozeß resultieren, in 6 dargestelltes Histogramm
von Rechteckhöhen
erzeugt. In 6 gibt die
horizontale Achse die Höhe
jedes umschriebenen Rechtecks an, während die vertikale Achse die
Anzahl Rechtecke mit dieser Höhe
(Häufigkeitswert)
angibt. Die Höhe eines
umschriebenen Rechtecks wird hier durch Verwenden der Höhe eines
Pixels als die Höheneinheit erhalten.
-
Als nächstes wird die Korrespondenz
zwischen dem Häufigkeitswert
und der maximalen Höhe unter
den Rechteckhöhen
mit diesem Häufigkeitswert
erhalten und als eine Tabelle von Rechteckhöhen im Speicher 32 gespeichert.
Die Inhalte der Tabelle werden, beginnend vom Häufigkeitswert "0", sequentiell untersucht. Falls der
Betrag einer Änderung einer
Höhe innerhalb "1" liegt, folgen einander sich ändernde
Häufigkeitswerte,
und die Gesamtzahl der Änderungen
der Häufigkeitswerte
ist gleich einem vorbestimmten Wert oder größer, und die größte Höhe unter
denjenigen mit den sich ändernden
Häufigkeitswerten
wird als der häufigste
Wert "most_freq_height" einer Höhe definiert.
-
7 zeigt
ein Histogramm, das die Inhalte der Tabelle von Rechteckhöhen entsprechend
dem in 6 gezeigten Histogramm
repräsentiert.
Aus 7 ist bekannt, daß die Höhe, bei
der der Häufigkeitswert
sich schnell ändert,
der höchste
Häufigkeitswert
ist. Falls der häufigste
Wert so erhalten wird, wird der Einfluß von Rauschen, das kleiner
als ein Zeichen ist, eliminiert, und die Höhe der Standardgröße von Zeichen,
die in einem Dokument enthalten sind, kann erhalten werden.
-
8 veranschaulicht
beispielhaft eine einfache Tabelle von Rechteckhöhen. In dieser Figur sind vier
Häufigkeitswerte
und eine maximale Höhe unter
den Höhen
der Rechtecke mit diesen Häufigkeitswerten
in Paaren gespeichert. Falls die Inhalte der Tabelle in ein Histogramm
eingegeben werden, wird es wie in 9 gezeigt
vorliegen.
-
Betrachtet man das in 9 gezeigte Histogramm sequentiell
vom niedrigsten Häufigkeitswert zum
höchsten,
mit anderen Worten von der höchsten Höhe zur niedrigsten,
ist bekannt, daß sich
die Häufigkeitswerte
an den jeweiligen Positionen der Höhen 10, 9 und 8 um 5,5 und 7 ändern. Die
Differenz zwischen diesen aufeinanderfolgenden Höhen sind 1, und die
Gesamtzahl der Änderungen
der Häufigkeitswerte
ist 17. Nimmt man an, daß der Schwellenwert von Änderungen
von Häufigkeitswerten 9 ist,
ist die Gesamtzahl der Änderungen
der Häufigkeitswerte
an den jeweiligen Positionen der Höhen 10, 9 und 8 mehr
als der Schwellenwert. Daher wird die Höhe, bei der zuerst "10" erscheint, als die "most_freq_height" erkannt.
-
Als nächstes erkennt die Maskenverarbeitungseinheit 14 ein
Verkettungsmuster, das durch die Verkettungsmuster extrahierende
Einheit 13 extrahiert wurde, dessen Größe eine vorbestimmte Größe oder
größer ist,
und ein Verkettungsmuster (mit dem gleichen Etikett wie dem des
vorherigen), das im erstgenannten Muster enthalften ist, dessen
Größe eine vorbestimmte
Größe oder
größer ist,
als Kandidaten einer Tabelle. Die Maskenverarbeitungseinheit 14 führt dann
den Maskenprozeß mit
dem Verfahren gemäß der früheren Anmeldung "Frame Extracting
Apparatus and Rectangle Extracting Apparatus" (japanische Patentanmeldung H7-203259)
durch.
-
Dieser Maskenprozeß wird durchgeführt, um die
Extraktion einer nur in einer Tabelle enthaltenen langen geraden
Linie zu erleichtern, indem eine extrem schräge Komponente aus einem Bild
ausgeschlossen wird. Konkret scannt der Maskenprozeß 14 das
gesamte Bild unter Verwendung von zwei Arten von Mas kenrechtecken
wie zum Beispiel horizontal und vertikal langen Rechtecken, deren
Größen vorbestimmt
sind, und berechnet das Verhältnis
von schwarzen Pixel innerhalb einer Maske. Falls das Verhältnis gleich
einem Schwellenwert oder größer ist,
wird der gesamte Bereich in der Maske mit schwarzen Pixel gefüllt und
als ein Muster zurückgelassen.
Falls das Verhältnis
kleiner als der vorbestimmte Wert ist, wird das Muster in der Maske
gelöscht.
Auf diese Weise wird die Extraktion vertikaler und horizontaler
Komponenten durchgeführt.
-
Falls das oben beschriebene Verhältnis einen
vorbestimmten Schwellenwert aufgrund der Aufeinanderfolge oder Abfolge
mehrerer Reihen oder Spalten erreicht, wird ein großer rechteckiger
Bereich erzeugt, indem die sukzessiven Muster kombiniert werden,
und seine Mittellinie wird als das Ergebnis des Prozesses erkannt.
Bei diesem Prozeß wird
ein dickes Muster dünner
gemacht. Um eine Lücke
zwischen Segmentmustern zu eliminieren, die sich aus dem Prozeß ergibt,
werden ferner Bereiche, auf die Masken angewendet werden, so festgelegt,
daß sie einander überlappen.
Das ursprüngliche
Bild vor dem Maskenprozeß wird
separat von dem Bild nach dem Maskenprozeß gespeichert.
-
10 zeigt
das Ergebnis des Maskenprozesses, der für die beiden Muster 51 und 56 durchgeführt wird,
die auf der rechten Seite von 5 gezeigt sind.
In diesem Fall wird das Bild vor dem Prozeß, welches auf der linken Seite
von 10 dargestellt ist,
in eines umgewandelt, das auf der rechten Seite von 10 dargestellt ist. Nur die vertikalen
und horizontalen Komponenten der Muster 51 und 56 werden
in dem Bild nach der Umwandlung extrahiert, und das gesamte Muster
wird dünner
gemacht. Außerdem
erweisen sich die Muster 51 und 56 als Folge eines
Addierens eines Teils der Muster im Maskenprozeß als verkettet.
-
Die horizontale Linien extrahierende
Einheit 15 berechnet dann den Projektionswert des durch Ausführen des
Maskenprozesses für
den vertikalen Prozeß erzeugten
Bildes, welches in 10 dargestellt
ist, unter Verwendung des herkömmlichen
Adjazenzprojektionsverfahrens. Ein horizontales Segment einer vorbestimmten
Länge oder
ein Teil der horizontalen geraden Länge wird unter Verwendung von
Rechtecken approximiert und im Prozeß P3 wie in 11 gezeigt detektiert. Diese
Prozesse nutzen das Bild, für
das der Maskenprozeß durchgeführt wird,
während
der folgende Prozeß das
Ursprungsbild nutzt.
-
Die horizontale gerade Linien extrahierende Einheit 15 untersucht
den Verknüpfungszustand
von Segmenten im Prozeß P4 und
extrahiert eine gerade Linie, die aus mehreren Segmenten besteht,
als einen Kandidaten für
eine Linie mit Teilung. Bei diesem Prozeß wird eine lange gerade Linie
detektiert, indem die benachbarten rechtwinkligen Segmente unter den
detektierten rechtwinkligen Segmenten integriert werden, und die
horizontale gerade Linien extrahierende Einheit 15 approximiert
die detektierte gerade Linie unter Verwendung ihres umschriebenen
Rechtecks, wie in 12 gezeigt
ist.
-
Falls ein Segment, dessen Dicke eine
vorbestimmte Dicke oder größer ist
(ein Wildcard- oder Stellvertreter-Segment) 61 (siehe 13) ein Stück nach
der Zeit der Integration von Segmenten gefunden wird, wird es ignoriert,
und nur auf die dünnen Segmente,
die das dicke Segment ausschließen, wird
abgezielt, und diese werden integriert. Ob ein Segment ein Stellvertreter-Segment
ist oder nicht, wird in Abhängigkeit
von der in der in 4 gezeigten
Segmentinformation 45 beschrieben. Falls ein solch großes Segment
existiert, wird die das große Segment
enthaltende gerade Linie nicht ausgegeben. Der Integrationsprozeß, der das
große
Segment für
eine gerade Linie nicht beeinflußt, wird durchgeführt.
-
Selbst wenn es ein Muster wie zum
Beispiel ein Zeichen oder eine Graphik etc. gibt, das einen schattierten
Abschnitt oder eine Linie mit Teilung berührt, kann auf diese Weise nur
eine Linie mit Teilung extrahiert werden, indem das Zeichen oder
die Graphik etc. ausgeschlossen wird. Die Einzelheiten eines solchen
Integrationsprozesses sollen später
beschrieben werden. Die Information einer geraden Linie, die als
Ergebnis des Integrationsprozesses extrahiert wird, enthält die Information
jedes von Segmenten, die die gerade Linie strukturieren, wie in 4 gezeigt ist.
-
Die horizontale gerade Linien extrahierende Einheit 15 sucht
dann, wie in 14 gezeigt
ist, nach dem Muster (Pixel) der geraden Linie, um das rechte und
linke Ende der horizontalen geraden Linie genau zu detektieren,
die unter Verwendung der Rechtecke im Prozeß P5 approximiert
wird. Falls ein Abschnitt ohne Pixel (leerer Raum) in einer fortschreitenden Richtung
während
der Suche gefunden wird, wird die Suche in der fortschreitenden
Richtung fortgesetzt basierend auf der Annahme, daß Pixel
bis zu einer vorbestimmten Anzahl existie ren. Falls ein leerer Raum über die
vorbestimmte Anzahl hinaus existiert, wird die Suche an diesem Punkt
beendet. Der folgende Prozeß nutzt
dann den durch eine Suche detektierten Punkt als das Ende einer
geraden Linie.
-
Als nächstes extrahiert das Linien
mit Teilung extrahierende Gerät
eine horizontale gepunktete Linie unter Verwendung des Verfahrens
gemäß der früheren Anmeldung "Frame Extracting
Apparatus and Rectangle Extracting Apparatus" (japanische Patentanmeldung H7-203259).
Bei diesem Prozeß werden partielle
Muster einer vorbestimmten Größe, welche regelmäßig angeordnet
sind, gesucht, und die Position einer gepunkteten Linie wird dargestellt,
indem sie durch ein Rechteck umschrieben werden.
-
Im folgenden Prozeß wird ein
die Position einer gepunkteten Linie repräsentierendes Rechteck in ähnlicher
Weise wie für
ein Rechteck gehandhabt, das die Position einer detektierten geraden
Line repräsentiert.
Man beachte, daß ein
Attribut einer gepunkteten Linie an die Attributinformation einer
geraden Linie entsprechend einer gepunkteten Linie angebracht wird,
während
ein Attribut einer durchgezogenen Linie an die Attributinformation
einer geraden Linie entsprechend einer durchgezogenen Linie angebracht
wird. Das heißt,
die Unterscheidung zwischen diesen Linien wird getroffen.
-
Die Prozesse P7, P8, P9, P10,
die von der vertikale gerade Linien extrahierenden Einheit 16 durchgeführt werden,
und der Prozeß P11 zur
Detektion vertikaler gepunkteter Linien sind ähnlich denjenigen in den oben
beschriebenen Fällen
einer horizontalen geraden Linie und einer horizontalen gepunkteten
Linie.
-
Das Linien mit Teilung extrahierende
Gerät berechnet
dann im Prozeß P12 den
repräsentativen Wert
der Höhen
horizontaler gerader Linien. Bei diesem Prozeß wird das Histogramm der Höhen extrahierter
horizontaler gerader Linien erzeugt, und die Höhe mit der höchsten Häufigkeit
wird als der häufigste
Wert "mfheight" einer Höhe horizontaler
gerader Linien erkannt und als der repräsentative Wert der Höhen horizontaler
gerader Linien verwendet. Ähnlich
wird im Prozeß P13 der
repräsentative
Wert (Wert der höchsten
Häufigkeit) "mfwidth" der Breite vertikaler
gerader Linien berechnet.
-
Diese repräsentativen Werte werden verwendet,
um im folgenden Prozeß jeden
Schwellenwert festzulegen. Überdies
können
geeignete Werte, die von den Werten der höchsten Häufigkeit verschieden sind,
als die repräsentativen
Werte der Höhen
horizontaler gerader Linien und der Breiten vertikaler gerader Linien
verwendet werden.
-
Als nächstes berechnet das Linien
mit Teilung extrahierende Gerät
den repräsentativen
Wert der Höhen
horizontaler Segmente im Prozeß P14. Bei
diesem Prozeß wird
das Histogramm der Höhen aller
horizontaler Segmente, die alle in einem Bild enthaltenen geraden
Linien strukturieren, erzeugt, und die Höhe mit der höchsten Häufigkeit
wird als der häufigste
Wert "mfheight_small" einer Höhe der horizontalen
Segmente erkannt und als der repräsentative Wert der Höhen der
horizontalen Segmente verwendet. Im Prozeß P15 wird ähnlich der
häufigste Wert "mfwidth_small" der Breite aller
vertikalen Segmente berechnet, die all die vertikalen geraden Linien strukturieren.
-
Diese repräsentativen Werte werden auch verwendet,
um jeden Schwellenwert im folgenden Prozeß festzulegen. Überdies
können
andere geeignete Werte als die Werte höchster Häufigkeit als die repräsentativen
Werte der Höhen
horizontaler Segmente und Breiten vertikaler Segmente genutzt werden.
-
Als nächstes integriert das Linien
mit Teilung extrahierende Gerät
gerade Linien, welche vollständig überlappen,
im Prozeß P16.
Bei diesem Prozeß werden
sie zu einer integriert, falls eine gerade Linie nahezu komplett
mit einer anderen überlappt.
In dem Fall der in 15 gezeigten
zwei geraden Linien 62 und 63 werden sie unter
der Annahme, dass die Höhe
H1 des Abschnitts, in welchem keine Überlappung existiert, innerhalb
einer vorbestimmten erlaubten Anzahl Pixel INTEGDOT liegt, erkannt,
daß sie vollständig überlappen,
und in ein geradliniges Rechteck 64 integriert. Der Wert
von INTEGDOT ist z. B. auf 2 festgelegt.
-
Das Linien mit Teilung extrahierende
Gerät löscht dann
im Prozeß P17
eine unnötige
gerade Linie auf der Basis der Gestalt eines geradlinigen Rechtecks
oder der Distanz zwischen benachbarten geraden Linien. Für den Prozeß einer
horizontalen geraden Linie werden der Schwellenwert der Höhe "th_hei" und der Schwellenwert
der Länge
(Breite) "th_len" jeweils auf Basis
der folgenden Gleichungen berechnet.
-
th_hei = most_freq_height*2/3 ...
(1)
th_len = most_freq_height*5 ... (2)
-
Eine entsprechende horizontale Linie
wird dann in den folgenden Fällen
gelöscht.
- (a) Falls das Verhältnis
der Höhe
zur Breite eines horizontalen geradlinigen Rechtecks gleich einem Schwellenwert
FTH(=0,11) oder größer ist.
- (b) Falls das Verhältnis
der Höhe
zur Breite des horizontalen geradlinigen Rechtecks gleich einem Schwellenwert
FTH2(=0,04) oder größer ist
und die Höhe
des horizontalen Linienrechtecks gleich dem Schwellenwert der Höhe des geradlinigen
Rechtecks "th_hei" oder höher ist.
- (c) Falls die Breite des horizontalen geradlinigen Rechtecks
kleiner als ein Schwellenwert der Länge "th_len" ist.
- (d) Falls die Breite einer horizontalen geraden Linie, welche
niedriger als die Position der aktuellen horizontalen geraden Linie
und der aktuellen Linie am nächsten
ist, kleiner als der Schwellenwert der Länge "th_len" ist.
-
Zum Beispiel wird in 16 eine gerade Linie 67 gelöscht, weil
sie dem oben beschriebenen Fall (a) entspricht; wird eine gerade
Linie 68 gelöscht, weil
sie dem Fall (b) entspricht; und wird eine gerade Linie 69 gelöscht, weil
sie dem Fall (c) entspricht. Unter der Annahme, daß eine gerade
Linie 65 die aktuelle horizontale gerade Linie ist, wird
dann eine gerade Linie 66 gelöscht, weil sie dem Fall (d)
entspricht.
-
Falls die Distanz zwischen zwei benachbarten
geraden Linien kleiner als der aus "most freq_height" erhaltene Schwellenwert ist, wird ferner eine
der beiden Linien (z. B. eine kürzere)
gelöscht. Die
gleiche Operation kann auf den Prozeß für eine vertikale gerade Linie
angewendet werden.
-
Das Linien mit Teilung extrahierende
Gerät löscht dann
etwaige unnötige
gerade Linien basierend auf der Verknüpfungsbeziehung zwischen vertikalen
und horizontalen geraden Linien im Prozeß P18. Bei dem Prozeß für eine horizontale
gerade Linie wird, falls das Ende eines horizontalen geradlinigen
Rechtecks, auf das abgezielt werden soll, kein vertikales geradliniges
Rechteck berührt,
das horizontale geradlinige Rechteck gelöscht. Als Folge wird eine isolierte
gerade Linie gelöscht,
welche kein Frame einer Tabelle strukturiert, wie z. B. eine aus
einer verunstalteten und verketteten Zeichenkette extrahierte.
-
Da beide Enden 74 und 75 einer
horizontal geraden Linie 70 vertikale gerade Linien 71 und 72 beispielsweise
in 17 berühren, wird
die horizontale gerade Linie 70 nicht gelöscht. Da
eine horizontale gerade Linie 73 keine vertikale gerade
Linie berührt,
wird sie zwischenzeitlich gelöscht.
Der gleiche Prozeß wird
auf den Prozeß für eine vertikale
gerade Linie angewendet. Bei solch einem Löschprozeß kann jedoch eine gerade Linie,
welche normalerweise übriggelassen
werden soll, aufgrund des Einflusses eines Zeichenmusters in einem
Bild etc. manchmal gelöscht
werden. Zum Beispiel berühren
die Enden 77 und 78 der vertikalen geraden Linie 76 keine horizontalen
geraden Linien in dem in 18 gezeigten
Bild. Daher wird die vertikale gerade Linie 76 gelöscht, obgleich
sie das Frame der Tabelle strukturiert.
-
Demgemäß wird bestimmt, daß das Ziel
des Löschungsprozesses
auf zwei gerade Linien begrenzt ist, welche einander nahe sind,
um eine notwendige Linie ungelöscht
zurückzulassen.
In diesem Fall wird ein horizontales geradliniges Rechteck "j" erhalten, welches niedriger als ein
aktuelles horizontales geradliniges Rechteck "i" ist
und dessen Distanz zum Rechteck "i" geringer als der
häufigste
Wert "most freq_height" einer Höhe von Rechtecken
ist.
-
Falls die Enden eines der horizontalen
geradlinigen Rechtecke "i" und "j" keine vertikalen geradlinigen Rechtecke
berühren
und die Enden der vertikalen geradlinigen Rechtecke das horizontale geradlinige
Rechteck nicht berühren,
wird das horizontale geradlinige Rechteck gelöscht. Dieser Prozeß wird auch
auf den Prozeß für eine vertikale
gerade Linie angewendet. Mit solch einem Löschprozeß wird die in 18 gezeigte vertikale gerade Linie 76 kein
Prozeßziel
und bleibt ungelöscht.
-
Da auf benachbarte horizontale gerade
Linien 79 und 80 abgezielt wird und ihre Enden
eine vertikale gerade Linie 82 in 19 berühren, werden sie überdies
nicht gelöscht.
Als nächstes
wird auf eine der horizontalen geraden Linie 80 benachbarte
horizontale gerade Linie 81 abgezielt. Da diese Linie 81 keine
vertikale gerade Linie berührt,
wird sie gelöscht.
Das Ende einer vertikalen geraden Linie 84 unter benachbarten
vertikalen geraden Linien 83 und 84 berührt die
horizontale gerade Linie 79. Demgemäß wird sie nicht gelöscht. Unterdessen
wird die vertikale gerade Linie 83 gelöscht, weil sie keine horizontale
gerade Linie berührt.
-
Als nächstes integriert im Prozeß P19 das
Linien mit Teilung extrahierende Gerät gerade Linien, welche teilweise überlappen.
Bei diesem Prozeß werden
horizontale gerade Linien in absteigender Reihenfolge der Länge horizontaler
gerader Linien angeordnet. Dann wird auf eine gerade Linie "i" in der absteigenden Reihenfolge der
Länge abgezielt,
und eine oder mehrere gerade Linien, welche teilweise mit der geraden
Linie "i" überlappen, werden erhalten.
-
Falls die geraden Linien, welche
teilweise überlappen,
und die gerade Linie "i" in ein geradliniges
Rechteck integriert werden und dessen Höhe gleich dem Schwellenwert
(mfheight + THDOT) oder niedriger ist, wird die Integration durchgeführt. Der Wert
von THDOT wird auf zum Beispiel 2 festgelegt. Falls das Ergebnis
der Integration gerader Linien der häufigste Wert "mfheight" einer Höhe oder ähnlich wird,
werden sie auf diese Weise in eine integriert. Der gleiche Prozeß wird auf
den Prozeß für eine vertikale
gerade Linie angewendet.
-
In 20 überlappen
gerade Linien 85 und 86 teilweise miteinander,
und die geraden Linien 86 und 87 überlappen
teilweise miteinander. Falls die geraden Linien 85 und 86 unter
ihnen integriert werden, übersteigt
die Höhe
des integrierten Rechtecks den Schwellenwert. Demgemäß werden
nur die geraden Linien 86 und 87 integriert und
unter Verwendung des umschriebenen Rechtecks approximiert. Der gleiche
Prozeß wird
auf den Prozeß für eine vertikale
gerade Linie angewendet.
-
Der Grund, warum solch ein Prozeß zum Integrieren
gerader Linien durchgeführt
wird, ist, daß alle
aus einem geradlinigen Muster extrahierten Segmentrechtecke manchmal
nur mit dem Prozeß P4 und P9 nicht
integriert werden können.
Beispielsweise sind Segmentrechtecke (schattierte Abschnitte), die
in zwei horizontalen geraden Linien 89 und 90 enthalten
sind, welche wie in 21 gezeigt überlappen,
getrennt. Demgemäß werden
die geraden Linien 89 und 90 nicht dem Prozeß P4 integriert.
Der Prozeß P19 ermöglicht ihnen,
in solch einem Fall integriert zu werden.
-
Als nächstes löscht das Linien mit Teilung
extrahierende Gerät
im Prozeß P20
eine kürzere
Linie von zwei geraden Linien, welche nahezu vollständig überlappen.
Mit diesem Prozeß werden
horizontale geradlinige Rechtecke in absteigender Reihenfolge der
Länge einer
horizontalen geraden Linie sortiert. Als nächstes werden horizontale geradlinige
Rechtecke "i" in absteigender
Rei henfolge nacheinander extrahiert, und es wird auf ein horizontales
geradliniges Rechteck "j" abgezielt, welches
teilweise mit dem horizontalen geradlinigen Rechteck "i" teilweise überlappt. Zu dieser Zeit wird
erkannt, daß die
Positionsbeziehung zwischen den geraden Linien "i" und "j", welche mit Verweis auf 22 dargestellt ist, das Prozeßziel sind.
Unter der Annahme, daß eine
gerade Linie 91 als die gerade Linie "i" erkannt
wird, entsprechen gerade Linien 92 und 93 der
geraden Linie "j", wie in 22 dargestellt ist.
-
Der Abschnitt, in welchem die geraden
Linien "i" und "j" horizontal überlappen, wird dann erhalten. Falls
das Verhältnis "len3/len2" der Länge des überlappenden
Abschnitts "len3" zur Breite der geraden Linie "j" "len2" größer als
ein Schwellenwert OVERRATE ist, wird der folgende Prozeß durchgeführt, indem
die gerade Linie "j" als ein Löschungskandidat erkannt
wird. Man beachte, daß jedoch
der Wert von OVERRATE kleiner als "1" sein
muß.
-
Zunächst wird die vertikale Distanz
zwischen den geraden Linien "i" und "j" erhalten. Die Differenz zwischen den
Koordinatenwerten der geraden Linien "i" und "j" kann als die Distanz zu dieser Zeit
definiert werden. Die Distanz zwischen kleinen Segmentrechtecken
in den geraden Linien wird jedoch als die Distanz zwischen den geraden
Linien in Anbetracht des Falles definiert, in welchem die geraden
Linien geneigt sind. Die Erläuterung
zu solch einem Verfahren, um den Distanzwert zu erhalten, wird durch
Verweis auf 23 geliefert.
-
Unter der Annahme, daß die x-Achse
die horizontale Richtung angibt und die y-Achse die vertikale Achse
angibt, überlappen
die geraden Linien "i" und "j" in der Sektion mit der Länge "len3" von einem Punkt "x = xminkukan" bis zu einem Punkt "x = xmaxkukan", und diese Linien
enthalten jeweils mehrere Segmente, wie in 23 gezeigt ist.
-
Das Linien mit Teilung extrahierende
Gerät extrahiert
zuerst ein Segment, welches nicht als ein Stellvertreter-Segment
mit dem Segmentintegrationsprozeß P4 bestimmt wird und zuerst
im überlappenden
Abschnitt enthalten ist, aus einem Satz von Segmenten, die in der
geraden Linie "i" enthalten sind,
und erkennt das extrahierte Segment als ein Standardsegment. Hier
ist ein Segment 94 das Standardsegment. Die Werte der x-Koordinate
(xmin1, xmax1) des Standardsegments 94 werden dann erhalten.
-
Als nächstes extrahiert das Gerät alle Segmente,
deren x-Koordinatenwerte innerhalb eines Bereichs von "xmin1" bis "xmax1" liegen, aus dem Satz
der Segmente in der geraden Linie "j".
Es erhält den
Durchschnittswert der y-Achsendistanz
zwischen dem extrahierten Segment und dem Standardsegment 94 in
der geraden Linie "i" und erkennt den erhaltenen
Wert als den Distanzwert zwischen den geraden Linien "i" und "j".
-
Da das entsprechende Segment in der
geraden Linie "j" in diesem Fall nur
das Segment 95 ist, wird die Distanz zwischen diesem Segment
und dem Standardsegment 94"d" selbst der Distanzwert
zwischen den geraden Linien "i" und "j". Mit solch einem Berechnungsverfahren
kann eine genaue Distanz zwischen geraden Linien erhalten werden,
selbst wenn die geraden Linien geneigt sind.
-
Das Linien mit Teilung extrahierende
Gerät bestimmt,
ob die gerade Linie "j" zu löschen ist
oder nicht, basierend auf der so erhaltenen Distanz zwischen den
geraden Linien "i" und "j". Falls die gerade Linie "j" höher
als die gerade Linie "i" ist, wie die in 22 gezeigte gerade Linie 92,
wird die gerade Linie "j" gelöscht, wenn
der Wert der Distanz zwischen den geraden Linien "i" und "j" gleich
dem Schwellenwert OVERDOT oder kleiner ist. Der Wert von OVERDOT
wird z. B. auf "1" gesetzt. Falls die
gerade Linie "j" niedriger als die
gerade Linie "i" ist, wie die gerade Linie 93,
wird die gerade Linie "j" gelöscht, wenn
die Distanz zwischen ihnen kleiner als der Schwellenwert "most freq_height" ist.
-
Wie oben beschrieben wurde, wird
eine unnötige
horizontale gerade Linie ausgeschlossen, indem die kürzere von
zwei horizontalen geraden Linien gelöscht wird, welche nahezu vollständig überlappen.
Der gleiche Prozeß wird
auch auf den Prozeß für eine vertikale
gerade Linie angewendet.
-
Das Linien mit Teilung extrahierende
Gerät löscht dann
in dem Prozeß P21
eine gerade Linie, die aus Segmenten besteht, die größer als
ein vorbestimmter Schwellenwert sind. Bei diesem Prozeß wird,
falls die Höhen
aller Segmente, die in einer horizontalen geraden Linie enthalten
sind, höher
als der Schwellenwert (mfheight_small*2–1) sind, die gerade Linie
als eine gerade Linie erkannt, die fälschlicherweise aus einer Zeichenkette
extrahiert ist, und gelöscht.
Der gleiche Prozeß wird
auch auf den Prozeß für eine vertikale
gerade Linie angewendet.
-
Falls ein Segmentrechteck, das ein
geradliniges Rechteck strukturiert, größer als ein Schwellenwert ist,
markiert das Linien mit Teilung extrahierende Ge rät die Information über das
Segmentrechteck und erhält
die Gesamtzahl schwarzer Pixel, die in nicht markierten Segmentrechtecken
enthalten sind, in den Prozessen P22 und P23.
Das Gerät
verschiebt den Satz der nicht markierten Segmentrechtecke in der
Richtung, die zu der Richtung der Länge des geradlinigen Rechtecks
senkrecht ist, und erzeugt einen Graphen, der die Beziehung zwischen
dem Verschiebungsbetrag und der Gesamtzahl schwarzer Pixel repräsentiert.
Falls die Gestalt des Graphen glatt ist, wird das geradlinige Rechteck
aus Kandidaten für Linien
mit Teilung ausgeschlossen.
-
Das Linien mit Teilung extrahierende
Gerät führt zuerst
einen Vorprozeß für den Prozeß P23 im Prozeß P22 aus.
Bei diesem Prozeß legt,
falls die Höhe
eines Segments, das in der horizontalen geraden Linie enthalten
ist, höher
als der Schwellenwert "mfheight
small" ist, das
Gerät die
Attributinformation dieses Segments auf ein Stellvertreter-Segment
fest, so daß das
Segment im Prozeß P23 nicht
verwendet wird. Der gleiche Prozeß wird auch auf den Prozeß für eine vertikale
gerade Linie angewendet.
-
Als nächstes führt das Gerät einen Prozeß zum Prüfen/Löschen einer
geraden Linie unter Verwendung einer Segmentverschiebung durch.
Bei diesem Prozeß wird
die Gesamtzahl schwarzer Pixel, die in mehreren horizontalen Segmentrechtecken enthalten
sind, die ein horizontales geradliniges Rechteck strukturieren,
erhalten und wird als die Gesamtzahl schwarzer Pixel an der Position
erkannt, die den Verschiebungsbetrag "0" angibt
(Mittenposition). Das Gerät
erhält
dann die Gesamtzahl schwarzer Pixel an jeder Position, indem die
Segmentrechtecke in der zu einer Richtung der Länge des horizontalen geradlinigen
Rechtecks senkrechten vertikalen Richtung um den Betrag der Höhe des horizontalen
geradlinigen Rechtecks auf und ab verschoben werden, und erzeugt
einen Graphen, der die Gesamtzahl schwarzer Pixel entsprechend dem
Verschiebungsbetrag repräsentiert.
-
Falls ein Verhältnis der Gesamtzahl schwarzer
Pixel an den Positionen in den Aufwärts- bzw. Abwärtsrichtungen
zu einer Standardzahl, wenn der Maximalwert der Gesamtzahl schwarzer
Pixel um die Mittenposition als die Standardzahl definiert ist,
kleiner als ein vorbestimmter Wert ist, erkennt das Gerät dieses
geradlinige Rechteck als eine Linie mit Teilung und gibt sie aus.
In anderen Fällen
ist das geradlinige Rechteck eine gerade Linie, die fälschlicherweise aus einer
Zeichenkette etc. extrahiert ist. Sie wird nicht als eine Linie
mit Teilung erkannt und gelöscht. Der
gleiche Prozeß wird
auf einen Prozeß für eine vertikale
gerade Linie angewendet.
-
Der in 24 gezeigte
Graph wird zum Beispiel für
das in 1C gezeigte Bild erzeugt. In 24 repräsentieren Graphen 96 und 97 jeweils
die Verteilungen schwarzer Pixel um die entsprechenden horizontalen
geraden Linien. Unter der Annahme, daß die Höhe der horizontalen geraden
Linie "height" ist, wird jedes
der Segmente in der horizontalen geraden Linie um ein Pixel in der "y"-Richtung
in der Sektion "+/–height" verschoben, und
die Gesamtzahl schwarzer Pixel, die in den Segmenten bei jeder Verschiebungsposition
enthalten sind, ist aufgetragen.
-
In dem Graphen 96 existiert
der Maximalwert "Peak" der Gesamtzahl schwarzer
Pixel an der Position des Verschiebungsbetrages "0".
Die Verteilung der Gesamtzahl schwarzer Pixel ist niedriger als
der Wert, der erhalten wird, indem "Peak" mit "THSHIFT" in den oberen und
unteren Abschnitten des Graphen multipliziert wird. Der Wert von 'THSHIFT" ist auf z. B. 0,44
festgelegt.
-
Eine solche Verteilung gibt an, daß schwarze Pixel
an der Position des Verschiebungsbetrages "0" verkettet
sind, und die dieser Position entsprechende horizontale Linie wird
als eine Linie mit Teilung erkannt.
-
Unterdessen ist in dem Graphen 97 die
Verteilung der Gesamtzahl schwarzer Pixel in der Sektion "+/–height" glatt, und die Werte
der Positionen, die höher
und niedriger als die Position des Verschiebungsbetrages "0" sind, sind nicht niedriger als der Wert,
der erhalten wird, indem "Peak" mit THSHIFT multipliziert
wird. Eine solche Verteilung repräsentiert, daß schwarze
Pixel in den Abschnitten gestreut sind, welche höher und niedriger als die Position
des Verschiebungsbetrages "0" sind, und die diesem
Abschnitt entsprechende horizontale gerade Linie wird nicht als
eine Linie mit Teilung erkannt und gelöscht.
-
Ein solcher Prozeß zum Prüfen/Löschen einer geraden Linie löscht eine
gerade Linie, die aus einem schattierten Abschnitt oder einer verunstalteten Zeichenkette
extrahiert wurde, die in der Tabelle enthalten ist, und nur eine
ursprüngliche
Linie mit Teilung wird als das Ergebnis des Prozesses ausgegeben.
Die Einzelheiten des Prozesses zum Prüfen/Löschen einer geraden Linie werden
später
beschrieben.
-
Im folgenden werden Erläuterungen über die spezifischen
Beispiele der oben beschriebenen Prozesse geliefert, indem auf 25 bis 36 verwiesen wird.
-
25 zeigt
die Bilddaten, nachdem die horizontalen Segmente in dem Prozeß P4 integriert sind. 26 zeigt einen Teil des
in 25 dargestellten
Bildes. Der in 26 gezeigte
Zustand entspricht den Bilddaten, bevor die geraden Linien, welche komplett überlappen,
in dem Prozeß P16 integriert werden,
während 27 die Bilddaten zeigt,
nachdem sie integriert sind.
-
Es ist bekannt, daß das geradlinige
Rechteck 101 mit dem Etikett 66 und das geradlinige
Rechteck 106 mit dem Etikett 3, welche in 26 dargestellt sind, in
eines in 27 integriert
werden. Ähnlich werden
die geradlinigen Dreiecke 102, 103, 104 und 105 mit
den Etiketten 67, 68, 69 und 70 mit
den geradlinigen Rechtecken 107, 108, 109 bzw. 110 mit den
Etiketten 4, 5, 6 und 7 integriert.
-
28 zeigt
die Bilddaten, die erzeugt werden, indem die Prozesse P17 und
P18 für
das in 27 dargestellte
Bild durchgeführt
werden und basierend auf der Gestalt, Position und Verknüpfungsbeziehung
der geraden Linie eine gerade Linie gelöscht wird. Aus 28 ist bekannt, daß die geradlinigen Rechtecke 111, 112 und 113 mit
den Etiketten 35, 37 und 38, welche in 27 dargestellt sind, gelöscht werden.
-
29 zeigt
die Bilddaten, bevor die geraden Linien, welche teilweise überlappen,
in dem Prozeß P19 integriert
werden, während 30 die Bilddaten zeigt,
nachdem sie integriert sind. Aus 30 ist
bekannt, daß das
geradlinige Rechteck 121 mit dem Etikett 25 und
das geradlinige Rechteck 124 mit dem Etikett 20,
welche in 29 dargestellt
sind, in eines integriert werden. Ähnlich werden die geradlinigen
Rechtecke 122 und 123 mit den Etiketten 26 und 27 mit
den geradlinigen Rechtecken 125 bzw. 126 mit den
Etiketten 21 und 22 integriert.
-
31 zeigt
die Bilddaten, bevor die geraden Linien, welche nahezu vollständig überlappen,
in dem Prozeß P20 gelöscht werden,
während 32 die Bilddaten zeigt,
nachdem sie gelöscht
sind. Aus 32 ist bekannt,
daß das
in 31 gezeigte geradlinige
Rechteck 131 gelöscht
ist.
-
Außerdem zeigt 33 die Bilddaten, bevor die aus den großen Segmenten
bestehende gerade Linie in dem Prozeß P21 gelöscht wird,
während 34 die Bilddaten zeigt,
nachdem sie gelöscht
ist. Aus 34 ist bekannt,
daß das
in 33 dargestellte geradlinige
Rechteck 141 gelöscht
ist.
-
Überdies
zeigt 35 die Bilddaten,
bevor unter Verwendung einer Segmentverschiebung in dem Prozeß P23 eine
gerade Linie geprüft/gelöscht wird,
während 36 die Bilddaten zeigt,
nachdem sie geprüft/gelöscht ist.
Aus 36 ist bekannt,
daß die
geradlinigen Rechtecke 151, 152 und 153,
die in 35 dargestellt
sind, gelöscht
sind.
-
Als nächstes werden die Einzelheiten
des Prozesses zum Integrieren von Segmenten erläutert, indem auf 37 bis 41 verwiesen wird. 37, 38, 39, 40 und 41 sind
Flussdiagramme, die den Prozeß P4 zum
Integrieren horizontaler Segmente zeigen, der in 2B dargestellt
ist.
-
Bei diesem Prozeß handhabt die horizontale gerade
Linien extrahierende Einheit 15 eine große Gruppeschwarzer
Pixel als ein Wild-Card- oder Stellvertreter-Rechteck und zielt
auf horizontal lange Segmentrechtecke, die in acht Richtungen vor
und nach dem Stellvertreter-Rechteck verkettet sind. Die horizontale
gerade Linien extrahierende Einheit 15 integriert dann
Segmentrechtecke in einer Verkettungsbeziehung in acht Richtungen
durch das Stellvertreter-Rechteck
in ein horizontal langes Rechteck als eine horizontale gerade Linie.
-
Ist der Prozeß einmal gestartet, berechnet die
horizontale gerade Linien extrahierende Einheit 15 zuerst
jeden Schwellenwert in den folgenden Gleichungen unter Verwendung
des häufigsten
Wertes "mfheight_small" der Höhen horizontaler
Segmente und legt die Anzahl gerader Linien auf "0" fest
(Schritt S1 von 37).
-
th_height =
mfheight_small +
TH_HEIGHTDOT (3)
standard_h = mfheight_small + 1 (4)
-
Hier wird der Wert von TH_HEIGHTDOT
auf zum Beispiel "2" gesetzt. Als nächstes wird
eine der Höhen
der Segmentrechtecke, die wechselweise verkettet werden sollen,
untersucht (Schritt S2). Falls sie größer als der Schwellen wert "th height" ist, wird es als
ein Stellvertreter-Rechteck markiert (Schritt S3). Zu dieser
Zeit wird das Wild-Card-Attribut angebracht, indem eine Identifizierungsvariable "use" der Attributinformation
des Segmentrechtecks auf "9" gesetzt wird.
-
Für
die anderen Segmentrechtecke wird "use" als
ein Standardrechteck auf "0" gesetzt (Schritt S4).
Dann wird bestimmt, ob alle Segmentrechtecke, die verkettet werden
sollen, verarbeitet sind oder nicht (Schritt S5). Falls
ein Segmentrechteck übrig,
um verarbeitet zu werden, wird der Prozeß in und nach dem Schritt S2 wiederholt.
-
Nachdem alle Segmentrechtecke verarbeitet sind,
wird eines von ihnen als ein aktuelles Rechteck "i" extrahiert.
Die äußerste linke
Koordinate des aktuellen Rechtecks "i" wird "xlf" zugewiesen; die äußerte rechte
Koordinate des aktuellen Dreiecks "i" wird "xr" zugewiesen; die
oberste Koordinate des aktuellen Rechtecks "i" wird "yup" zugewiesen; die
unterste Koordinate des aktuellen Rechtecks "i" wird "ybl" zugewiesen; "line_start" wird auf "yup" gesetzt; und "line_end" wird auf "ybl" gesetzt (Schritt S6).
Dann wird bestimmt, ob "use" des aktuellen Rechtecks "i" entweder "0" oder "9" ist (Schritt S7).
-
Falls das "use" des
aktuellen Rechtecks "i" entweder "0" oder "9" ist,
wird "startxlf" auf "xlf" gesetzt; wird "startxr" auf "xr" gesetzt; wird "startyup" auf "yup" gesetzt; und "startybl" wird auf "ybl" gesetzt (Schritt S8).
Als nächstes
wird bestimmt, ob "use" "0" ist
oder nicht (Schritt S9 von 38).
Falls "use" 0 ist, wird "standard_st" auf "yup" gesetzt; wird "standard_en" auf "ybl" gesetzt; wird "b_use" auf "0" gesetzt; wird "use" auf "1" gesetzt; und "height" wird auf "ybl–yup+1" gesetzt (Schritt S10).
-
"b_use=0" gibt an, dass das
aktuelle Rechteck "i" kein Stellvertreter-Rechteck, sondern
ein Standardrechteck ist. "use=1" gibt an, daß das aktuelle
Rechteck "i" verwendet wurde.
Falls in Schritt S9 "use" nicht "0" ist, wird "standard st" auf "0" gesetzt; wird "standard en" auf "0" gesetzt; wird "b_use" auf "9" gesetzt;
und "height2" wird auf "ybl–yup+1" gesetzt (Schritt S11). "b_use=9" gibt an, daß das aktuelle
Rechteck "i" nicht als ein Standardrechteck
festgelegt ist, da es ein Stellvertreter-Rechteck ist.
-
Als nächstes wird ein anderes Segmentrechteck
als ein aktuelles Rechteck "k" extrahiert. Die äußerste linke
Koordinate des aktuellen Rechtecks "k" wird dann "rxlf" zugewiesen; die äußerste rechte Koordinate
des aktuellen Rechtecks "k" wird "rxr" zugewiesen; die
oberste Koordinate des aktuellen Rechtecks "k" wird "ryup" zugewiesen, und
die unterste Koordinate des aktuellen Rechtecks "k" wird "rybl" zugewiesen (Schritt S12).
-
Es wird bestimmt, ob das aktuelle
Rechteck "i" als ein Standardrechteck
festlegt ist oder nicht, d. h. ob "b_use" auf "0" gesetzt
ist oder nicht (Schritt S13). Falls "b_use" "0" ist, wird bestimmt,
ob "use" des aktuellen Rechtecks "k" "9" ist oder nicht (Schritt S14). "use = 9" gibt an, daß das aktuelle
Rechteck "i" ein Standardrechteck
und das aktuelle Rechteck "k" ein Stellvertreter-Rechteck
ist.
-
Falls "use" "9" ist, wird bestimmt, ob "xr+1≥rxlf" "xr<rxr", "ybl+1≥ ryup" und "yup–1≤rybl" erfüllt sind
oder nicht (Schritt S15). Falls diese Bedingungen erfüllt sind,
bedeutet es, daß das
aktuelle Rechteck "k" auf der rechten
Seite des aktuellen Rechtecks "i" liegt und sie beide
einen überlappenden
Abschnitt mit einem oder mehr Pixel horizontal und vertikal besitzen.
Daher wird "xr" auf "rxr" gesetzt, und der
rechte Rand des aktuellen Rechtecks "i" wird
zu dem aktuellen Rechtecks "k" ausgedehnt oder
verlängert
(Schritt S16).
-
Falls "use" nicht "9" in Schritt S14 ist, wird dann
bestimmt, ob "use" "0" ist
oder nicht (Schritt S17 von 39).
Falls "use" "0" ist,
bedeutet es, daß das aktuelle
Rechteck "i" ein Standardrechteck
ist und das aktuelle Rechteck "k" kein Stellvertreter-Rechteck
ist. Als nächstes
wird bestimmt, ob xr+1≥rxlf, xr<rxr, ybl+1≥ryup und yup–1≤rybl erfüllt sind
oder nicht und ob die Höhe
des aktuellen Rechtecks "k" gleich "standard_h+/–4" oder kleiner ist
oder nicht (Schritt S18).
-
Falls diese Bedingungen erfüllt sind,
wird "xr" auf "rxr" gesetzt; "yup auf "ryup" gesetzt; "ybl" auf "rybl" gesetzt; "use" auf " 2" gesetzt und "hei" auf "nbl–ryup+1" gesetzt (Schritt
S19). Dies bedeutet, daß der
rechte Rand des aktuellen Rechtecks "i" zu dem
rechten Rand des aktuellen Rechtecks "K" verlängert wird
und die oberste und unterste Koordinate durch diejenigen des aktuellen
Rechtecks "k" ersetzt werden. "use = 2" gibt an, daß das aktuelle
Rechteck "k" verwendet wurde.
-
Als nächstes wird bestimmt, ob "hei > height" erfüllt ist
oder nicht (Schritt S20). Falls "JA" gilt,
wird "height" auf "hei" gesetzt (Schritt S21).
Es wird dann bestimmt, ob "ryup < line_start" erfüllt ist
oder nicht (Schritt S22). Falls "JA" gilt,
wird "line_start" auf "ryup" gesetzt (Schritt
S23). Es wird bestimmt, ob "rybl > line_end" erfüllt ist
oder nicht (Schritt S24). Falls "JA
gilt, wird "line
end" auf "rybl" gesetzt (Schritt S25).
-
Nachdem diese Operationen durchgeführt sind,
wird bestimmt, ob "b
use" "9" ist oder nicht (Schritt S26 von 40). Falls das Ergebnis
der Bestimmung in Schritten S13 und S15 von 38 und in Schritten S18, S20, S22 und S24 von 39 "NEIN" ist,
wird der Prozeß in
und nach dem Schritt S26 sofort durchgeführt.
-
Falls "b_use" "9" ist, wird bestimmt,
ob "use" des aktuellen Rechtecks "k" "9" ist oder nicht (Schritt S27).
Falls "JA" gilt, gibt es an,
daß die
beiden aktuellen Rechtecke "i" und "k" Stellvertreter-Rechtecke sind. Es wird
dann bestimmt, ob "xr+1≥rxlf", "xr≤rxr", "ybl+1≥ryup" und "yup–1≤rybl" erfüllt sind
oder nicht (Schritt S28).
-
Falls diese Bedingungen erfüllt sind,
liegt das aktuelle Rechteck "k" auf der rechten
Seite des aktuellen Rechtecks "i", und sie beide besitzen
einen überlappenden
Abschnitt mit einem oder mehr Pixel horizontal und vertikal. Demgemäß wird "xr" auf "rxr" gesetzt, und der
rechte Rand des aktuellen Rechtecks "i" wird
zu dem des aktuellen Rechtecks "k" verlängert (Schritt S29).
-
Falls "use" in
Schritt S27 nicht "9" ist, wird bestimmt,
ob "use" gleich "0" ist oder nicht (Schritt S30). Falls "JA" gilt, gibt es an,
daß das
aktuelle Rechteck "i" ein Stellvertreter-Rechteck
ist und das aktuelle Rechteck "k" kein Stellvertreter-Rechteck
ist. Dann wird bestimmt, ob "xr+1≥rxlf', "xr<rxr", "line_end≥ryup" und "line_start<rybl" erfüllt sind
oder nicht (Schritt S31).
-
Falls diese Bedingungen erfüllt sind,
wird "xr" auf "rxr" gesetzt; "yup" auf "ryup" gesetzt; "ybl" auf "rybl" gesetzt; "use" auf "2" gesetzt; "line_start auf "ryup" gesetzt; "line end" auf "rybl" gesetzt; "hei" auf "rybl–ryup+1" gesetzt; "standard_st" auf "ryup" gesetzt und "standard_en" auf "rybl" gesetzt (Schritt S32).
-
Dies bedeutet, daß der rechte Rand des aktuellen
Rechtecks "i" zu dem des aktuellen
Rechtecks "K" verlängert wird
und die oberste und unterste Koordinate durch diejenigen des aktuellen
Rechtecks "k" ersetzt werden. Überdies
gibt "use=2" an, daß das aktuelle
Rechteck "k" verwendet wurde.
Dann wird bestimmt, ob "hei > height" erfüllt ist
oder nicht (Schritt S33). Falls "JA" gilt,
wird "height" auf "hei" gesetzt (Schritt S34).
-
Als nächstes wird bestimmt, ob alle
Segmentrechtecke, die verkettet werden sollen, als das aktuelle
Rechteck "k" extrahiert sind
oder nicht (Schritt S35 von 41).
Falls das Ergebnis der Bestimmung in Schritten S26, S28, S30, S31 und S33 von 40 "NEIN" ist,
wird der Prozeß in
und nach dem Schritt S13 von 38 wiederholt.
-
Falls der Prozeß für alle Segmentrechtecke abgeschlossen
ist, wird bestimmt, ob "b_use" auf "9" gesetzt ist oder nicht (Schritt S36).
Falls "NEIN" gilt, werden "xlf', "xr", "line start" und "line end" als die äußerste linke, äußerste rechte,
oberste bzw. unterste Koordinate eines extrahierten geradlinigen
Rechtecks gespeichert und die Anzahl gerader Linien wird um 1 inkrementiert
(Schritt S37).
-
Falls in Schritt S36 "b use" "9" ist,
gibt es an, daß das
aktuelle Rechteck "i" und alle seine verketteten
Rechtecke Wild-Cards oder Stellvertreter sind. In diesem Fall werden
sie nicht als gerade Linien gespeichert.
-
Als nächstes wird bestimmt, ob alle
Segmentrechtecke als das aktuelle Rechteck "i" extrahiert
sind oder nicht (Schritt S38). Falls irgendein Segmentrechteck übrig ist,
um extrahiert zu werden, wird der Prozeß in und nach dem Schritt S6 von 37 wiederholt. Falls "use" des aktuellen Rechtecks "i" weder 0 noch 9 ist, gibt es an, daß das extrahierte
Segmentrechteck vorher verwendet wurde. Daher wird der Prozeß in Schritt S38 sofort
durchgeführt,
um das nächste
Segmentrechteck zu extrahieren. Nachdem alle Segmentrechtecke extrahiert
sind, wird der Prozeß beendet.
-
Wie oben beschrieben wurde, wird
ein Stellvertreter übersprungen,
und horizontale Segmentrechtecke auf ihren beiden Seiten werden
integriert, wodurch eine horizontale gerade Linie extrahiert wird,
die nur Standardsegmente enthält.
Der Prozeß zum
Integrieren vertikaler Segmente, der in 2B gezeigt
ist, wird gemäß einem ähnlichen
Ablauf durchgeführt.
-
Als nächstes wird die Erläuterung
der Einzelheiten des Ablaufs des Prozesses zum Prüfen/Löschen einer
geraden Linie unter Verwendung einer Segmentverschiebung geliefert,
indem auf 42 bis 47 verwiesen wird. 42, 43, 44, 45, 46 und 47 sind
Flußdiagramme,
die den Prozeß zum
Prüfen/Löschen einer horizontalen
geraden Linie in dem Prozeß P23 darstellen,
der in 2B gezeigt ist. Bei diesem
Prozeß bestimmt
das Linien mit Teilung extrahierende Gerät, ob eine gerade Linie eine
korrekte Linie mit Teilung ist oder nicht, basierend auf der Verteilung
schwarzer Pixel um jede horizontale gerade Linie, läßt nur eine
korrekte Linie mit Teilung zurück und
löscht
die anderen Linien.
-
Ist der Prozeß einmal gestartet, weist das
Linien mit Teilung extrahierende Gerät den Wert "0" sowohl
einer Variable "cnt", die die Anzahl
verarbeiteter horizontaler gerader Linien angibt, als auch einer
Variable "newcount" zu, die die Anzahl
horizontaler gerader Linien angibt, welche als korrekte Linien mit Teilung
bestimmt wurden (Schritt S41 von 42). Man beachte, daß daher die Zähloperationen
für "cnt" und "newcount" von "0" aus beginnen.
-
Als nächstes wird bestimmt, ob das
Attribut einer "cnt"-ten horizontalen
geraden Linie eine gepunktete Linie repräsentiert oder nicht (Schritt S42). Falls
es das Attribut einer gepunkteten Linie ist, wird die gesamte Information
einer geraden Linie der horizontalen geraden Linie kopiert als die
Information einer "newcount"-ten Linie mit Teilung,
und die Variablen "cnt" und "newcount" werden jeweils um
1 inkrementiert (Schritt S43). In Schritt S42 wird
die Bestimmung der nächsten
horizontalen geraden Linie vorgenommen.
-
Falls das Attribut der "cnt"-ten geraden Linie nicht
das Attribut einer gepunkteten Linie ist, wird erkannt, daß sie einer
durchgezogenen Linie entspricht, und die Höhe des horizontalen geradlinigen Rechtecks
wird als "height" definiert (Schritt S44).
Als nächstes
wird bestimmt, ob "height" gleich " 2" oder geringer ist
oder nicht (Schritt S45). Falls der Wert von "height" größer als "2" ist, wird er nicht geändert. Falls
er gleich "2" oder geringer ist,
wird er in "3" geändert (Schritt S46).
-
Dann wird "pos" auf "height" gesetzt; wird "maxsum" auf "0" gesetzt; wird "top_bound" auf "0" festgelegt;
wird "bottom_bound" auf "0" gesetzt; wird "shift" auf "–1*height" gesetzt; wird "sum" auf "0" gesetzt und wird "j" auf "0" gesetzt (Schritt S47). Die
Variable "pos" wird verwendet,
um die Position in der Aufwärts-
oder Abwärtsrichtung
in einem Bild zu spezifizieren. Die Variable "maxsum" gibt den maximalen Wert in einem Graphen
an, der die Gesamtzahl schwarzer Pixel repräsentiert.
-
Überdies
wird die Variable top_bound als ein Flag verwendet, das angibt,
ob eine Sektion eines Graphen das obere Ende eines Bildes erreicht
hat oder nicht, während
die Variable bottom_bound als ein Flag verwendet wird, das angibt,
ob die Sektion des Graphen das untere Ende des Bildes erreicht hat oder
nicht. Der Wert der Variable "shift" gibt den Verschiebungsbetrag
in der Aufwärts-
oder Abwärtsrichtung
von Segmentrechtecken an, die in einer horizontalen geraden Linie
enthalten sind. Die Variable "sum" gibt die Gesamtzahl
schwarzer Pixel an, die in den Segmentrechtecken enthalten sind.
-
Als nächstes wird bestimmt, ob das
Attribut eines "j"-ten kleinen Segments
(Segmentrechtecks), das in der "cnt"-ten horizontalen
geraden Linie enthalten ist, ein Stellvertreter ist oder nicht (Schritt S48 von 43). Falls "JA" gilt, wird der Wert
von "j" um 1 inkrementiert
(Schritt S49), und das nächste kleine Segment wird in
Schritt S48 geprüft.
-
Falls das Attribut des "j"-ten kleinen Segments kein Stellvertreter
ist, wird erkannt, daß es
einem normalen Segmentrechteck entspricht, wird die äußerste linke
Koordinate des j-ten kleinen Segments "xmin" zugewiesen;
wird die äußerste rechte Koordinate
des "j"-ten kleinen Segments "xmax" zugewiesen; wird "die oberste Kooordinate
des "j"-ten kleinen Segments
+ shift" "ymin" zugewiesen; und "die unterste Koordinate
des "j"-ten kleinen Segments
+ shift" wird "ymax" zugewiesen (Schritt S50). Man
beachte, daß,
falls durch die Position von "ymin" oder "ymax", die so bestimmt
wurden, nicht in den Koordinaten eines Bildes enthalten ist, der
Wert der y-Koordinate, die dem oberen oder unteren Ende des Bildes
am nächsten
liegt, als "ymin" oder "ymax" erkannt wird.
-
Die Anzahl schwarzer Pixel in einem
rechteckigen Bereich, der durch jeden der Werte der Variablen "xmin", "xmax", "ymin" und "ymax" aufgeteilt ist,
wird dann berechnet und als "black_dot" definiert. Danach
wird "sum+black_dot" "sum" zugewiesen.
-
Als nächstes wird bestimmt, ob "ymin" dem oberen Ende
des Bildes entspricht oder nicht (Schritt S51). Falls "JA" gilt, wird "top_bound" auf "1" gesetzt (Schritt S52). Außerdem wird
bestimmt, ob "ymax" dem unteren Ende
des Bildes entspricht oder nicht (Schritt S53). Falls "JA" gilt, wird "bottom_bound" auf "1" gesetzt (Schritt S54).
-
Danach wird bestimmt, ob der Wert
der Variable "j" dem letzten kleinen
Segment in der "cnt"-ten horizontalen
geraden Linie entspricht oder nicht (Schritt S55). Falls
das Ergebnis der Bestimmung "NEIN" ist, wird der Wert
von "j" um 1 inkrementiert (Schritt S56),
und der Prozeß in
und nach dem Schritt S48 wird wiederholt. Falls "JA" gilt, wird "histo[pos+shift]" auf "sum" gesetzt (Schritt S57 von 44).
-
Hier gibt "histo[p]" den Wert (Gesamtzahl schwarzer Pixel)
des Graphen an, der dem Wert eines Positionsparameters "p" in der y-Richtung entspricht. Unter
der Annahme, daß "pos" auf "height" gesetzt ist und "shift" auf "-height" gesetzt ist, wird "histo[pos+shift]" "histo[0]" sein, was den Wert des Graphen angibt,
der der Position des Parameterwertes "0" entspricht.
-
Als nächstes wird ein Vergleich zwischen "sum" und "maxsum" durchgeführt (Schritt S58). Falls "sum" größer als "maxsum" ist, wird "maxsum" auf "sum" gesetzt (Schritt S59).
-
Der Vergleich zwischen "shift" und "height" wird dann vorgenommen
(Schritt S60). Falls "shift" gleich "height" oder kleiner ist,
wird "shift" auf "shift+1" gesetzt, werden "sum" und "j" auf den Anfangswert "0" zurückgesetzt
(Schritt S61), und der Prozeß in und nach dem Schritt S48 wird
wiederholt. Auf diese Weise wird der Wert in einem Graphen berechnet,
der der Position entspricht, an der der Verschiebungsbetrag um 1
Pixel geändert
wird.
-
Falls der Wert von "shift" den von "height" übersteigt, wird der Vergleich
zwischen "histo[pos–1]" und "histo[pos]" vorgenommen (Schritt S62). "histo[pos]" gibt hier den Wert
des Graphen an, der der Position des Verschiebungsbetrages "0" entspricht. Falls "histo[pos–1]" größer als "histo[pos]" ist, wird der Vergleich
zwischen "histo[pos–1] und "histo[pos+1] vorgenommen
(Schritt S63).
-
Falls "histo[pos–1]" größer ist
als "histo[pos+1]", wird "maxpos" auf "pos– 1" gesetzt und "maxsum" wird auf "histo[pos–1]" gesetzt (Schritt S64).
Falls "histo[pos–1]" kleiner oder gleich "histo[pos+1]" ist, wird "maxpos" auf "pos+1" gesetzt und "maxsum" wird auf "histo[pos+1]" gesetzt (Schritt S65).
-
Falls "histo[pos–1]" in Schritt S62 kleiner oder gleich "histo[pos]" ist, wird der Vergleich
zwischen "histo[pos]" und "histo[pos+1] vorgenommen (Schritt S66).
-
Falls "histo[pos]" größer oder
gleich "histo[pos+1]" ist, wird "maxpos" auf "pos" gesetzt, und "maxsum" wird auf "histo[pos]" gesetzt (Schritt S67). Falls "histo[pos]" kleiner ist als "histo[pos+1]", wird "maxpos" auf "pos+1" gesetzt, und "maxsum" wird auf "histo[pos+1]" gesetzt (Schritt S68).
-
Bei solch einem Prozeß wird der
maximale Wert unter "histo[pos–1]", "histo[pos]" und "histo[pos+1]" "maxsum" zugewiesen, und der entsprechende Parameterwert
wird "maxpos" zugewiesen. Dementsprechend
gibt "maxsum" den maximalen Wert
des Graphen nahe der Position des Verschiebungsbetrages "0" an. Er entspricht "Peak",
dargestellt in 24.
-
Als nächstes wird unter Verwendung
des oben erhaltenen Wertes von "maxsum(=histo[maxpos])" gemäß der folgenden
Gleichung ein Schwellenwert "th" berechnet (Schritt S69 von 45):
-
th = maxsum*THSHIFT (5)
-
Der Parameter 'THSHIF" gibt hier das Verhältnis des Schwellenwertes "th" zum maximalen Wert "maxsum" an. Er wird auf
einen geeigneten Wert zwischen 0 und 1,0 festgelegt.
-
Dann wird "lineokflag1" auf "0" gesetzt;
wird "lineokflag2" auf "0" gesetzt; wird "minval" auf "Oxffff' gesetzt; und wird "shift" auf "–1*height" gesetzt. Die Variablen "lineokflag1" und "lineokflag2" werden als die Flags
verwendet, die das Ergebnis einer Prüfung in beiden Abschnitten
repräsentieren,
welche höher und
niedriger als die Position entsprechend dem maximalen Wert sind.
Die Variable "minval" gibt den minimalen
Wert eines Graphen an.
-
Als nächstes wird der Vergleich zwischen "histo[pos+shift]" und "th" vorgenommen (Schritt S70).
Falls histo[pos+shift]" kleiner
als "th" ist, wird erkannt,
daß die
Anzahl schwarzer Pixel in dem Abschnitt abnimmt, der höher als
die Position entsprechend dem maximalen Wert ist, und "lineokflag1" wird auf "1" gesetzt (Schritt S71). Demgemäß gibt "lineokflag=1" an, daß das Ergebnis
der Prüfung
im oberen Abschnitt "OK" ist.
-
Dann wird der Vergleich zwischen "histo[pos+shift]" und "minval" vorgenommen (Schritt S72).
Falls "histo[pos+shift]" kleiner als "minval" ist, wird "minval" auf "histo[pos+shift]" gesetzt (Schritt 73).
-
Der Vergleich zwischen (pos+shift)
und "maxpos" wird vorgenommen
(Schritt S74). Falls "(pos+shift)" gleich "maxpos" oder kleiner ist,
wird "shift" auf "shift+1" gesetzt (Schritt S75),
und der Prozeß in
und nach dem Schritt S70 wird wiederholt. Bei diesem Prozeß wird der
Wert des Graphen an der Position, wo der Verschiebungsbetrag um
ein Pixel geändert
wird, wieder untersucht.
-
Falls "(pos+shift)" größer als "maxpos" ist, wird der Vergleich
zwischen "histo[pos+shift)" und "th" vorgenommen (Schritt S76 von 46). Falls "histo[pos+shift]" gleich "th" oder größer ist,
wird der Vergleich zwischen "histo[pos+shift]" und "minval" vorgenommen (Schritt S77).
Falls "histo[pos+shift]" kleiner als "minval" ist, wird "minval" auf "histo[pos+shift]" gesetzt (Schritt S78).
-
Als nächstes wird der Vergleich zwischen "shift" und "height" vorgenommen (Schritt S79).
Falls "shift" gleich "height" oder kleiner ist,
wird "shift" auf "shift+1" gesetzt (Schritt S80),
und der Prozeß in
und nach dem Schritt S76 wird wiederholt. Bei diesem Prozeß wird der
Wert des Graphen an der Position, wo der Verschiebungsbetrag um
ein Pixel geändert wird,
wieder untersucht.
-
Falls "histo[pos+shift]" in Schritt S76 kleiner als "th" ist, wird erkannt,
daß die
Anzahl schwarzer Pixel in dem Abschnitt, der niedriger als die Position entsprechend
dem maximalen Wert ist, abnimmt, und "lineokflag2" wird auf "1" gesetzt
(Schritt S81). Demgemäß gibt "lineokflag2=1" an, daß das Ergebnis
der Prüfung
im unteren Abschnitt "OK" ist.
-
Die Werte von "lineokflag1" und "top_bound" werden dann untersucht (Schritt S82 von 47). Falls der Wert von "lineokflag1" "0" ist
und zur gleichen Zeit der Wert von "top bound" "1" ist, wird erkannt,
daß die "cnt"-te horizontale gerade
Linie, auf die abgezielt werden soll, einer horizontalen Linie mit Teilung
nahe dem oberen Ende des Bildes entspricht, und "lineokflag1" wird auf "1" gesetzt
(Schritt S83).
-
Die Werte von "lineokflag2" und "bottom bound" werden als nächstes untersucht (Schritt S84). Falls
die Werte von "lineokflag2" und "bottom bound" "0" bzw. "1" sind, wird erkannt, daß die "cnt"-te horizontale gerade
Linie einer horizontalen Linie mit Teilung nahe dem unteren Ende
des Bildes entspricht, und "lineokflag2" wird auf "1" gesetzt (Schritt S85).
-
Die Endwerte von "lineokflag1" und "lineokflag2" werden dann untersucht (Schritt S86). Falls
die Werte von sowohl "lineokflag1" als auch "lineokflag2" "1" sind,
wird bestimmt, daß die "cnt"-te horizontale gerade
Linie eine korrekte Linie mit Teilung ist. Die Information der geraden
Linie wird als die Information der "newcount"-ten Linie mit Teilung kopiert, und "newcount" wird um "1" inkrementiert (Schritt S87).
-
Falls "lineokflag1" oder "lineokflag2" "0" ist, wird überdies
bestimmt, daß die "cnt"-te horizontale gerade
Linie keine korrekte Linie mit Teilung ist, und ihre Information
einer geraden Linie wird nicht als die Information einer Linie mit
Teilung gespeichert.
-
Als nächstes wird bestimmt, ob "cnt" der letzten horizontalen
geraden Linie im Bild entspricht oder nicht (Schritt S88).
Falls irgendeine horizontale gerade Linie übrig ist, wird "cnt" um "1" inkrementiert (Schritt S89),
und der Prozeß in
und nach S42 wird dann für die nächste horizontale gerade Linie
wiederholt. Wenn "cnt" den Wert erreicht,
der der letzten horizontalen geraden Linie entspricht, wird der
Prozeß beendet.
-
Bei solch einem Prozeß wird der
Grad einer Ähnlichkeit
einer Linie mit Teilung basierend auf dem Vergleich zwischen der
Anzahl schwarzer Pixel, die in einer geraden Linie enthalten sind,
und der Anzahl schwarzer Pixel um die Linie geprüft, wodurch eine gerade Linie
effizient gelöscht
wird, welche fälschlicherweise
aus einem schattierten Abschnitt oder einer verunstalteten Zeichenkette
extrahiert ist. Ein ähnlicher
Prüf/Löschprozeß wird für eine vertikale gerade
Linie durchgeführt.
-
Wie oben beschrieben wurde, kann
gemäß dieser
Erfindung eine Linie mit Teilung korrekt extrahiert werden, selbst
wenn Bild vage oder klar ist, selbst wenn ein Bild einer Tabelle
durchgezogene und gepunktete Linien enthält oder selbst wenn eine Linie
mit Teilung einen schattierten Abschnitt oder ein Zeichen berührt.
-
Die Linien mit Teilung extrahierende
Technik gemäß der vorliegenden
Erfindung wird nicht nur auf ein elektronisches Dateiorganisationssystem
angewendet, sondern auch auf eine Technik zum Extrahieren einer
ein Symbol oder ein Zeichen in einem weiten Sinne enthaltenden Graphik
aus einem Muster, in welchem die Graphik eine gerade Linie überdeckt.
Diese Technik kann zum Bei spiel für ein Gerät zur Erkennung handgeschriebener
Zeichen, ein Gerät
zur Erkennung gedruckter Zeichen, eine Extraktion eines Musters
wie z. B. eines Zeichens, Symbols etc. zur Zeichnungserkennung und
einer Trennung zwischen einer Linie mit Teilung und einem berührenden
Abschnitt wie z. B. einem Objekt, einer Graphik, einem Zeichen etc.
verwendet werden.
-
Außerdem ist die Gestalt eines
Bereichs, der eine gerade Linie oder ein Segment repräsentiert, nicht
notwendigerweise ein Rechteck. Der Bereich mit einer beliebigen
Gestalt, der durch eine gerade Linie oder eine gekrümmte Linie
umgeben ist, kann verwendet werden. In diesem Fall kann der Prozeß, der demjenigen
von 2B ähnlich ist, durchgeführt werden,
falls die Position, Höhe
und die Breite einer geraden Linie oder eines Segments und die Distanz zwischen
geraden Linien oder Segmenten etc. geeignet definiert sind.
-
Gemäß der vorliegenden Erfindung
kann ein Abschnitt einer Linie mit Teilung aus einem normalen Dokumentenbild
korrekt extrahiert werden, dessen Struktur von Linien mit Teilung
vorher nicht vorhergesagt werden kann.
-
Selbst wenn ein schattierter Abschnitt
in einer Tabelle enthalten ist, wird es zum Beispiel möglich, aus
ihrem Bild eine Linie mit Teilung korrekt zu extrahieren. Selbst
wenn ein Zeichen eine Linie mit Teilung berührt und die Information der
Struktur einer Tabelle vorher nicht bekannt ist, kann außerdem eine Linie
mit Teilung korrekt extrahiert werden. Selbst wenn ein Zeichen ein
wenig verunstaltet gedruckt ist oder selbst wenn Zeichen mit hoher
Dichte gedruckt sind, wird ferner die Wahrscheinlichkeit, daß aus einer
Zeichenkette fälschlicherweise
eine Linie mit Teilung extrahiert wird, niedriger.