binary_thresholdbinary_thresholdBinaryThresholdBinaryThreshold (Operator)

Name

binary_thresholdbinary_thresholdBinaryThresholdBinaryThreshold — 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)

Description

binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdBinaryThreshold 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_thresholdBinaryThresholdBinaryThresholdBinaryThreshold also returns the used threshold in UsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThreshold.

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_thresholdBinThresholdBinThresholdBinThreshold. The method 'max_separability'"max_separability""max_separability""max_separability""max_separability" tends to determine smaller values for UsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThreshold. 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.

Histrogram smoothing

By selecting MethodMethodMethodMethodmethod = 'smooth_histo'"smooth_histo""smooth_histo""smooth_histo""smooth_histo" binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdBinaryThreshold 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_thresholdAutoThresholdAutoThresholdAutoThreshold. 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

ImageImageImageImageimage (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte / uint2)

Input Image.

RegionRegionRegionRegionregion (output_object)  region(-array) objectHRegionHRegionHobject *

Segmented output region.

MethodMethodMethodMethodmethod (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Segmentation method.

Default value: '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"

LightDarkLightDarkLightDarkLightDarklightDark (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Extract foreground or background?

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

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

UsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThreshold (output_control)  number(-array) HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Used threshold.

Possible Successors

connectionconnectionConnectionConnectionConnection, select_shapeselect_shapeSelectShapeSelectShapeSelectShape, select_grayselect_graySelectGraySelectGraySelectGray

Alternatives

auto_thresholdauto_thresholdAutoThresholdAutoThresholdAutoThreshold, char_thresholdchar_thresholdCharThresholdCharThresholdCharThreshold, local_thresholdlocal_thresholdLocalThresholdLocalThresholdLocalThreshold

See also

gray_histogray_histoGrayHistoGrayHistoGrayHisto, 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