binary_threshold
— Segmentieren mit verschiedenen globalen Schwellwertoperationen.
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
binary_threshold
segmentiert ein einkanaliges Bild
Image
mit einem automatisch bestimmten globalen Schwellwert
und gibt die segmentierte Region
zurück. Dies ist z.B. für
die Segmentierung von Buchstaben und Zeichen auf gleichmäßig
beleuchtetem Hintergrund geeignet. binary_threshold
gibt auch
den verwendeten Schwellwert in UsedThreshold
zurück.
Der verwendete Schwellwert wird mit der in Method
angegebenen
Methode bestimmt. Derzeit stehen die beiden folgenden Methoden zur
Verfügung: 'max_separability' und 'smooth_histo' .
Beide Verfahren sollten nur auf Bilder angewendet werden, die ein
bimodales Histogramm haben.
Die Methode 'smooth_histo' stellt die Funktionalität zur
Verfügung, die vom Operator bin_threshold
bereitgestellt
wurde. Die Methode 'max_separability' ist weniger empfindlich
gegenüber dünnen und isolierten Spitzen im Histogramm. Außerdem
tendiert diese Methode dazu, Werte für UsedThreshold
zu
bestimmen, die näher am Schwerpunkt des Histogramms liegen. In vielen
Fällen ist die Methode 'max_separability' schneller als
'smooth_histo' .
Bei der Wahl von 'max_separability' als Verfahren in
Method
wird eine automatische Bestimmung eines globalen
Schwellwertes nach dem Verfahren von Otsu (siehe Referenzen)
durchgeführt.
Der Algorithmus berechnet zuerst das Histogramm des Bildes und verwendet dann statistische Momente um die optimale Schwelle zu bestimmen. Die Schwelle trennt die Pixel so in Vordergrund und Hintergrund, dass die Streuung zwischen den beiden Klassen maximiert wird.
Für LightDark
= 'light'
werden alle Pixel mit Grauwert größer gleich ausgewählt.
Für LightDark
= 'dark' werden alle Pixel
mit Grauwert kleiner als ausgewählt.
Das Verfahren 'max_separability' ist nur für byte- und uint2-Bilder verfügbar.
Bei der Wahl von 'smooth_histo' als Verfahren in
Method
wird der optimale Schwellwert
(r,c)
wie folgt bestimmt: Als erstes wird dabei
das relative Histogramm über den Grauwerten ermittelt. Dann werden im
Histogramm relevante Minima gesucht, die als Schwellen für die
Schwellenwertsegmentation dienen. Um die Anzahl der Minima zu
reduzieren, wird das Histogramm wie bei auto_threshold
mit
einer Gaußmaske geglättet. Die Maske wird dabei so lange vergrößert,
bis nur noch ein Minimum vorhanden ist.
Für LightDark
= 'light'
wird jedes Pixel p(r,c)
dessen Grauwert größer
gleich der lokalen Schwelle T(r,c)
ist
selektiert.
Für LightDark
= 'dark'
wird jedes Pixel p(r,c)
dessen Grauwert kleiner
als die lokale Schwelle T(r,c)
ist selektiert.
Image
(input_object) singlechannelimage(-array) →
object (byte / uint2)
Eingabebild.
Region
(output_object) region(-array) →
object
Segmentierte Ausgaberegion.
Method
(input_control) string →
(string)
Auswahl des Verfahrens.
Defaultwert: 'max_separability'
Werteliste: 'max_separability' , 'smooth_histo'
LightDark
(input_control) string →
(string)
Segmentierung des Vordergunds oder des Hintergrunds.
Defaultwert: 'dark'
Werteliste: 'dark' , 'light'
UsedThreshold
(output_control) number(-array) →
(integer / string)
Angewandte Schwelle.
connection
,
select_shape
,
select_gray
auto_threshold
,
char_threshold
,
local_threshold
N. Otsu, „A threshold selection method from gray level histograms",
IEEE Trans. Syst. Man. Cybern., Vol. SMC-9, 62-66 (1979)
Foundation