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 . 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.
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 vector of nonnegative numbers.
T— Global threshold
Global threshold, returned as a numeric scalar in the range [0, 1].
EM— Effectiveness metric
Effectiveness metric of the threshold, returned as a numeric scalar in 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:
otsuthresh supports the generation of C
code (requires MATLAB®
Coder™). For more information, see Code Generation for Image Processing.