Schwellenwert-Verfahren

Liste der Operatoren ↓

Dieses Kapitel beschreibt Operatoren der Schwellenwertsegmentierung.

Konzept der Schwellenwertoperatoren

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.

Histogrammbasierte Schwellenwertoperatoren

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.

Threshold

Mit dem Operator thresholdthresholdThresholdThresholdThresholdthreshold kann der Nutzer alle Pixel auswählen, deren Wert in einem manuell bestimmten Grauwertintervall liegt.

(1) (2) (3)
(1) Eingabebild, (2) Histogramm des Eingabebildes mit den manuell bestimmten Schwellenwerten MinGrayMinGrayMinGrayMinGrayminGraymin_gray und MaxGrayMaxGrayMaxGrayMaxGraymaxGraymax_gray, (3) Ergebnis der Segmentierung.

Der Operator fast_thresholdfast_thresholdFastThresholdFastThresholdFastThresholdfast_threshold arbeitet ebenfalls mit zwei manuell zu bestimmenden Schwellenwerten, nutzt allerdings einen anderen Algorithmus zur Berechnung.

Binary Threshold

Um das Eingangsbild in eine helle und eine dunkle Region einzuteilen berechnet binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdBinaryThresholdbinary_threshold automatisch einen Schwellenwert, um Vorder- und Hintergrund möglichst eindeutig voneinander zu trennen.

(1) (2) (3)
(1) Eingabebild, (2) Histogramm des Eingabebildes mit einem automatisch bestimmten binären Schwellenwert, (3) Ergebnis der Segmentierung.

Die subpixelgenaue Grenze zwischen Vorder- und Hintergrund des Eingabebildes gibt der Operator threshold_sub_pixthreshold_sub_pixThresholdSubPixThresholdSubPixThresholdSubPixthreshold_sub_pix aus. Der Schwellenwert muss hierbei manuell gesetzt werden.

Automatic Threshold

auto_thresholdauto_thresholdAutoThresholdAutoThresholdAutoThresholdauto_threshold 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.

(1) (2) (3) (4)
(1) Leicht geglättetes Histogramm, (2) höhere Anzahl an lokalen Minima, (3) stärkere Glättung des Histogramms, (4) Anzahl lokaler Minima reduziert.
(1) (2) (3)
(1) Eingabebild, (2) vier Klassen aus leicht geglättetem Histogramm, (3) zwei Klassen aus stärker geglättetem Histogramm.

histo_to_threshhisto_to_threshHistoToThreshHistoToThreshHistoToThreshhisto_to_thresh kann genutzt werden, um die automatisch berechneten Schwellenwerte ausgeben zu lassen.

Character Threshold

Um dunklen Text auf hellem Hintergrund zu segmentieren, ist char_thresholdchar_thresholdCharThresholdCharThresholdCharThresholdchar_threshold 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 PercentPercentPercentPercentpercentpercent bestimmt.

(1) (2)
(3) (4)
(1) Eingabebild, (2) geglättetes Histogramm mit globalem Maximum, (3) PercentPercentPercentPercentpercentpercent bestimmt den Schwellenwert links des Maximums, (4) Ergebnisbild.
Dual-Threshold

Subtrahiert man zwei Bilder voneinander oder nutzt einen Operator wie laplace_of_gausslaplace_of_gaussLaplaceOfGaussLaplaceOfGaussLaplaceOfGausslaplace_of_gauss zur Kantendetektion, so entstehen üblicherweise Bilder mit negativen Pixelwerten. Zur Segmentierung solcher Bilder unter Berücksichtigung der Regionengröße ist der Operator dual_thresholddual_thresholdDualThresholdDualThresholdDualThresholddual_threshold geeignet.

Histogramm eines Bildes mit negativen und positiven Pixelwerten mit den Schwellenwerten ThresholdThresholdThresholdThresholdthresholdthreshold (innere Grenzen) und MinGrayMinGrayMinGrayMinGrayminGraymin_gray (äußere Grenzen). Pixel werden nur ausgewählt wenn Grauwert- und Größenbedingung erfüllt werden.

Local Threshold Operators

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.

Local Threshold

local_thresholdlocal_thresholdLocalThresholdLocalThresholdLocalThresholdlocal_threshold 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.

(1) (2)
(3) (4)
(1) Eingabebild, (2) Segmentierung mit globalem Schwellenwert gibt nicht den Text allein aus, (3) Schwellenwert wird an lokale Bildmerkmale angepasst, (4) Text kann segmentiert werden.

Der Operator var_thresholdvar_thresholdVarThresholdVarThresholdVarThresholdvar_threshold arbeitet nach einem ähnlichen Prinzip, verwendet allerdings lokale Helligkeit und Standardabweichung als Kriterien zur Segmentierung.

