Dieses Kapitel beschreibt Operatoren der Schwellenwertsegmentierung.
Eine Möglichkeit ein Bild zu segmentieren ist die Verwendung von Schwellenwertoperatoren. Regionen werden dabei durch Schwellenwertbedingungen bestimmt, die auf Grauwerten basieren. Je nach Anwendung können sich Aufgabenbereiche und Aufnahmesituationen stark unterscheiden, weswegen eine Reihe unterschiedlicher Operatoren zur Verfügung stehen.
Die folgenden Abschnitte geben einen Überblick über die vorhandenen Schwellenwertoperatoren. Zu diesem Zweck werden sie in histogrammbasierte und lokale Methoden eingeteilt und genauer betrachtet.
Unabhängig von ihrer Position im Bild werden Pixel bei der histogrammbasierten Segmentierung nur basierend auf ihren Grauwerten in Regionen eingeteilt. Die Schwellenwerte werden daher durch eine Anpassung an die Form des Histogramms bestimmt.
Mit dem Operator
kann der Nutzer alle Pixel auswählen,
deren Wert in einem manuell bestimmten Grauwertintervall liegt.
threshold
(1) | (2) | (3) |
Der Operator
arbeitet ebenfalls mit zwei manuell
zu bestimmenden Schwellenwerten, nutzt allerdings einen anderen Algorithmus
zur Berechnung.
fast_threshold
Um das Eingangsbild in eine helle und eine dunkle Region einzuteilen
berechnet
automatisch einen Schwellenwert, um Vorder-
und Hintergrund möglichst eindeutig voneinander zu trennen.
binary_threshold
(1) | (2) | (3) |
Die subpixelgenaue Grenze zwischen Vorder- und Hintergrund des Eingabebildes
gibt der Operator
aus.
Der Schwellenwert muss hierbei manuell gesetzt werden.
threshold_sub_pix
berechnet die lokalen Minima im Histogramm eines
Bildes, um daraus die Schwellenwerte zu bestimmen. Durch die Glättung des
Histogramms kann Einfluss auf die Häufung lokaler Minima und damit die
Anzahl an Klassen im Ergebnisbild genommen werden.
auto_threshold
(1) | (2) | (3) | (4) |
(1) | (2) | (3) |
kann genutzt werden, um die automatisch berechneten
Schwellenwerte ausgeben zu lassen.
histo_to_thresh
Um dunklen Text auf hellem Hintergrund zu segmentieren, ist
ein nützliches Tool. Im Histogramm entspricht der
Hintergrund dem globalen Maximum. Ohne geeignetes Minimum im unteren
Grauwertbreich wird der Schwellenwert dann in Abhängigkeit von der Frequenz
des maximalen Grauwerts mittels des Parameters char_threshold
bestimmt.
Percent
(1) | (2) |
(3) | (4) |
Subtrahiert man zwei Bilder voneinander oder nutzt einen Operator wie
zur Kantendetektion, so entstehen üblicherweise
Bilder mit negativen Pixelwerten. Zur Segmentierung solcher Bilder unter
Berücksichtigung der Regionengröße ist der Operator laplace_of_gauss
geeignet.
dual_threshold
(1) | (2) |
Im Gegensatz zur histogrammbasierten Schwellenwertsegmentierung berücksichtigt ein lokaler Schwellenwertoperator auch die Position oder Nachbarschaft eines Pixels. Statt globalen Schwellenwerten, die auf jeden Bildpunkt angewandt werden, ist es oft sinnvoll den Schwellenwert lokal an Bildmerkmale anzupassen.
berücksichtigt für jedes Pixel lokale Mittelwerte
und Standardabweichungen. Die Größe der einbezogenen Nachbarschaft wird vom
Nutzer festgelegt.
Dieser Operator eignet sich besonders für die Segmentierung von Text bei
inhomogenen Belichtungsverhältnissen oder Hintergrund.
local_threshold
(1) | (2) |
(3) | (4) |
Der Operator
arbeitet nach einem ähnlichen Prinzip,
verwendet allerdings lokale Helligkeit und Standardabweichung als Kriterien
zur Segmentierung.
var_threshold
kann verwendet werden, um die Unterschiede zwischen
Bildern zu untersuchen. Üblicherweise werden dabei das Eingabebild und eine
gefilterte Version des Originals (z.B. das Mittelwertbild) pixelweise
verglichen. Der Parameter dyn_threshold
wird dabei dazu verwendet
festzulegen welche Veränderungen im Bild relevant für den Nutzer sind.
Die Sensitivität des Operators kann mit dem Parameter LightDark
gesteuert werden.
Offset
(1) | (2) |
(3) | (4) |
Um die absoluten Differenzen zwischen zwei Bildern zu untersuchen steht der
Operator
zur Verfügung. Er ist besonders geeignet
für die Detektion von Veränderung in aufeinanderfolgenden Bildaufnahmen.
check_difference
In Bildern, welche durch Operatoren wie
erzeugt
werden, können Kanten an den Nulldurchgängen identifiziert werden.
laplace_of_gauss
und zero_crossing
liefern diese Kanten
unter Berücksichtigung der Vierer-Nachbarschaft jedes Bildpunktes.
zero_crossing_sub_pix
(1) | (2) |
(3) | (4) |
auto_threshold
binary_threshold
char_threshold
check_difference
dual_threshold
dyn_threshold
fast_threshold
histo_to_thresh
local_threshold
threshold
threshold_sub_pix
var_threshold
zero_crossing
zero_crossing_sub_pix