Code covered by the BSD License

Highlights from Image segmentation using Otsu thresholding

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

Image segmentation using Otsu thresholding

Damien Garcia (view profile)

29 Jan 2010 (Updated )

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

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:
---------
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

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

MATLAB release MATLAB 7.5 (R2007b)
25 Apr 2013 Venkat

09 Jul 2012 Jing

Jing (view profile)

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

Jamuna Jayashri Mahalingam (view profile)

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

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

Comment only
11 Feb 2011 Samuele

Samuele (view profile)

works smoothly...thx ;)

13 Oct 2010 Matteo Niccoli

Matteo Niccoli (view profile)

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

Dalal (view profile)

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

Comment only
28 Apr 2010 Fu

Fu (view profile)

11 Mar 2010 Lukas Lansky

Lukas Lansky (view profile)

Works nice!

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