Dynamic Threshold

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_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 LightDarkLightDarkLightDarkLightDarklightDarklight_dark 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 OffsetOffsetOffsetOffsetoffsetoffset gesteuert werden.

(1) (2)
(3) (4)
(1) Eingabebild, (2) Segmentierung von Kratzern mit globalen Schwellenwerten ist aufgrund der unregelmäßigen Belichtungsverhältnisse nicht möglich, (3) Untersuchung der Grauwertdifferenzen korrespondierender Pixel in Originalbild (links) und Mittelwertbild (rechts) zur Segmentierung von Regionen in Abhängigkeit vom Parameter OffsetOffsetOffsetOffsetoffsetoffset (Vergrößerte Bildausschnitte), (4) Ergebnisbild nach Selektion gewünschter Regionen. Für weitere Details steht das Beispiel surface_scratch.hdev zur Verfügung.

Um die absoluten Differenzen zwischen zwei Bildern zu untersuchen steht der Operator check_differencecheck_differenceCheckDifferenceCheckDifferenceCheckDifferencecheck_difference zur Verfügung. Er ist besonders geeignet für die Detektion von Veränderung in aufeinanderfolgenden Bildaufnahmen.

Zero Crossing Threshold

In Bildern, welche durch Operatoren wie laplace_of_gausslaplace_of_gaussLaplaceOfGaussLaplaceOfGaussLaplaceOfGausslaplace_of_gauss erzeugt werden, können Kanten an den Nulldurchgängen identifiziert werden. zero_crossingzero_crossingZeroCrossingZeroCrossingZeroCrossingzero_crossing und zero_crossing_sub_pixzero_crossing_sub_pixZeroCrossingSubPixZeroCrossingSubPixZeroCrossingSubPixzero_crossing_sub_pix liefern diese Kanten unter Berücksichtigung der Vierer-Nachbarschaft jedes Bildpunktes.

(1) (2)
(3) (4)
(1) Eingabebild, (2) Bildbereich wird reduziert und Laplace-of-Gaussian Filterung wird durchgeführt, (3) Kanten werden an den Nulldurchgängen pixelgenau (rot) bzw. subpixelgenau (grün) identifiziert, (4) Bildausschnitt des Resultats mit zero_crossingzero_crossingZeroCrossingZeroCrossingZeroCrossingzero_crossing (rot) bzw. zero_crossing_sub_pixzero_crossing_sub_pixZeroCrossingSubPixZeroCrossingSubPixZeroCrossingSubPixzero_crossing_sub_pix (grün).

Liste der Operatoren

auto_thresholdAutoThresholdauto_thresholdAutoThresholdauto_threshold
Segmentieren mit Schwellen aus dem Histogramm.
binary_thresholdBinaryThresholdbinary_thresholdBinaryThresholdbinary_threshold
Segmentieren mit verschiedenen globalen Schwellenwertoperationen.
char_thresholdCharThresholdchar_thresholdCharThresholdchar_threshold
Segmentieren mit Schwellen für Texte.
check_differenceCheckDifferencecheck_differenceCheckDifferencecheck_difference
Pixelweises Vergleichen zweier Bilder.
dual_thresholdDualThresholddual_thresholdDualThresholddual_threshold
Segmentieren mit Schwellen für Bilder mit Vorzeichen.
dyn_thresholdDynThresholddyn_thresholdDynThresholddyn_threshold
Segmentieren mit lokalem Schwellenwert.
fast_thresholdFastThresholdfast_thresholdFastThresholdfast_threshold
Schnelles Segmentieren mit globalen Schwellenwerten.
histo_to_threshHistoToThreshhisto_to_threshHistoToThreshhisto_to_thresh
Berechnen von Grauwertschwellen aus einem Histogramm.
local_thresholdLocalThresholdlocal_thresholdLocalThresholdlocal_threshold
Segmentieren mit lokalen Schwellenwertoperationen.
thresholdThresholdthresholdThresholdthreshold
Segmentieren mit globalen Schwellenwerten.
threshold_sub_pixThresholdSubPixthreshold_sub_pixThresholdSubPixthreshold_sub_pix
Subpixel-genaues Extrahieren von Grauwert-Höhenlinien in einem Bild
var_thresholdVarThresholdvar_thresholdVarThresholdvar_threshold
Segmentieren mit Schwellen durch lokale Analyse von Mittelwert und Standardabweichung.
zero_crossingZeroCrossingzero_crossingZeroCrossingzero_crossing
Extrahieren von Nulldurchgängen in einem Bild.
zero_crossing_sub_pixZeroCrossingSubPixzero_crossing_sub_pixZeroCrossingSubPixzero_crossing_sub_pix
Subpixel-genaues Extrahieren von Nulldurchgängen in einem Bild