This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

graythresh

Global image threshold using Otsu's method

Syntax

T = graythresh(I)
[T,EM] = graythresh(I)

Description

example

T = graythresh(I) computes a global threshold T from grayscale image I, using Otsu's method [1]. Otsu's method chooses a threshold that minimizes the intraclass variance of the thresholded black and white pixels. The global threshold T can be used with imbinarize to convert a grayscale image to a binary image.

[T,EM] = graythresh(I) also returns the effectiveness metric, EM.

Examples

collapse all

Read a grayscale image into the workspace.

I = imread('coins.png');

Calculate a threshold using graythresh. The threshold is normalized to the range [0, 1].

level = graythresh(I)
level = 0.4941

Convert the image into a binary image using the threshold.

BW = imbinarize(I,level);

Display the original image next to the binary image.

imshowpair(I,BW,'montage')

Input Arguments

collapse all

Grayscale image, specified as a numeric array of any dimensionality. The graythresh function converts multidimensional arrays to 2-D arrays, using reshape, and ignores any nonzero imaginary part of I.

Data Types: single | double | int16 | uint8 | uint16

Output Arguments

collapse all

Global threshold, returned as a numeric scalar in the range [0, 1].

Data Types: double

Effectiveness metric of the threshold, returned as a positive scalar in the range [0,1]. The lower bound is attainable only by images having a single gray level, and the upper bound is attainable only by two-valued images.

Data Types: double

Tips

  • By default, the function imbinarize creates a binary image using a threshold obtained using Otsu’s method. This default threshold is identical to the threshold returned by graythresh. However, imbinarize only returns the binary image. If you want to know the level or the effectiveness metric, use graythresh before calling imbinarize.

References

[1] Otsu, N., "A Threshold Selection Method from Gray-Level Histograms." IEEE Transactions on Systems, Man, and Cybernetics. Vol. 9, No. 1, 1979, pp. 62–66.

Introduced before R2006a