File Exchange

image thumbnail

Image segmentation using Otsu thresholding

version (3.53 KB) by Damien Garcia
OTSU(I,N) segments the image I into N classes by means of Otsu's N-thresholding method.


Updated 10 Mar 2010

View License

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.

IDX = OTSU(I) uses two classes (N=2, default value).

[IDX,sep] = OTSU(I,N) 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.

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.

load clown
X = ind2gray(X,map);
for n = 2:4
IDX = otsu(X,n);
imagesc(IDX), axis image off
title(['n = ' int2str(n)],'FontWeight','bold')

See also:

Cite As

Damien Garcia (2020). Image segmentation using Otsu thresholding (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (14)

Hoang Ly

Just like multithresh function I think.

Rasika Devi

usha diggi

Thanks for the code and brief explaination

In the example provided, what is 'X', anyone?

matlab code for luminance level thresholding



Thanks a lot for the code!
I just have a question: in the n=2 case, what's the meaning for the following code? I tried to derive the equation, but could not make it. Would you please explain a bit? Thanks!!

sigma2B =...

I am geting this error...How do I correct it?

Undefined function or method 'otsu' for input arguments of type 'uint8'.


works smoothly...thx ;)

It has worked for me very nicely. I like to run it in a while loop that breaks when sep starts decreasing.


i am trying to segment the image of signature
is it possible to apply the same code ?
thank you


Works nice!


Minor modifications

The segmentation for RGB image has been improved: a KLT is performed and we keep the component of highest energy.

RGB images are now analyzed in the gray, R, G and B scales.

New screenshot.

MATLAB Release Compatibility
Created with R2007b
Compatible with any release
Platform Compatibility
Windows macOS Linux