Digital Signal Processing Reference
In-Depth Information
Datenstruktur in der Breadth-first -Variante (C) verwenden wir die Java-
Klasse LinkedList 2 mit den Methoden addFirst() , removeLast() und
isEmpty() (Prog.11.1, Zeile 23). Beide Container-Klassen sind durch die
Angabe <Node> auf den Objekttyp Node parametrisiert, d. h. sie konnen
nur Objekte dieses Typs aufnehmen. 3
Abb. 11.2 illustriert den Ablauf der Regionenmarkierung in beiden
Varianten anhand eines konkreten Beispiels mit einer Region, wobei der
Startpunkt ( seed point“) - der normalerweise am Rand der Kontur
liegt - willkurlich im Inneren der Region gewahlt wurde. Deutlich ist zu
sehen, dass die Depth-first -Methode zunachst entlang einer Richtung (in
diesem Fall horizontal nach links) bis zum Ende der Region vorgeht und
erst dann die ubrigen Richtungen berucksichtigt. Im Gegensatz dazu
breitet sich die Markierung bei der Breadth-first -Methode annahernd
gleichformig, d. h. Schicht um Schicht, in alle Richtungen aus.
Generell ist der Speicherbedarf bei der Breadth-first -Variante des
Flood-fill -Verfahrens deutlich niedriger als bei der Depth-first -Variante.
Fur das Beispiel in Abb. 11.2 mit der in Prog. 11.1 gezeigten Implemen-
tierung erreicht die Große des Stacks in der Depth-first -Variante 28.822
Elemente, wahrend die Queue der Breadth-first -Variante nur maximal
438 Knoten aufnehmen muss.
11 Regionen in Binarbildern
11.1.2 Sequentielle Regionenmarkierung
Die sequentielle Regionenmarkierung ist eine klassische, nicht rekursive
Technik, die in der Literatur auch als region labeling“ bekannt ist.
Der Algorithmus besteht im Wesentlichen aus zwei Schritten: (1) ei-
ner vorlaufigen Markierung der Bildregionen und (2) der Auflosung von
mehrfachen Markierungen innerhalb derselben Region. Das Verfahren ist
(vor allem im 2. Schritt) relativ komplex, aber wegen seines moderaten
Speicherbedarfs durchaus verbreitet, bietet in der Praxis allerdings ge-
genuber einfacheren Methoden kaum Vorteile. Der gesamte Ablauf ist in
Alg. 11.2 dargestellt.
Schritt 1: Vorlaufige Markierung
Im ersten Schritt des region labeling“ wird das Bild sequentiell von links
oben nach rechts unten durchlaufen und dabei jedes Vordergrundpixel
mit einer vorlaufigen Markierung versehen. Je nach Definition der Nach-
barschaftsbeziehung werden dabei fur jedes Pixel ( u, v ) die Umgebungen
N 2
N 1 ×
N 2 N 3 N 4
N 1 ×
N 4 ( u, v )=
oder
N 8 ( u, v )=
2 Die Klasse LinkedList ist Teil des Java Collection Frameworks (s. auch
Anhang 2.2).
3 Generische Typen und die damit verbundene Moglichkeit zur Parametrisie-
rung von Klassen gibt es erst seit Java 5 (1.5).
Search WWH ::




Custom Search