No BSD License  

Highlights from
Local Adaptive Thresholding

4.5 | 20 ratings Rate this file 305 Downloads (last 30 days) File Size: 144 KB File ID: #8647 Version: 1.0
image thumbnail

Local Adaptive Thresholding


Guanglei Xiong (view profile)


05 Oct 2005 (Updated )

Threshold with local statistics, such as mean or median.

| Watch this File

File Information

ADAPTIVETHRESHOLD An adaptive thresholding algorithm that seperates the foreground from the background with nonuniform illumination.
  bw=adaptivethreshold(IM,ws,C) outputs a binary image bw with the local threshold mean-C or median-C to the image IM.

ws is the local window size.

tm is 0 or 1, a switch between mean and median. tm=0 mean(default); tm=1 median.

Contributed by Guanglei Xiong ( at Tsinghua University, Beijing, China.

For more information, please see

Required Products Image Processing Toolbox
MATLAB release MATLAB 7.0.4 (R14SP2)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (30)
03 Jul 2014 2one

2one (view profile)

For others, it appears that C (=constant) was originally the binary image segmentation threshold.

I have modified my version of the code as follows:





This now uses the adaptive (mean) filter to highlight image features (i.e. mIM-IM) and then the Otsu threshold to segment and generate a binary image.

Comment only
03 Jul 2014 2one

2one (view profile)

this works quite well for my application but can anyone explain to me what the algorithm is doing exactly?
I understand that the algorithm generates a local mean filtered image by iterating over each pixel for user window size but what is line:


this subtracts the original image and a constant, C, from the local mean filtered image. What is C and why do this?

28 Mar 2013 Kang Zheng

What is C exactly?

27 Dec 2011 Hokchhay Tann

Great code, but not applicable to my type of images. I'm trying to make the threshold automated since I have a hundred thousands of this kind. I appreciate any suggestions.

27 Sep 2011 Shashi

Shashi (view profile)

I did apply this algorithm on my images but it didn't work out completely. There is a research paper by Q.Huang which speaks about Otsu's thresholding using adaptive window. I would like to know if somebody has implemented that.

Comment only
14 Aug 2011 Rosidah Lazid

Had anyone here used this code for processing trabecular micro CT images? Appreciate your feedback on the outcome. Thanks.

Comment only
11 Aug 2011 eray

eray (view profile)

Very simple and effective, thanks!

04 Aug 2011 Nek Valous

Great script!

31 May 2011 Ana Triana

Easy to read and use. Thank you.

13 May 2011 Jorge Lewinnek

what is that window size?

Comment only
27 Apr 2011 Martin

Martin (view profile)

21 Jan 2011 Navneet Viswan

is it possible to detect laser traces on an object using this algorithm?

Comment only
01 Dec 2009 Hans Müller


How about sharing it, then?

Comment only
05 Sep 2009 sanjay bhattacharya

it can detect the letters even where its very dark (see the lines in the end) line 8 etc

Comment only
05 Sep 2009 sanjay bhattacharya

I have written a code without using any std functions like imfilter etc, its purely based on fundamentals.


Comment only
05 Sep 2009 sanjay bhattacharya

Nice code, but not applicable in extreme situations.

21 Jul 2008 hafid rafi

it's very very simple thanks

29 Apr 2008 Guillermo Moreno

Simple and Fast, thanks

10 Apr 2008 alev soke

thank you very much.
it is a perfect program.

01 Apr 2008 zhang shi jie

really nice

24 Mar 2008 ranjeeth dasineni

works great man!!

09 Oct 2007 kayalvizhi lakshmanan  
19 Sep 2007 saravanan radhakrishnan

really good code

30 Jul 2007 mel tem

thank you

24 Jun 2007 amit vishnipolsky  
06 Mar 2007 saravanan kumar

nice work

Comment only
31 Jan 2007 Piyorot Khongchuay


26 Apr 2006 Alan Zhang

The 2 lines near the end should be changed from:
This change allows C to be +ve and negative. In the old code bw=im2bw(sIM,C) causes error when C is -ve.

22 Mar 2006 tester Mc tester

it didnt work!!
i get
Error using ==> mat2gray
A must be double

Comment only
07 Nov 2005 J. Zhou

Pretty cool results with flexible options.
Great job!

07 Oct 2005

remove unnecessary Thumbs.db in zip file

Contact us