Adaptive Multi-Level Threshold for image

Dear All;
I have an image with non-uniform illumination , i need to use adaptive threshold to compensate for that , then use multi level threshold to segment the image into Three regions, what is the best way to do that

Answers (3)

Try adapthisteq(). How you classify into 3 classes after that depends on how easy it is to find the thresholds. Write a script to flatten your image with adapthisteq() and then take the histogram and show it to us.

5 Comments

Thank you very much for help.
in fact, Adaptive threshold makes it worse .
You can check the link below for the video source to undersatnd the situation http://www.youtube.com/watch?v=IjHZ4aEaCaE
What i am looking for is to segment the image into three area( Liquid, Gas, and Mix region at the border) I would like to combine both adaptive thresholding and multithresholding
I didn't say anything about adaptive threshold, just adaptive histogram equalization. But your idea might work. Give it a try.
@image analyst, my question is a little off topic but i need your help on this.
i have two images (as uploaded s1 & s2), one is having the boxes in x-axis direction and second is having the boxes in y-axis direction.
Question 1: how we can find that the boxes is in x-axis direction OR in y-axis direction?
Question 2:after finding the direction, extract/separate the boxes from that image?
@image analyst, my question is a little off topic but i need your help on this.
i have two images (as uploaded s1 & s2), one is having the boxes in x-axis direction and second is having the boxes in y-axis direction.
Question 1: how we can find that the boxes is in x-axis direction OR in y-axis direction?
Question 2:after finding the direction, extract/separate the boxes from that image?
(first see the imges 's1' & 's2')
Use regionprops() to get the bounding box and look at the width and height of it.

Sign in to comment.

Have you tried using multithresh after adapthisteq? multithresh does multi-level thresholding using Otsu's method.
thresh = multithresh(I,2);
segI = imquantize(I,thresh);

1 Comment

thank you for the answer
Asi explainred, i need first to remove the non uniform illumination then use multi threshold , Non uniform illumanation function deose not works well for all cases that why I switch to adaptive thresholding but this one will give me binary image , my question how to combine both ?

Sign in to comment.

Thank you very much for help.
in fact, Adaptive threshold makes it worse .
You can check the link below for the video source to undersatnd the situation http://www.youtube.com/watch?v=IjHZ4aEaCaE
What i am looking for is to segment the image into three area( Liquid, Gas, and Mix region at the border) I would like to combine both adaptive thresholding and multithresholding

Asked:

on 28 Sep 2014

Commented:

on 13 Dec 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!