How can I apply a logical mask to an image variable?

8 次查看(过去 30 天)
Hello,
I am trying to apply a logical mask to an image variable, however I couldnt manage to do it so far.
I have tried
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
maskedRgbImage = rgbImage.*mask
Also, I've tried to apply mask to the rgbImage.CData directly. All of them are giving me errors. What else I can try?
Thank you so much
  2 个评论
Walter Roberson
Walter Roberson 2022-2-24
Your rgbImage is a handle to a deleted image() object -- not an array of data.
dila suay
dila suay 2022-2-24
Hi Walter, thank you for your quick reply. I uploaded a .fig version. I hope it is useful

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2022-2-24
rgb = rgbImage.CData;
maskedImage = rgb .* cast(repmat(c, [1 1 size(rgb,3)]),'like',rgb);
This cannot be an image() object unless you want to do something like
maskedRgbImage = copyobj(rgbImage, gca);
rgb = rgbImage.CData;
maskedImage.CData = rgb .* cast(repmat(c, [1 1 size(rgb,3)]),'like',rgb);
... but that would be directly on top of the old image.
  2 个评论
dila suay
dila suay 2022-2-24
Thank you so much for your quick replies Walter. It says
Unrecognized function or variable 'c'.
What is c?
Walter Roberson
Walter Roberson 2022-2-24
rgb = rgbImage.CData;
maskedImage = rgb .* cast(repmat(mask, [1 1 size(rgb,3)]),'like',rgb);
or
maskedRgbImage = copyobj(rgbImage, gca);
rgb = rgbImage.CData;
maskedImage.CData = rgb .* cast(repmat(mask, [1 1 size(rgb,3)]),'like',rgb);

请先登录,再进行评论。

更多回答(1 个)

Image Analyst
Image Analyst 2022-2-24
You don't need to do both of these:
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
maskedRgbImage = rgbImage.*mask
All you need is the first one. Don't do the second one. It's not right and would need "fixing".
  1 个评论
Kaitlin Wang
Kaitlin Wang 2022-2-24
sir you are my hero. i have been looking at your answers for weeks and learning so much. thank you

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Image Data Workflows 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by