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 thresholdthresholdThresholdThresholdThreshold 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 MinGrayMinGrayMinGrayMinGrayminGray und MaxGrayMaxGrayMaxGrayMaxGraymaxGray, (3) Ergebnis der Segmentierung.

Der Operator fast_thresholdfast_thresholdFastThresholdFastThresholdFastThreshold 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_thresholdBinaryThresholdBinaryThresholdBinaryThreshold 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_pixThresholdSubPixThresholdSubPixThresholdSubPix aus. Der Schwellenwert muss hierbei manuell gesetzt werden.

Automatic Threshold

auto_thresholdauto_thresholdAutoThresholdAutoThresholdAutoThreshold 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_threshHistoToThreshHistoToThreshHistoToThresh kann genutzt werden, um die automatisch berechneten Schwellenwerte ausgeben zu lassen.

Character Threshold

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

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

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

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

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_thresholdLocalThresholdLocalThresholdLocalThreshold 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_thresholdVarThresholdVarThresholdVarThreshold arbeitet nach einem ähnlichen Prinzip, verwendet allerdings lokale Helligkeit und Standardabweichung als Kriterien zur Segmentierung.

Dynamic Threshold

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold 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 LightDarkLightDarkLightDarkLightDarklightDark 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 OffsetOffsetOffsetOffsetoffset 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 OffsetOffsetOffsetOffsetoffset (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_differenceCheckDifferenceCheckDifferenceCheckDifference 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_gaussLaplaceOfGaussLaplaceOfGaussLaplaceOfGauss erzeugt werden, können Kanten an den Nulldurchgängen identifiziert werden. zero_crossingzero_crossingZeroCrossingZeroCrossingZeroCrossing und zero_crossing_sub_pixzero_crossing_sub_pixZeroCrossingSubPixZeroCrossingSubPixZeroCrossingSubPix 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_crossingZeroCrossingZeroCrossingZeroCrossing (rot) bzw. zero_crossing_sub_pixzero_crossing_sub_pixZeroCrossingSubPixZeroCrossingSubPixZeroCrossingSubPix (grün).

Liste der Operatoren

auto_thresholdAutoThresholdAutoThresholdauto_threshold
Segmentieren mit Schwellen aus dem Histogramm.
binary_thresholdBinaryThresholdBinaryThresholdbinary_threshold
Segmentieren mit verschiedenen globalen Schwellwertoperationen.
char_thresholdCharThresholdCharThresholdchar_threshold
Segmentieren mit Schwellen für Texte.
check_differenceCheckDifferenceCheckDifferencecheck_difference
Pixelweises Vergleichen zweier Bilder.
dual_thresholdDualThresholdDualThresholddual_threshold
Segmentieren mit Schwellen für Bilder mit Vorzeichen.
dyn_thresholdDynThresholdDynThresholddyn_threshold
Segmentieren mit lokalem Schwellenwert.
fast_thresholdFastThresholdFastThresholdfast_threshold
Schnelles Segmentieren mit globalen Schwellenwerten.
histo_to_threshHistoToThreshHistoToThreshhisto_to_thresh
Berechnen von Grauwertschwellen aus einem Histogramm.
local_thresholdLocalThresholdLocalThresholdlocal_threshold
Segmentieren mit lokalen Schwellwertoperationen.
thresholdThresholdThresholdthreshold
Segmentieren mit globalen Schwellenwerten.
threshold_sub_pixThresholdSubPixThresholdSubPixthreshold_sub_pix
Subpixel-genaues Extrahieren von Grauwert-Höhenlinien in einem Bild
var_thresholdVarThresholdVarThresholdvar_threshold
Segmentieren mit Schwellen durch lokale Analyse von Mittelwert und Standardabweichung.
zero_crossingZeroCrossingZeroCrossingzero_crossing
Extrahieren von Nulldurchgängen in einem Bild.
zero_crossing_sub_pixZeroCrossingSubPixZeroCrossingSubPixzero_crossing_sub_pix
Subpixel-genaues Extrahieren von Nulldurchgängen in einem Bild