extract regions detected by watershed segmentation

2 次查看(过去 30 天)
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

回答(2 个)

Image Analyst
Image Analyst 2013-5-22
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 个评论
mariem farhat
mariem farhat 2013-5-22
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?

请先登录,再进行评论。


mariem farhat
mariem farhat 2013-5-22
编辑:mariem farhat 2013-5-22
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);_*

类别

Help CenterFile Exchange 中查找有关 Get Started with Image Processing Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by