Operator Reference

binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdbinary_threshold (Operator)

binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdbinary_threshold — Segment an image using binary thresholding.

Signature

binary_threshold(Image : Region : Method, LightDark : UsedThreshold)

Herror binary_threshold(const Hobject Image, Hobject* Region, const char* Method, const char* LightDark, Hlong* UsedThreshold)

Herror T_binary_threshold(const Hobject Image, Hobject* Region, const Htuple Method, const Htuple LightDark, Htuple* UsedThreshold)

void BinaryThreshold(const HObject& Image, HObject* Region, const HTuple& Method, const HTuple& LightDark, HTuple* UsedThreshold)

HRegion HImage::BinaryThreshold(const HString& Method, const HString& LightDark, HTuple* UsedThreshold) const

HRegion HImage::BinaryThreshold(const HString& Method, const HString& LightDark, Hlong* UsedThreshold) const

HRegion HImage::BinaryThreshold(const char* Method, const char* LightDark, Hlong* UsedThreshold) const

HRegion HImage::BinaryThreshold(const wchar_t* Method, const wchar_t* LightDark, Hlong* UsedThreshold) const   ( Windows only)

static void HOperatorSet.BinaryThreshold(HObject image, out HObject region, HTuple method, HTuple lightDark, out HTuple usedThreshold)

HRegion HImage.BinaryThreshold(string method, string lightDark, out HTuple usedThreshold)

HRegion HImage.BinaryThreshold(string method, string lightDark, out int usedThreshold)

def binary_threshold(image: HObject, method: str, light_dark: str) -> Tuple[HObject, Sequence[Union[str, int]]]

def binary_threshold_s(image: HObject, method: str, light_dark: str) -> Tuple[HObject, Union[str, int]]

Description

binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdbinary_threshold segments a single-channel ImageImageImageimageimage using an automatically determined global threshold and returns the segmented region in RegionRegionRegionregionregion. This is, e.g., useful for the segmentation of characters on a homogeneously illuminated background. binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdbinary_threshold also returns the used threshold in UsedThresholdUsedThresholdUsedThresholdusedThresholdused_threshold.

The used threshold is determined by the method that is given in MethodMethodMethodmethodmethod. Currently the operator provides the following two methods: 'max_separability'"max_separability""max_separability""max_separability""max_separability" and 'smooth_histo'"smooth_histo""smooth_histo""smooth_histo""smooth_histo". Both methods should only be used for images that have a bimodal histogram.

The method 'smooth_histo'"smooth_histo""smooth_histo""smooth_histo""smooth_histo" provides the same functionality that has been provided by the operator bin_thresholdbin_thresholdBinThresholdBinThresholdbin_threshold. The method 'max_separability'"max_separability""max_separability""max_separability""max_separability" tends to determine smaller values for UsedThresholdUsedThresholdUsedThresholdusedThresholdused_threshold. Furthermore, it is less sensitive to thin isolated peaks in the histogram that are far from the rest of the spectrum and often, it is faster than 'smooth_histo'"smooth_histo""smooth_histo""smooth_histo""smooth_histo".

Maximize separability

By selecting MethodMethodMethodmethodmethod = 'max_separability'"max_separability""max_separability""max_separability""max_separability", automatic thresholding based on the gray-level histogram according to Otsu (see the paper in References) is invoked. The algorithm first calculates the histogram of the image and then uses statistical moments to find the optimal threshold that divides the pixels into foreground and background and maximizes the separability between these two classes. This method is only available for byte and uint2 images.

Histogram smoothing

By selecting MethodMethodMethodmethodmethod = 'smooth_histo'"smooth_histo""smooth_histo""smooth_histo""smooth_histo" binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdbinary_threshold determines the threshold in the following way: First, the relative histogram of the gray values is determined. Then, relevant minima are extracted from the histogram, which are used as parameters for a thresholding operation. In order to reduce the number of minima, the histogram is smoothed with a Gaussian, as in auto_thresholdauto_thresholdAutoThresholdAutoThresholdauto_threshold. The mask size is enlarged until there is only one minimum in the smoothed histogram. Then, the threshold is set to the position of this minimum.

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

ImageImageImageimageimage (input_object)  singlechannelimage(-array) objectHImageHObjectHObjectHobject (byte / uint2)

Input Image.

RegionRegionRegionregionregion (output_object)  region(-array) objectHRegionHObjectHObjectHobject *

Segmented output region.

MethodMethodMethodmethodmethod (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Segmentation method.

Default: 'max_separability' "max_separability" "max_separability" "max_separability" "max_separability"

List of values: 'max_separability'"max_separability""max_separability""max_separability""max_separability", 'smooth_histo'"smooth_histo""smooth_histo""smooth_histo""smooth_histo"

LightDarkLightDarkLightDarklightDarklight_dark (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Extract foreground or background?

Default: 'dark' "dark" "dark" "dark" "dark"

List of values: 'dark'"dark""dark""dark""dark", 'light'"light""light""light""light"

UsedThresholdUsedThresholdUsedThresholdusedThresholdused_threshold (output_control)  number(-array) HTupleSequence[Union[str, int]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Used threshold.

Possible Successors

connectionconnectionConnectionConnectionconnection, select_shapeselect_shapeSelectShapeSelectShapeselect_shape, select_grayselect_graySelectGraySelectGrayselect_gray

Alternatives

auto_thresholdauto_thresholdAutoThresholdAutoThresholdauto_threshold, char_thresholdchar_thresholdCharThresholdCharThresholdchar_threshold, local_thresholdlocal_thresholdLocalThresholdLocalThresholdlocal_threshold

See also

gray_histogray_histoGrayHistoGrayHistogray_histo, thresholdthresholdThresholdThresholdthreshold

References

N. Otsu, “A threshold selection method from gray level histograms", IEEE Trans. Syst. Man. Cybern., Vol. SMC-9, 62-66 (1979).

Module

Foundation