local_threshold
— Segmentieren mit lokalen Schwellwertoperationen.
local_threshold(Image : Region : Method, LightDark, GenParamName, GenParamValue : )
local_threshold
segmentiert ein einkanaliges Bild Image
mit dem in Method
angegebenen Verfahren und gibt die segmentierte
Region
zurück.
Der Operator bietet momentan das Verfahren 'adapted_std_deviation' an.
Dieses Verfahren ist ein lokales Schwellwertverfahren und
liefert gute Ergebnisse auf Bildern von Dokumenten.
Bei der Wahl von 'adapted_std_deviation' als Verfahren in Method
wird ein lokal adaptives Schwellwertverfahren basierend auf
lokalem Mittelwert und Standardabweichung durchgeführt.
Dieses Verfahren kann zum Beispiel Bilder von Dokumenten segmentieren, die
durch Veränderungen in der Beleuchtung, durch Rauschen oder andere Effekte
beeinflusst wurden. Es erlaubt die Segmentierung von Text
auf inhomogenem Hintergrund durch Berücksichtigung des lokalen Kontrastes.
Für die Segmentierung des dunklen Vordergunds (siehe Parameter
LightDark
) wird für ein Pixel an Position
(r,c)
die lokale Schwelle
T(r,c)
in einem Fenster der Größe
mask_size
x mask_size
(siehe
'mask_size' ) wie folgt berechnet:
Hier ist der lokale Mittelwert
innerhalb des Fensters und
die entsprechende Standardabweichung.
Der Parameter R
(siehe 'range' )
ist der maximal erwartete Wert der Standardabweichung
(R
= 128 für byte-Bilder) und
k
(siehe 'scale' ) der Parameter, der kontrolliert
wie stark sich der Schwellwert T(r,c)
vom
Mittelwert unterscheidet.
Bei hohem Kontrast in der Nachbarschaft des Punktes
(r,c)
hat die Standardabweichung
einen Wert nahe bei
R
, was zu einer Schwelle
T(r,c)
nahe dem lokalen Mittelwert
führt. Bei niedrigem Kontrast
ist die lokale Schwelle kleiner als der lokale Mittelwert.
Für dunklen Text auf hellem Hintergrund der auch dunkle Regionen enthält,
erlaubt dies die Segmentierung des Textes auch in den dunkleren Bereichen.
Der Parameter LightDark
steuert, ob helle oder dunkle
Strukturen segmentiert werden sollen.
Für LightDark
= 'dark'
werden dunkle Strukturen vor einem hellen Hintergrund
segmentiert. Jedes Pixel p(r,c)
dessen
Grauwert größer als die lokale Schwelle
T(r,c)
ist wird selektiert.
Für LightDark
= 'light'
werden helle Strukturen vor einem dunklen Hintergrund
segmentiert. Das Ergebnis ist im wesentlichen das gleiche, wie
wenn man das Bild invertieren würde und dann den Parameter
LightDark
auf 'dark' setzen würde.
Mit Hilfe der generischen Parameter GenParamName
und
GenParamValue
können folgende Parameter des Verfahrens beinflusst
werden:
bestimmt die Maskengröße, also die Größe der Nachbarschaft, in der die lokale Schwelle bestimmt wird. Je kleiner die Maskengröße ist, umso dünner werden segmentierte Strukturen. 'mask_size' sollte größer als die Strichbreite der zu segmentierenden Zeichen oder Strukturen gesetzt werden. Ist 'mask_size' gerade, wird die nächst höhere ungerade Größe verwendet.
Vorgeschlagene Werte
: 15 (default)
,
21, 31
bestimmt den Parameter k
(), der kontrolliert wie stark der
Schwellwert vom lokalen Mittelwert abweicht. Kleinere Werte für
'scale' führen dazu, dass auch Strukturen segmentiert
werden, die einen geringeren Kontrast zum Hintergrund aufweisen.
Größere Werte führen zur Unterdrückung von Artefakten.
Vorgeschlagene Werte
: 0.2 (default)
,
0.3, 0.5
bestimmt den maximalen Wert der Standardabweichung
R
. Dieser Wert sollte an den
erwarteten Grauwertbereich angepasst werden. Als Faustregel kann
der Wert für 'range' auf gesetzt werden,
wobei MinGray und MaxGray die minimalen und maximalen Grauwerte
sind, die mit min_max_gray
bestimmt werden können.
Vorgeschlagene Werte
: 128
(default)
für byte-Bilder, 32767.5
(default)
für uint2-Bilder
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: 'adapted_std_deviation'
Werteliste: 'adapted_std_deviation'
LightDark
(input_control) string →
(string)
Segmentierung des Vordergunds oder des Hintergrunds.
Defaultwert: 'dark'
Werteliste: 'dark' , 'light'
GenParamName
(input_control) attribute.name(-array) →
(string)
Liste der generischen Parameter.
Defaultwert: []
Werteliste: 'mask_size' , 'range' , 'scale'
GenParamValue
(input_control) attribute.value(-array) →
(integer / real)
Liste der Werte für die generischen Parameter.
Defaultwert: []
Wertevorschläge: 0.2, 15, 30, 128.0
connection
,
select_shape
,
select_gray
auto_threshold
,
binary_threshold
,
char_threshold
J. Sauvola, M. Pietikäinen, „Adaptive document image binarization", Pattern Recognition, 33, 225-236 (2000)
Foundation