-
HINTERGRUND
UND ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein Bildverarbeitung. Insbesondere
betrifft die Erfindung ein Verfahren und ein System zum Identifizieren
von Konturen innerhalb bildpunktbasierter Bilddaten. Die identifizierten
Konturen können
z. B. zum Identifizieren von eingekreisten Bereichen auf einem abgetasteten
Dokument verwendet werden. so dass das Bildverarbeitungssystem in
der Lage ist, den Inhalt innerhalb des eingekreisten Bereichs zu
extrahieren, um das Dokument zu indizieren oder andere auf den Informationen
basierende Verarbeitungsaufgaben auszuführen.
-
Gegenwärtig besteht
ein beträchtliches
Interesse an intelligenten automatischen Dokumentbildgebungssystemen,
die abgetastete Dokumente und andere bildpunktbasierte Bilddaten
mit minimaler Dokumentcodierung durch den Benutzer speichern und abrufen
können.
Bei einem herkömmlichen
Dokumentbildgebungssystem wird das abgetastete Bild auf dem Computer-Bildschirm
angezeigt und der Benutzer kann einen Abschnitt des abgetasteten
Bilds hervorheben, aus dem Indexierungsinformationen extrahiert
werden können.
Der Benutzer kann z. B. den Titel eines abgetasteten Zeitungsartikels
hervorheben und der Titel wird durch optische Zeichenerkennung (optical
character recognition – OCR)
verarbeitet und dann als ein Index oder eine Kennung für dieses
abgetastete Bild verwendet. Der Index oder die Kennung wird verwendet,
um den abgetasteten Zeitungsausschnitt später abzurufen.
-
Obwohl
die Verwendung der Computeranzeige zur Hervorhebung relevanter Abschnitte
eines Dokuments bei einigen Anwendungen gut funktioniert, gibt es
andere Anwendun gen, bei denen die physische Interaktion mit dem
Computer-Bildschirm nicht praktisch ist. In solchen Fällen kann
es für
den Benutzer praktischer sein, den interessierenden Bereich auf
dem ausgedruckten Dokument einfach einzukreisen, bevor es in das
System abgetastet wird. Mit anderen Worten, der Benutzer würde einen
Bleistift oder Kugelschreiber verwenden, um einen Kreis um den interessierenden
Bereich zu zeichnen, und das Bildverarbeitungssystem würde dann
den handgezeichneten Kreis des Benutzers identifizieren, den Text
innerhalb des eingekreisten Bereichs extrahieren und verarbeiten
und ihn zu Indexierungs- oder Dokumentverarbeitungszwecken verwenden.
-
Das
Identifizieren eines eingekreisten Bereichs innerhalb bildpunktbasierter
Bilddaten eines abgetasteten Dokuments ist ein ziemlich schwieriges Problem.
Herkömmliche
Algorithmen zum Identifizieren eingekreister Bereiche versuchen,
angeschlossene Komponenten zu identifizieren, die ein Profil aus
Attributen haben wonach sie einen eingekreisten Bereich bilden könnten. Herkömmlicherweise
weist eine angeschlossene Komponente eine Ansammlung von schwarzen,
aufeinander folgend aneinander grenzenden Bildpunkten auf. Je nach
dem verwendeten Algorithmus sind aneinander grenzende Bildpunkte
diejenigen, die in der einen gegebenen Bildpunkt umgebenden unmittelbaren
Nachbarschaft liegen, typischerweise entweder die wie Punkte auf
einem Kompass angeordneten vier Bildpunkte oder die acht Bildpunkte,
die diese vier plus diagonale Bildpunkte enthalten. Wenn eine herkömmliche
Analyse angeschlossener Komponenten durchgeführt wird, kann das abgetastete
Bild mehrere Kandidaten für angeschlossene
Komponenten enthalten, die einen vom Benutzer gezeichneten Kreis
darstellen könnten.
Nachverarbeitungsalgorithmen werden bei den Daten angeschlossener
Komponenten ausgeführt, um
diejenigen auszuschließen,
die zu klein sind und daher wahrscheinlicher einzelnen Buchstaben
oder Rauschdaten entsprechen. Nachverarbeitungsalgorithmen prüfen auch
die Daten angeschlossener Komponenten, um zu bestimmen, ob es innerhalb
einer gegebenen angeschlossenen Komponente einen Abschluss gibt.
Auf diese Weise werden geschlossene Kreise identifiziert und andere
Markierungen wie z. B. Linien am Rand oder Unterstreichungen werden eliminiert.
-
Strathy
et al. beschreiben in "A
sequential method of extracting contour chains from an image", Proceedings of
the 12th IAPR, auf den Seiten 580–582 eine Konturkettenextraktion,
bei der ein Bild zeilenweise von links nach rechts und von oben
nach unten abgetastet wird. Acht angeschlossene Bildpunkte in aufeinander
folgenden Linien werden gemischt und bestimmen die endgültige Kontur.
-
Duda
et al. offenbaren in "Contour
following" Pattern
Classification and Scene Analysis, New York, J. Wiley & Sons, US, 1973,
auf den Seiten 290–293 Konturverfolgung
mittels eines einfachen regelbasierten Ansatzes, bei dem sich ein
imaginärer
Beobachter entlang der Kontur bewegt und je nach seiner Position
(d. h. innerhalb oder außerhalb
des Objekts, dessen Kontur zu bestimmen ist) nach links oder rechts
abbiegt.
-
Die
US-A-5 228 097 beschreibt das Erzeugen von Bilddarstellungen durch
linienweises Abtasten eines Bilds und Kodieren von Ketten aufeinander folgender
Bildpunkte mit ähnlicher
Dichte, wodurch Objekt- und Hintergrundbereich in einem Bild bestimmt
werden.
-
Obwohl
die herkömmliche
Analyse angeschlossener Komponenten potentielle Kandidaten für eingekreiste
Bereiche ziemlich gut identifiziert, ist der Prozess rechnerisch
relativ kostspielig. Die vorliegende Erfindung geht dieses Thema
durch einen wesentlich effizienteren Algorithmus an. Statt angeschlossene
Komponenten auf die herkömmliche
Weise zu suchen – ein
Prozess, der möglicherweise
viele Kandidaten erzeugt, von denen jeder analysiert werden muss
-, verwendet der vorliegende Algorithmus eine einzige Datenstruktur,
die während
der Abtastung des Bilds mit Lauflängeninformationen bestückt wird.
Wie hierin ausführlicher
erläutert
wird, unterhält die
Datenstruktur Informationen über
Eltern-, Kind- und Geschwisterbeziehungen über jeden "Lauf" aufeinander
folgender Bildpunkte in einer gegebenen abgetasteten Zeile. Dann
werden die Eltern-, Kind- und
Geschwister-Informationen durchlaufen, um Konturen zu identifizieren,
die geschlossene Kreise mit geeigneter Größe darstellen. Der Lauflängenalgorithmus
eliminiert so die Notwendigkeit, jeden Bildpunkt zu seinen benachbarten
Bildpunkten auf die herkömmliche
Art und Weise für
angeschlossene Komponenten gründlich
zu untersuchen. Obwohl der Algorithmus zum Identifizieren eingekreister
Bereiche gut geeignet ist, kann der Algorithmus außerdem in
seinem allgemeineren Fall zum Identifizieren verschiedener unterschiedlicher
Konturen, die einem vordefinierten Satz Kriterien entsprechen, verwendet werden.
Die vorliegende "Schwarz-Weiß"-Ausführungsform
versucht zwar Läufe
aufeinander folgender schwarzer Bildpunkte zu identifizieren, der
Algorithmus kann jedoch ferner ohne Weiteres so erweitert werden,
dass er auch Grauskalen- und Farbbilddaten berücksichtigt. Bei solchen Anwendungen muss
das System lediglich identifizieren, welche Bildpunktzustände oder
Bildpunktwerte (z. B. Schattierungen oder Farben) ein Element eines
Laufs bilden können,
und der Algorithmus identifiziert Konturen, die aus irgendwelche
der identifizierten Zustände oder
Werte aufweisenden Bildpunkten bestehen.
-
Gemäß einem
Aspekt der Erfindung umfasst das Verfahren zum Identifizieren von
Konturen innerhalb von bildpunktbasierten Bilddaten Ausdrücken der
Bilddaten als ein Gitter aus Spalten und Zeilen. Anschließend wird
eine Abtastreihenfolge über
dem Gitter festgelegt, um Eltern-Kind-Beziehungen zwischen aufeinander
folgenden Bildpunkten in benachbarten Zeilen und Geschwisterbeziehungen
zwischen nicht aufeinander folgenden Bildpunkten in derselben Zeile
zu definieren. Eine Laufdatenstruktur wird im computerlesbaren Speicher
festgelegt, die ein Laufelement anhand seiner Position in der Zeile und
anhand seinen Anfangs- und Endpositionen in der Spalte definiert.
Die Laufdatenstruktur definiert ferner Eltern-, Kind- und Geschwisterstrukturen
zum Speichern von Informationen über
diese Beziehungen.
-
Während die
Bilddaten gemäß der oben
festgelegten Abtastreihenfolge abgetastet werden, identifiziert
der Prozessor aufeinander folgende Bildpunkte eines vorgegebenen
Zustands als identifizierte Laufelemente. Er bestimmt auch die Eltern-Kind-
und Geschwisterbeziehungen der identifizierten Laufelemente. Mit
diesen Informationen wird die Laufdatenstruktur mit der Zeilenposition
und den Anfangs- und Endspaltenpositionen des identifizierten Laufelements
und mit den Eltern-Kind- und Geschwisterbeziehungen des identifizierten
Laufelements bestückt. Die
bestückte
Datenstruktur wird anschließend
durch Verfolgen der Eltern-Kind- und Geschwisterbeziehungen durchlaufen,
um Konturen innerhalb der bildpunktbasierten Bilddaten zu identifizieren.
Falls gewünscht,
kann nach dem Identifizieren der Konturen eine zusätzliche
Verarbeitung durchgeführt
werden, um die Wahrscheinlichkeit zu erhöhen, dass die identifizierte
Kontur einen vom Benutzer gezeichneten Kreis darstellt. Die zusätzliche
Verarbeitung hilft bei der Unterscheidung eines vom Benutzer gezeichneten
Kreises von einem anderen, wenn sich zwei Kreise überlappen.
Die zusätzliche
Verarbeitung betrifft die Berechnung von Merkmalpunkten entlang
der Kontur und dann das Brechen der Kontur an den Merkmalpunkten
in Segmente. Anschließend
werden die gebrochenen Konturen zum Erzeugen rekonstruierter Kreise
verwendet, von denen jeder seine eigene Identität hat und folglich jeder von
anderen Kreisen, die sich überlappen
können,
getrennt ist.
-
Für ein vollständigeres
Verständnis
der Erfindung, ihrer Aufgaben und Vorteile wird auf die folgende
Beschreibung und die beiliegenden Zeichnungen verwiesen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Bildpunktdiagramm der Konzepte von Lauflänge, Eltern-Kind-Beziehungen
und Geschwisterbeziehungen;
-
2 ist
ein Datenstrukturdiagramm einer derzeit bevorzugten Datenstruktur
zum Implementieren der Erfindung;
-
3 ist
ein Ablaufdiagramm eines gegenwärtig
bevorzugten Algorithmus zum Bestücken
der Datenstruktur von 2;
-
4 ist
ein Bildpunktdiagramm eines Beispiels für eine Kontur, das erläutert, wie
die Datenstruktur von 2 durch Anwendung des Algorithmus
von 3 bestückt
wird;
-
5 ist
ein Flussdiagramm zur Erläuterung,
wie die Datenstruktur durchlaufen wird, um eine Kontur zu identifizieren;
-
6 ist
ein Bildpunktdiagramm des Konturverfolgungsprozesses von 5,
wie er auf die beispielhaften Daten von 4 angewendet
wird;
-
7 ist
ein Bildpunktdiagramm zur Veranschaulichung der Lauflängenmittelpunkte
mit dunklerer Schattierung;
-
8 ist
ein Bildpunktdiagramm ähnlich dem
von 6, das aber die zwei Hauptkonturen mit unterschiedlichen
Linienarten zeigt, um zu veranschaulichen, wie die Konturen verbunden
werden; und
-
9 ist
ein Flussdiagramm eines verbesserten Algorithmus zur Extraktion
eingekreister Bereiche, der zur Unterscheidung von einander überlappenden
Kreisen geeignet ist.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORM
-
Das
lauflängenbasierte
Verfahren der bevorzugten Ausführungsform
tastet Bilddaten in einer vorher festgelegten Abtastreihenfolge
ab, um Eltern-, Kind- und Geschwisterstrukturen innerhalb der Bilddaten
zu identifizieren. In dieser Hinsicht können die Bilddaten als ein
Rechteckgitter 10 aus Spalten und Zeilen ausgedrückt werden,
die einzelne Bildpunkte aufweisen, die in 1 als Quadrate 12 dargestellt sind.
Im allgemeinen Fall kann jeder Bildpunkt einen Datenwert enthalten,
der einen speziellen Zustand, einen speziellen Ton oder eine spezielle
Farbe darstellt, woraus das Gesamtbild erzeugt ist. Bei Schwarzweißbildern
enthält
jeder Bildpunkt Binärdaten,
die angeben, ob der Bildpunkt schwarz oder weiß ist. Bei einem Grauskalenbild
kann jeder Bildpunkt ein Byte oder Wort aus Daten enthalten, das angibt,
welchen Grauskalenton der Bildpunkt darstellt. Bei einem Farbbild
kann der Bildpunkt Daten enthalten, die die Farbe und Intensität des Bildpunkts angeben.
Die vorliegende Erfindung eignet sich für alle Arten von Bilddaten,
unabhängig
davon, ob das Bild ein Schwarzweiß-, Grauskalen- oder Farbbild
ist.
-
Wie
nachstehend ausführlicher
erläutert wird,
tastet der Verarbeitungsalgorithmus das Gitter aus Bildpunktdaten
in einer vorher festgelegten Abtastreihenfolge ab. Zu Veranschaulichungszwecken
sei angenommen, dass die Abtastreihenfolge von oben nach unten und
von links nach rechts ist. Demgemäß würde das Gitter 10 bei
Bildpunkt 14 in der linken oberen Ecke beginnend und bei
Bildpunkt 16 in der rechten unteren Ecke endend abgetastet.
-
Der
Algorithmus ist so ausgelegt, dass er Gruppen benachbarter Bildpunkte,
die eine als Lauf oder Lauflänge
bezeichnete lineare Kette definieren, identifiziert und korreliert.
Der Abtastprozess fasst Bildpunkte eines vorgegebenen Zustands in
Gruppen zusammen, um Lauflängen
innerhalb des Bilds zu bilden.
-
In 1 ist
ein Schwarzweißbild
dargestellt. Weiße
Bildpunkte erscheinen als weiße
Rechtecke wie z. B. Bildpunkte 12. Schwarze Bildpunkte
erscheinen als schwarze Punkte innerhalb des Bildpunktquadrats wie
z. B. Bildpunkte 18. Im Normalfall ist das System so ausgelegt,
dass es aus aufeinander folgenden undurchsichtigen Bildpunkten wie
z. B. den schwarzen Bildpunkten in 1 Lauflängen bildet.
Im allgemeineren Fall kann das System jedoch zum Bilden von Lauflängen aus
Bildpunkten verwendet werden, die verschiedene unterschiedliche
Zustände
belegen. Werden z. B. Grauskalenbilder bereitgestellt, könnte das
System so konfiguriert werden, dass es alle Bildpunkte berücksichtigt,
die dunkler sind als ein vorgegebenes bei der Bildung von Lauflängen zu
berücksichtigendes
Grauskalenniveau. Bei einem Farbbild können Farben mit vorgegebenen
Intensitäten
oder Farbtönen
zur potentiellen Mitgliedschaft in einer Lauflänge ausgewählt werden.
-
Die
bevorzugte Ausführungsform
betrachtet Lauflängen,
die durch eine Ansammlung aufeinander folgender Bildpunkte eines
vorgegebenen Zustands zu definieren sind (z. B. der schwarze Bildpunktzustand
in einem Schwarzweißbild).
Drei solche Lauflängen
sind in 1 bei 20, 22 und 24 dargestellt.
In 1 sind Begrenzungsrechtecke um jede dieser Lauflängen dargestellt
worden, um sie besser sichtbar zu machen. Jede Lauflänge kann
durch ihre X- und Y-Koordinate dargestellt werden, d. h. ihre Zeilen-
und Spaltenkoordinaten innerhalb von Gitter 10. Weil die
Abtastung in zeilenweiser Reihenfolge durchgeführt wird, kann jede Lauflänge durch
die Position ihrer Anfangs- und Endspalte und durch ihre Zeilenposition
identifiziert werden. Diese drei eine Lauflänge eindeutig identifizierenden
Koordinatenpositionen werden als X-Minimum- 36, X-Maximum- 38 und
Y-Koordinate- 40 Datenwerte
innerhalb der in 2 gezeigten Laufdatenstruktur 30 gespeichert. Konkret
weist die Laufdatenstruktur 30 eine verbundene Liste auf,
die Daten werte zum Speichern der X-Minimum-, X-Maximum- und Y-Koordinatenwerte für jede während des
Abtastprozesses identifizierte Lauflänge enthält.
-
Einzelne
Bildpunkte (wie z. B. die schwarzen Bildpunkte in 1)
werden als eine Lauflänge
identifiziert, falls sie aufeinander folgende Bildpunktpositionen
innerhalb einer gegebenen Zeile belegen. Um geringfügigen Unvollkommenheiten
und Datenausfällen
im Bild Rechnung zu tragen, kann der Algorithmus so konfiguriert
werden, dass er einzelne (oder mehrere) Bildpunkte des inkorrekten
Zustands innerhalb einer potentiellen Lauflänge ignoriert. Dies kann durch
Vorverarbeiten oder zwischendurch erfolgen, während der Abtastalgorithmus
seine anderen Aufgaben ausführt.
Falls ein einziger weißer
Bildpunkt in einer ansonsten vollständigen Lauflänge vorgefunden
wird, kann der Algorithmus diesen Bildpunkt tatsächlich so behandeln als ob
er ein schwarzer Bildpunkt wäre,
und ihn dadurch der Lauflänge
zuordnen, sofern an den weißen
Bildpunkt auf beiden Seiten schwarze Bildpunkte angrenzen.
-
Der
Abtastalgorithmus und die zugehörige Datenstruktur
von 2 definieren eine Hierarchie unter Lauflängen. Die
Hierarchie wird als eine Eltern-Kind-Geschwisterhierarchie bezeichnet.
Das Konzept ist in 1 veranschaulicht. Eine Eltern-Kind-Beziehung
besteht dort, wo zwei Lauflängen
einen oder mehrere benachbarte schwarze Bildpunkte (oder Bildpunkte
jeglichen vorgegebenen Zustands, der eine Lauflänge definiert) in einer gegebenen
Spalte haben. In 1 haben Lauflängen 20 und 22 zwei
Paare vertikal benachbarter Bildpunkte (eingekreist gezeigt und
mit dem Bezugszeichen 32 bezeichnet), die diese Lauflängen für die Eltern-Kind-Beziehung
qualifizieren. Insbesondere gilt die Lauflänge 20 als die Eltern
und die Lauflänge 22 gilt
als das Kind, weil die Lauflänge 20 vor
der Lauflänge 22 abgetastet
wird. Das Vorhandensein dieser Eltern-Kind-Beziehung wird automatisch
entdeckt, während
der Abtastalgorithmus seine Aufgaben ausführt, und die Beziehung wird
in der Laufdatenstruktur 30 aufgezeichnet. Die Einzelheiten
dessen, wie dies erreicht wird, werden im Folgenden in Verbindung
mit dem Flussdiagramm von 3 besprochen.
-
Der
Abtastalgorithmus und seine zugeordnete Datenstruktur 30 definieren
auch eine Geschwisterbeziehung zwischen zwei Lauflängen, die
auf derselben Zeile liegen und sich dieselben Eltern teilen, wie
z. B. die Lauflängen 22 und 24.
Der Abtastalgorithmus entdeckt automatisch Geschwisterbeziehungen
und speichert sie in der Datenstruktur 30 wie in Verbindung
mit 3 ausführlicher
beschrieben wird.
-
Die
derzeit bevorzugte Laufdatenstruktur 30 definiert jede
Lauflänge 34 durch
ihren zugeordneten X-Minimum- 36, X-Maximum- 38 und
Y-Koordinatenwert 40. Der Lauflängendatenstruktur ist auch
ein Elternzeiger 42, ein Kindzeiger 44 und ein
Geschwisterzeiger 46 zugeordnet. Die Eltern-, Kind- und
Geschwisterzeiger 42 bis 46 legen eine verbundene
Liste der Lauflängen-Datenstrukturen
fest. Der Abtastalgorithmus bestückt
diese Datenstruktur, während
er jeden Bildpunkt im Gitter 10 besucht. Bei der bevorzugten
Ausführungsform
wird eine einzige mehrfach verbundene Liste mit einzelnen Lauflängen-Datenstrukturen 34 bestückt, die
jeder durch den Abtastalgorithmus identifizierten Lauflänge entsprechen.
-
Lauflängen-Abtastalgorithmus
-
In 3 ist
der derzeit bevorzugte Lauflängen-Abtastalgorithmus
dargestellt. Zum besseren Verstädnis
des Algorithmus sei angenommen, dass das Abtasten bis zu dem Punkt
fortgeschritten ist, an dem eine Lauflänge "k" identifiziert
worden ist und der Algorithmus gegenwärtig eine eine Geschwisterlauflänge "s" aufweisende Lauflänge "j" verarbeitet. Die
Beziehungen von Abtastlängen
k, j und s sind bei 50 bezeichnet schematisch dargestellt.
-
Der
Abtastalgorithmus beginnt bei Schritt 60 durch Abtasten
des Bildes in der vorgegebenen Abtastreihenfolge, wobei er nach
Vorkommen von Lauflängen
sucht. Wie oben erläutert
werden Lauflängen als
aufeinander folgende Bildpunkte in einer gemeinsamen Zeile, die
denselben Bildpunktzustand aufweisen (z. B. aufeinander folgende
schwarze Bildpunkte) identifiziert. Der bevorzugte Abtastalgorithmus
ist rekursiv. Für
jede identifizierte Lauflänge
(wie z. B. Lauflänge "j") wird der folgende Prozess durchgeführt.
-
Wenn
wie bei Schritt 62 dargestellt die identifizierte Lauflänge (j)
vertikal auf eine Lauflänge
(k) aus einer vorherigen Reihe angrenzt, wird die Elterndatenstruktur
(die Elterndatenstruktur von j) der aktuellen Lauflänge mit
einer Referenz auf die vertikal angrenzende Lauflänge (k)
bestückt,
wie bei 64 dargestellt. Der Algorithmus testet dann in
Schritt 66 die Kinddatenstruktur, um zu bestimmen, ob sie
gegenwärtig
leer ist (einen Nullwert enthält).
Wird ein Nullwert gefunden, bestückt
der Algorithmus die Kinddatenstruktur von k mit einer Referenz auf
die Abtastlänge
j, wie bei 68 dargestellt. Ist die Kinddatenstruktur von
k aktuelle nicht leer (mit anderen Worten, wenn sie eine Referenz
auf ein anderes Kind (s) enthält)
und wenn das andere Kind (s) noch kein Geschwister hat, entdeckt
der Algorithmus dies in Schritt 70 und bestückt dann
die Geschwisterdatenstruktur von s mit j wie bei 72 dargestellt.
Folglich testen die Schritte 66 bis 72 eigentlich, ob
das Kind von k null ist. Wenn dies der Fall ist, setzt der Algorithmus
j auf das Kind von k. Andernfalls setzt er j als Geschwister des
Kinds von k (s), falls s keine anderen Geschwister hat.
-
In
einigen Fällen
entdeckt der Algorithmus, dass das Kind (s) schon ein Geschwister
hat. In diesem Fall prüft
der Algorithmus, ob das Geschwister von s ein Geschwister hat usw.
(Setzt das Kind als Geschwister des Geschwisters usw.) Dies ist
in den Schritten 74 und 76 dargestellt. Wenn schließlich eine
Nullreferenz erreicht ist, wird die Nullreferenz durch eine Referenz
auf j ersetzt, wie bei Schritt 78 dargestellt ist.
-
Der
in 3 dargestellte Abtastalgorithmus bestückt die
Laufdatenstruktur zum späteren
Abrufen angeschlossener Komponenten. Der Prozess zum Abrufen angeschlossener
Komponenten wirkt, indem er eine Verfolgung von den Eltern zum Kind
und vom Geschwister zum Geschwister durchführt. 4 liefert
ein Beispiel für
ein Bild einer allgemein u-förmigen
Kontur, die aus einer Mehrzahl einzelner Lauflängen besteht. Aufgabe des Prozesses
zum Abrufen angeschlossener Komponenten ist die Identifizierung dieser
u-förmigen
Kontur durch Verfolgen der Eltern-Kind- und Geschwister-Geschwister-Beziehungen
der betroffenen Lauflängen.
-
Es
sei darauf hingewiesen, dass die u-förmige Kontur in 4 einen
aus Eltern-Kind-Beziehungen bestehenden linken Schenkel 50 hat,
wenn die Abtastung von links nach rechts und von oben nach unten
erfolgt. Der rechte Schenkel 52 besteht ebenfalls aus Eltern-Kind-Beziehungen.
Der linke und rechte Schenkel werden durch den unteren Schenkel 54 verbunden.
Weil die Abtastreihenfolge von links nach rechts und von oben nach
unten ausgelegt ist, umfasst der Punkt, an dem der untere Schenkel 54 den
rechten Schenkel 52 verbindet, eine Geschwisterbeziehung.
Insbesondere eine Lauflänge 56 und eine
Lauflänge 58 überlappen
sich bei 60. Die Lauflänge 56 wird
folglich als das Geschwister der Eltern 62 der Lauflänge 58 behandelt.
-
Abruf angeschlossener
Komponenten
-
Sobald
die Laufdatenstruktur 30 vom Abtastprozess bestückt worden
ist, beginnt ein Prozess zum Abrufen angeschlossener Komponenten.
Wie aus dem Flussdiagramm von 5 ersichtlich
ist, verwendet der Abrufprozess die aus der anfänglichen Abtastung erhaltenen
und gespeicherten Eltern-, Kind- und Geschwisterinformationen. Dieser anfängliche
Abtastschritt ist bei Schritt 102 dargestellt.
-
Die
verbliebenen angeschlossenen Komponenten werden wie folgt verarbeitet.
Mit der die obere ganz links befindliche Ecke belegenden Lauflänge (durch
ihre X-Minimum-, X-Maximum-
und Y-Koordinatenwerte bestimmt) beginnend identifiziert der Prozess
zuerst durch Untersuchen der Laufdatenstruktur, ob diese Lauflänge ein
Kind hat. Dies ist bei Schritt 104 dargestellt und auch
im Diagramm über den
Abruf angeschlossener Komponenten von 6 veranschaulicht.
In 6 ist der Anfangspunkt als 80 gekennzeichnet
angegeben. Wird kein Kind gefunden wie im Falle der Lauflänge bei 82 in 6,
verbindet das Verfahren zum Geschwister, wie bei 84 angegeben.
Der Geschwisterverbindungsschritt ist bei 106 in 5 dargestellt.
-
Das
Verfahren ist rekursiv. Es fährt
mit dem Suchen von Kind- und Geschwisterverbindungen fort, bis keine
Kinder oder Geschwister mehr identifiziert werden, wie bei Schritt 108 angegeben.
Diese Bedingung tritt bei 86 in 6 auf. Sobald
keine weiteren Kinder oder Geschwister gefunden werden können, beginnt
das Verfahren, nach Eltern einer gegebenen Lauflänge zu suchen, wie bei Schritt 110 dargestellt
ist. Wie z. B. aus 5 ersichtlich ist, würde das
Verfahren die Laufverbindung 88 mit ihren Eltern 90 verbinden.
Schließlich
wird die gesamte angeschlossene Komponente abgerufen, was zu einer verbunden
Struktur führt,
die identifiziert, welche Lauflängen
an welche anderen Lauflängen
angeschlossen sind. Die gesamte verbundene Struktur stellt eine
angeschlossene Komponente dar. Es sei darauf hingewiesen, dass es
möglich
ist, dass ein gegebenes Bild mehrere angeschlossene Komponenten
hat, die voneinander losgelöst
sind. Das in 5 beschriebene Verfahren kann
mehrere Male wiederholt werden, bis alle angeschlossenen Komponenten identifiziert
worden sind.
-
Obwohl
das bisher beschriebene Verfahren in bildpunktbasierten Bildern
zu findende angeschlossene Komponenten gut zu identifizieren vermag,
profitieren einige Bildverarbeitungsaufgaben wie z. B. Identifizieren
eingekreister Bereiche durch weitere Verarbeitung. Insbesondere
wandelt die gegenwärtig
bevorzugte Ausführungsform
die angeschlossene Komponente in eine Kontur um, die dann zum Erzeugen
neuer Strukturen verwendet werden kann, die einfacher und zuverlässiger verarbeitet werden.
In einer Anwendung, in der vom Benutzer gezeichnete Kreise identifiziert
werden, so dass der eingekreiste Bereich extrahiert werden kann,
werden die angeschlossenen Komponenten in Konturen umgewandelt,
die dann zum Wiedererzeugen von Kreisen verwendet werden, die durch
den Computer leichter verarbeitet werden.
-
Der
Konturverfolgungsalgorithmus verwendet die gleiche Datenstruktur,
die die angeschlossenen Komponenten erzeugte, nämlich die Laufdatenstruktur 30.
Beim Abrufen von angeschlossenen Komponenten ruft der Algorithmus
rekursiv das Kind oder die Eltern jeder Lauflänge ab. Wenn kein Kind oder
Eltern gefunden werden können,
wechselt der Algorithmus zu Geschwistern. Für jedes Geschwister setzt der
Algorithmus die Suche zunächst
nach Kindern und Eltern fort. Die Eltern- und Kind-Beziehung stellt
sicher, dass die in Zusammenhang stehenden abgerufenen Lauflängen Bildpunkte
haben, die zur selben Kontur gehören
und sich in einem Abschnitt der Kontur nebeneinander befinden.
-
Bei
der derzeit bevorzugten Ausführungsform
definiert der Konturverfolgungsalgorithmus den Mittelpunkt jeder
Lauflänge.
Der Mittelpunkt wird demgemäß durch
seine P
X- und
P
Y-Komponenten definiert, wie folgt:
-
7 zeigt
die Mittelpunkte einer beispielhaften Lauflängendarstellung, bei der die
Mittelpunkte als dunkle Punkte und die übrigen Bildpunkte durch heller
schraffiert gekennzeichnet sind. Es sei darauf hingewiesen, dass
der Algorithmus bei jedem Wechsel des Abrufs auf eines der Geschwister
ein anderes Kontursegment beginnt. Folglich gibt es in 7 zwei
Kontursegmente, ein ganz linkes Kontursegment 98 und ein
ganz rechtes Kontursegment 99. Die zwei Segmente werden
entlang der horizontalen Lauflänge 96 verbunden.
Folglich teilen sie sich einen gemeinsamen Mittelpunkt, nämlich den
Mittelpunkt 120. Der Konturverfolgungsalgorithmus weist den
Mittelpunkt am Ende einer Kontur als Anfangsmittelpunkt der folgenden
Kontur zu. Auf diese Weise werden beide Konturen miteinander verbunden,
wie in 8 veranschaulicht. In 8 ist die
Kontur 98 mittels ununterbrochener Linien verbunden dargestellt,
und die Kontur 99 ist mittels gestrichelter Linien verbunden
dargestellt.
-
Zum
besseren Verstädnis,
wie die lauflängenbasierte
Analyse angeschlossener Komponenten in einer Anwendung verwendet
werden kann, sei auf das Ablaufdiagramm von 9 verwiesen. 9 zeigt,
wie ein vom Benutzer gezeichneter Kreis in einem abgetasteten Bild
verwendet werden kann. Der vom Benutzer gezeichnete Kreis kann z.
B. eine Dateibezeichnungskennung oder Nummer einkreisen, die zum
Indexieren des abgetasteten Bilds zum Speichern und Abrufen verwendet
wird.
-
Bei
Schritt 200 beginnend führt
das Verfahren zuerst eine Vorverarbeitung des Bilds durch, um die
Bilddaten in eine geeignete Auflösung
und Bittiefe für
die Analyse angeschlossener Komponenten umzuwandeln. Dies ist ein
wahlfreier Schritt, der z. B. zum Umwandeln von Farbbilddaten in
Schwarzweißdaten
oder zum Umwandeln von Grauskalendaten in Schwarzweißdaten durchgeführt werden
kann.
-
Als
nächstes
geht das Verfahren zu Schritt 202 weiter, wo unter Verwendung
der oben beschriebenen Lauflängen-Analysetechniken
eine Analyse angeschlossener Komponenten durchgeführt wird. Falls
gewünscht,
können
bei Schritt 204 Halbtondaten und kleine (Rauschen zuzuschreibende)
Lücken in
Pixeldaten eliminiert werden. Einzelne weiße Bildpunkte in einer ansonsten
schwarzen Bildpunktdomäne
können
in schwarze Bildpunkte umgewandelt werden, um die Bilddaten "aufzufüllen" oder zu "entsprenkeln".
-
Nachdem
die angeschlossenen Komponenten identifiziert worden sind und die
Laufdatenstruktur bestückt
worden ist, geht der Prozess zu Schritt 206 weiter, wo
Kontursegmentinformationen aus den Daten extrahiert werden. Der
Kontursegment-Extraktionsprozess wird durchgeführt wie oben beschrieben, was
eine oder mehrere angeschlossene Konturen ergibt wie z. B. die in 8 dargestellte
angeschlossene Kontur. Die angeschlossene Kontur dient als "Ersatz" für den ursprünglich gezeichneten
Kreis. Merkmalpunkte werden in der Kontur identifiziert, Schritt 208,
und diese Merkmalpunkte werden verwendet, um die Kontur in Kontursegmente
zu brechen, Schritt 210. Brechen der Kontur gemäß ihren Merkmalpunkten
ist in Situationen nützlich,
in denen vom Benutzer gezeichnete Kreise andere Konturstrukturen
berühren
oder überlappen
können.
Die Merkmalpunkte werden dann bei Schritt 212 verwendet,
um Kreise zu rekonstruieren, die dann bei Schritt 214 ausgegeben
werden. Die rekonstruierten Kreise werden ohne Lücken oder Zweideutigkeit bezüglich des
Abschlusses erzeugt. Folglich kann die nachfolgende Bildverarbeitung
effizienter durchgeführt
werden.