OTSU - Global image thresholding/segmentation using Otsu's method
IDX = OTSU(I,N) segments the image I into N classes by means of Otsu's N-thresholding method. OTSU returns an array IDX containing the cluster indices (from 1 to N) of each point. Zero values are assigned to non-finite (NaN or Inf) pixels.
IDX = OTSU(I) uses two classes (N = 2, default value).
[IDX,sep] = OTSU(...) also returns the value (sep) of the separability criterion within the range [0 1]. Zero is obtained only with data having less than N values, whereas one (optimal value) is obtained only with N-valued arrays.
subplot(121) X = imread('saturn.png'); imshow(X) title('Original','FontWeight','bold') subplot(122) IDX = otsu(X); imagesc(IDX), axis image off title('Otsu-thresholded','FontWeight','bold') colormap(gray)
load clown subplot(221) X = ind2rgb(X,map); imshow(X) title('Original','FontWeight','bold') for n = 2:4 IDX = otsu(X,n); subplot(2,2,n) imagesc(IDX), axis image off title(['n = ' int2str(n)],'FontWeight','bold') end colormap(gray)
It should be noticed that the thresholds generally become less relevant as the number of classes (N) to be separated increases (see Otsu's paper for more details).
If I is an RGB image, a Karhunen-Loeve transform is first performed on the three R,G,B channels. The segmentation is then carried out on the image component that contains most of the energy.
Otsu N, A Threshold Selection Method from Gray-Level Histograms, IEEE Trans. Syst. Man Cybern. 1979;9:62-66.
About the author
Damien Garcia, Eng., Ph.D. INSERM researcher Creatis, University of Lyon, France