Code covered by the BSD License  

Highlights from
Image segmentation using Otsu thresholding

5.0

5.0 | 6 ratings Rate this file 149 Downloads (last 30 days) File Size: 3.53 KB File ID: #26532
image thumbnail

Image segmentation using Otsu thresholding

by

 

29 Jan 2010 (Updated )

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

| Watch this File

File Information
Description

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.
    
Example:
---------
    load clown
    subplot(221)
    X = ind2gray(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

 ------
See also:
http://www.biomecardio.com/matlab/otsu.html
-----

MATLAB release MATLAB 7.5 (R2007b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (8)
25 Apr 2013 Venkat  
09 Jul 2012 Jing

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 =...
(mu(end)*w(2:end-1)-mu(2:end-1)).^2./w(2:end-1)./(1-w(2:end-1));

21 Jan 2012 Jamuna Jayashri Mahalingam

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

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

11 Feb 2011 Samuele

works smoothly...thx ;)

13 Oct 2010 Matteo Niccoli

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

10 Jul 2010 Dalal

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

28 Apr 2010 Fu  
11 Mar 2010 Lukas Lansky

Works nice!

Updates
31 Jan 2010

New screenshot.

28 Feb 2010

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

04 Mar 2010

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

10 Mar 2010

Minor modifications

Contact us