Global image threshold using Otsu's method
level = graythresh(I)
[level EM] = graythresh(I)
level = graythresh(I) computes
a global threshold (
level) that can be used to
convert an intensity image to a binary image with
a normalized intensity value that lies in the range
graythresh function uses Otsu's method,
which chooses the threshold to minimize the intraclass variance of
the black and white pixels.
Multidimensional arrays are converted automatically to 2-D arrays
ignores any nonzero imaginary part of
[level EM] = graythresh(I) returns
the effectiveness metric,
EM, as the second output
argument. The effectiveness metric is a value in the range [0 1] that
indicates the effectiveness of the thresholding of the input image.
The lower bound is attainable only by images having a single gray
level, and the upper bound is attainable only by two-valued images.
The input image
I can be of class
it must be nonsparse. The return value
a double scalar. The effectiveness metric
a double scalar.
I = imread('coins.png'); level = graythresh(I); BW = im2bw(I,level); imshow(BW)
 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.