local_thresholdπ
Short descriptionπ
local_threshold β Segment an image using local thresholding.
Signatureπ
local_threshold( image Image, out region Region, string Method, string LightDark, attribute.name GenParamName, attribute.value GenParamValue )
Descriptionπ
local_threshold segments a single-channel image Image
using the thresholding method given in Method and returns the
segmented region in Region. Currently the operator offers only the
Method 'adapted_std_deviation'. This algorithm is a text
binarization technique and provides good results for document images.
Adaptive Thresholdingπ
By selecting Method = 'adapted_std_deviation', a
locally adaptive thresholding based on local mean and standard
deviation according to Sauvola (see the paper in References) is
invoked. The algorithm is able to segment document images even if
they are degraded, e.g., due to inhomogeneous illumination or noise.
It enables text binarization on an inhomogeneous background by taking
into account the local contrast.
For a segmentation of the dark foreground (see parameter
LightDark), for a pixel at position
texttt{(r,c)}, a local threshold
texttt{T(r,c)} is calculated within a window of size
'mask_size'x'mask_size' (see the generic
parameter 'mask_size') as follows:
where \(\mu(r,c)\) is the local mean value within the window and \(\sigma(r,c)\) denotes the corresponding standard deviation. The parameter texttt{R} (see 'range') is the assumed maximum value of the standard deviation (texttt{R} = 128 for byte images) and texttt{k} (see 'scale') a parameter that controls how much the threshold value texttt{T(r,c)} differs from the mean value \(\mu(r,c)\). If there is high contrast in the neighborhood of a point texttt{(r,c)} the standard deviation \(\sigma(r,c)\) has a value close to texttt{R} which yields a threshold value texttt{T(r,c)} close to the local mean \(\mu(r,c)\). If the contrast is low, the local threshold is below the local mean value. For dark text on light background containing also darker regions, this lower threshold enables the segmentation of the text even in darker areas.
The parameter LightDark controls, whether light or dark
structures are segmented.
-
If
LightDark= 'dark', dark structures on a light background are segmented. Every pixel texttt{p(r,c)} whose gray value is smaller than the calculated local threshold texttt{T(r,c)} is selected. -
If
LightDark= 'light', light structures on a dark background are segmented. The result is essentially the same as if the image would have been inverted and then,LightDarkwas set to 'dark'.
By setting GenParamName to one of the following values, additional
parameters specific for the 'adapted_std_deviation' method can be set
with GenParamValue:
-
'mask_size': specifies the mask size, i.e., the size of the neighborhood in which the local threshold is calculated. The smaller the window size the thinner the segmented strokes. 'mask_size' must be set to a value that is larger than the stroke width of the characters or structures to be segmented. If 'mask_size' is even, the next larger odd value is used.
Suggested values: 15, 21, 31.
Default: 15.
-
'scale': sets the parameter texttt{k} (\(0\leq k\)), that controls how much the threshold value differs from the local mean value. Use smaller values for 'scale' to also segment structures with a lower contrast to their background. Use larger values to suppress clutter.
Suggested values: 0.2, 0.3, 0.5.
Default: 0.2.
-
'range': sets the maximum assumed value of standard deviation texttt{R}. This parameter should be adapted based on the expected gray value range. As a rule of thumb, the value for 'range' can be set to \(range = 0.5\cdot(MaxGray-MinGray)\), where MinGray and MaxGray are the minimum and maximum gray values in the image, which can be determined with
min_max_gray.Suggested values: 128, 32767.5.
Default: 128 (for
byteimages), 32767.5 (foruint2images).
Attentionπ
Note that filter operators may return unexpected results if an image with a reduced domain is used as input. Please refer to the chapter Filters.
Execution informationπ
Execution information
-
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
-
Multithreading scope: global (may be called from any thread).
-
Automatically parallelized on tuple level.
-
Automatically parallelized on internal data level.
Parametersπ
Image (input_object) singlechannelimage(-array) β object (byte / uint2)
Input Image.
Region (output_object) region(-array) β object
Segmented output region.
Method (input_control) string β (string)
Segmentation method.
Default: 'adapted_std_deviation'
List of values: 'adapted_std_deviation'
LightDark (input_control) string β (string)
Extract foreground or background?
Default: 'dark'
List of values: 'dark', 'light'
GenParamName (input_control) attribute.name(-array) β (string)
List of generic parameter names.
Default: []
List of values: 'mask_size', 'range', 'scale'
GenParamValue (input_control) attribute.value(-array) β (integer / real)
List of generic parameter values.
Default: []
Suggested values: 0.2, 15, 30, 128.0
Combinations with other operatorsπ
Combinations
Possible successors
connection, select_shape, select_gray
Alternatives
auto_threshold, binary_threshold, char_threshold
See also
Referencesπ
J. Sauvola, M. PietikΓ€inen, ``Adaptive document image binarizationβ, Pattern Recognition, 33, 225-236 (2000)
Moduleπ
Foundation