Global histogram threshold using Otsu's method
T = otsuthresh(counts)
[T,EM] = otsuthresh(counts)
a global threshold
T = otsuthresh(
T from histogram counts,
counts, using Otsu's method .
is a normalized intensity value that lies in the range [0, 1] that can be used with
imbinarize to convert an intensity image to a binary image.
Otsu's method chooses a threshold that minimizes the intraclass variance of the
thresholded black and white pixels.
Read image into the workspace.
I = imread('coins.png');
Calculate a 16-bin histogram for the image.
[counts,x] = imhist(I,16); stem(x,counts)
Compute a global threshold using the histogram counts.
T = otsuthresh(counts);
Create a binary image using the computed threshold and display the image.
BW = imbinarize(I,T); figure imshow(BW)
counts— Histogram counts
Histogram counts, specified as a real, nonsparse numeric vector of nonnegative values.
T— Global threshold value
Global threshold value, returned as a numeric scalar of class
the range [0, 1].
EM— Effectiveness metric
Effectiveness metric, returned as a numeric scalar of class
the range [0, 1]. The lower bound is attainable only by histogram
counts with all data in a single non-zero bin. The upper bound is
attainable only by histogram counts with two non-zero bins.
 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.
Usage notes and limitations:
This function supports the generation of C code using MATLAB® Coder™. For more information, see Code Generation for Image Processing.