Operators |
This chapter describes threshold operators.
One way to perform a segmentation of an image is to use threshold operators. In doing so, regions that fulfill a certain threshold condition, depending on gray values, are determined within an image.
In order to fit different tasks and image properties there is a set of threshold operators provided.
The following paragraphs give an overview of the operators by differentiating them into histogram-based and local methods and having a closer look at the most important ones.
Histogram-based threshold segmentation does not take the position but only the pixel value into account. Therefore thresholds are determined by adjusting them to the histogram of an image.
By using threshold, you can select all pixels within user set gray value intervals.
(1) | (2) | (3) |
The operator fast_threshold also works with two manually determined thresholds but uses another computing algorithm.
To divide your image into light and dark regions, binary_threshold automatically computes a threshold to separate foreground from background.
(1) | (2) | (3) |
A segmentation using threshold_sub_pix also divides the image into foreground and background, but puts out the separating border with sub-pixel accuracy. The threshold has to be set manually.
auto_threshold computes local minima in the image histogram to determine thresholds. By smoothing the histogram you have influence on the number of classes found in the input image.
(1) | (2) | (3) | (4) |
(1) | (2) | (3) |
Use histo_to_thresh to get the gray values of local minima in the histogram.
To do a segmentation of dark text on light background, char_threshold is a useful tool. The maximum peak in the histogram corresponds to the light background. Assuming the text is darker than the background, you examine the smoothed histogram left of the maximum. The parameter Percent determines how far from the maximum the threshold is set, taking the frequencies of the gray values into account.
(1) | (2) |
(3) | (4) |
Subtracting an image from another or using an edge detecting operator like laplace_of_gauss usually leads to negative values in the resulting image. The operator dual_threshold is suited for the segmentation of signed images while also taking minimum region size into account.
(1) | (2) |
Unlike histogram-based threshold operators, a local threshold also takes position or neighborhood of pixels into account to assign them to the appropriate region. Instead of global thresholds that are applied to each pixel, it is sometimes be useful to adapt the threshold to local features of the image.
local_threshold takes the local mean and standard deviation into account and computes an individual threshold for each pixel. The size of the neighborhood is set by the user. This operator is especially suited for the segmentation of text, when lighting conditions or the background are not homogeneous.
(1) | (2) |
(3) | (4) |
The operator var_threshold works in a similar way, except it selects those points of the image that fulfill specified conditions regarding their local standard deviation and brightness.
With dyn_threshold you can inspect the differences between images. Usually the input image and a filtered version, e.g. the mean of the image, are compared pixel by pixel. The parameter LightDark is used to determine what kind of changes in the image are relevant. The sensitivity of the operator is controlled by the parameter Offset .
(1) | (2) |
(3) | (4) |
A similar operator is check_difference. The operator displays the absolute differences between two images. It is especially suited for change detection of consecutively acquired images.
Operators like laplace_of_gauss that are used for edge detection return signed images, where edges are located at the zero crossings. zero_crossing and zero_crossing_sub_pix can be used to extract those edges, taking the individual 4-neighborhood into account.
(1) | (2) |
(3) | (4) |
Operators |