How to multiply binary image and rgb image in matlab?

9 次查看(过去 30 天)
I have a binary image which is the segmented form of another color image . As you know , a binary image is 2-d but an rgb image is 3-d , how want to multiply them together ? i tried this code but an error is generated: function skinCrop(bwSkin,colorSkin)
for i = 1:size(colorImage,1)
for j = 1:size(colorImage,2)
if bwImage(i,j) == 0
colorImage(i,j,:) = 0;
end
end
end
imshow(colorImage);
end
and here there is the error:
Index exceeds matrix dimensions.
  3 个评论
bay rem
bay rem 2016-3-3
its the complete error,thank you, i'll check the sizes
Sanzhar Askaruly
Sanzhar Askaruly 2018-10-31
I tried your code, it worked, so it seems sizes are the problem.

请先登录,再进行评论。

采纳的回答

Image Analyst
Image Analyst 2016-3-3
There are several ways to do what you want, though bsxfun() is the method I usually use (though it's more cryptic than the .* straightforward method). I first learned that from Sean DeWolski of the Mathworks. However, if bwImage is not the same integer type as colorImage, you will have to modify it.
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, colorImage, cast(bwImage, 'like', colorImage));
If they're already both the same data type, then having cast in there won't hurt so I always put it in there regardless.

更多回答(1 个)

Jan
Jan 2016-3-3
if both images have the same number of pixels:
result = colorImage .* cat(3, bwImage, bwImage, bwImage);
  7 个评论
swathi
swathi 2018-3-19
Thank you very much sir. It worked. Can I extend me query a little more, if you don mind(Sorry for it). Can I use this code to remove object from all frames in which it(or part of it) is visible? I need some advice, as I am working 1st time on videos. Thanks in advance

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by