Multimodal histogram segmentation in image processing

1)Select an initial estimate for T 2)Segment the image using T. This will produce two groups of pixels. G1 consisting of all pixels with gray level values >T and G2 consisting of pixels with values <=T. 3)Compute the average gray level values mean1 and mean2 for the pixels in regions G1 and G2. 4)Compute a new threshold value T=(1/2)(mean1 +mean2) 5)Repeat steps 2 through 4 until difference in T in successive iterations is smaller than a predefined parameter T0 Please give me a matlab code for this algorithm

 Accepted Answer

Do not use mean2 as the variable name - that is a function built in to the Image Processing Toolbox. What happens if you just take it one step at a time, like it's trying to walk you through?
% 1)Select an initial estimate for T
T = 128;
T0 = .5;
% 2)Segment the image using T. This will produce two
% groups of pixels. G1 consisting of all pixels with gray
% level values >T and G2 consisting of pixels with values <=T.
G1 = grayImage > T;
G2 = grayImage <= T;
% 3)Compute the average gray level values mean1 and
% mean2 for the pixels in regions G1 and G2.
meanGL1 = mean(grayImage(G1))
meanGL2 = mean(grayImage(G2))
% 4)Compute a new threshold value
Tnew=(1/2) * (meanGL1 +meanGL2)
if (Tnew - T) < T0
and so on. You just need to put that into a while loop and break when the condition of little change is met. I practically did the whole thing for you. You just have to add 4 lines of code.

1 Comment

You might or might not need to use a Gaussian filter. Can you post your image and tell me what you want to measure?

Sign in to comment.

More Answers (1)

hello interesting .. i a;lready working on it ,,,, but where is the using of histogram in ur code ?? i wiating response
greetings

6 Comments

The histogram was not needed in her algorithm so it was not computed.
hello Image Analyst .. thanks for replay i just need steps of code to get the values if thresholds in multimodel histogram ... if possible to get ur advice
Where you put multiple thresholds depends entirely on the situation. You have to develop an algorithm that works good for your particular images, and I don't know what that might be, especially after not even seeing your images. If you can use fixed thresholds, that is easiest and is often used in situations where you have good control over the lighting and exposure of your images, like a machine vision inspection task.
hi .. thanks just don't kno how to start .... i have implement histogram for image then i need to calculate threshold values in histogram..?some one adviced me to use Gaussian filter first (for what )... also ques, what mean local minimun and how to apply ? thanks for help ... i have a task and just have some basics in matlab// all respect )
does this algorithm works for multispectral images?
Yes. You could threshold each spectral image. You can combine the thresholded binary images if needed.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!