binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdbinary_threshold (Operator)

Name

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_thresholdBinaryThresholdBinaryThresholdBinaryThresholdbinary_threshold segments a single-channel ImageImageImageImageimageimage using an automatically determined global threshold and returns the segmented region in RegionRegionRegionRegionregionregion. This is, e.g., useful for the segmentation of characters on a homogeneously illuminated background. binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdBinaryThresholdbinary_threshold also returns the used threshold in UsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThresholdused_threshold.

The used threshold is determined by the method that is given in MethodMethodMethodMethodmethodmethod. Currently the operator provides the following two methods: 'max_separability'"max_separability""max_separability""max_separability""max_separability""max_separability" and 'smooth_histo'"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""smooth_histo" provides the same functionality that has been provided by the operator bin_thresholdbin_thresholdBinThresholdBinThresholdBinThresholdbin_threshold. The method 'max_separability'"max_separability""max_separability""max_separability""max_separability""max_separability" tends to determine smaller values for UsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThresholdused_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""smooth_histo".

Maximize separability

By selecting MethodMethodMethodMethodmethodmethod = 'max_separability'"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 MethodMethodMethodMethodmethodmethod = 'smooth_histo'"smooth_histo""smooth_histo""smooth_histo""smooth_histo""smooth_histo" binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdBinaryThresholdbinary_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_thresholdAutoThresholdAutoThresholdAutoThresholdauto_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

Parameters

ImageImageImageImageimageimage (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte / uint2)

Input Image.

RegionRegionRegionRegionregionregion (output_object)  region(-array) objectHRegionHObjectHRegionHobject *

Segmented output region.

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

Segmentation method.

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

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

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

Extract foreground or background?

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

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

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

Used threshold.

Possible Successors

connectionconnectionConnectionConnectionConnectionconnection, select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape, select_grayselect_graySelectGraySelectGraySelectGrayselect_gray

Alternatives

auto_thresholdauto_thresholdAutoThresholdAutoThresholdAutoThresholdauto_threshold, char_thresholdchar_thresholdCharThresholdCharThresholdCharThresholdchar_threshold, local_thresholdlocal_thresholdLocalThresholdLocalThresholdLocalThresholdlocal_threshold

See also

gray_histogray_histoGrayHistoGrayHistoGrayHistogray_histo, thresholdthresholdThresholdThresholdThresholdthreshold

References

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

Module

Foundation