extract regions detected by watershed segmentation

1 visualizzazione (ultimi 30 giorni)
Hello,
I have found this code in image processing toolbox of matlab for image segmentation through watershed function:
Really, I gaven't understood the code, and I want to extract regions detected after segmentation with the function watershed and represent each region with its dominant color. So can you help me?
I want to extract those regions, so where find them?
Thanks

Risposte (2)

Image Analyst
Image Analyst il 22 Mag 2013
Once you have the binary image, you simply call regionprops() for each color channel to get the color for that color channel in each labeled region. See my demos for examples: http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
% Now do your marker controled watershed segmentation
% to get your binary image. Then:
labeledImage = bwlabel(binaryImage);
% Make color measureents.
measurementsRed = regionprops(labeledImage, redChannel, 'MeanIntensity');
measurementsGreen = regionprops(labeledImage, greenChannel, 'MeanIntensity');
measurementsBlue = regionprops(labeledImage, blueChannel, 'MeanIntensity');
  3 Commenti
mariem farhat
mariem farhat il 22 Mag 2013
ok, thank you for your response.
mariem farhat
mariem farhat il 22 Mag 2013
but I haven't used regionprops like you have mentioned in your post because actually I want to compute the dominant color of each region and not the mean value. It remains false to use it like I have mentioned?

Accedi per commentare.


mariem farhat
mariem farhat il 22 Mag 2013
Modificato: mariem farhat il 22 Mag 2013
thank you for your response,
this is the code that I have implemented :
if true
f = unique (L);
n = size(f);
for i = 1:n
resultc (:,1:3) = 255;
[r c] = find(L==i);
m= size(r);
for j = 1:m
resultc(j,1) = rgb(r(j), c(j), 1);
resultc(j,2) = rgb(r(j), c(j), 2);
resultc(j,3) = rgb(r(j), c(j), 3);
end
coul(i,:) = mean_coul(resultc);
end;
end
after this I want to use the result of the mean of intensities to visualize the result such that for each object I print the mean color so I do llike this:
if
Lrgb = label2rgb(L, coul); end
but I got an error:
A message identifier must be followed by another input argument, of type char, representing the message text. *_??? Error using ==> label2rgb>parse_inputs at 147 Invalid entry for MAP.
Error in ==> label2rgb at 50 [label,map,zerocolor,order,fcnflag] = parse_inputs(varargin{:});
Error in ==> test at 241 Lrgb = label2rgb(L, coul);_*

Community Treasure Hunt

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

Start Hunting!

Translated by