经过一些处理,我得到了一张 BMP 图像的黑白蒙版。
现在,我只想显示 BMP 图像在蒙版中为白色的部分。
我是 matlab 的新手(但我喜欢它),我已经尝试了很多从谷歌那里学到的矩阵技巧,好吧,没有一个有效(或者我做得不对..)
请给我一些提示。
提前感谢您的时间。
假设蒙版与图像大小相同,那么您可以这样做(对于灰度图像):
maskedImage=yourImage.*mask %.* means pointwise multiplication.
对于彩色图像,在三个通道上做同样的操作:
maskedImage(:,:,1)=yourImage(:,:,1).*mask
maskedImage(:,:,2)=yourImage(:,:,2).*mask
maskedImage(:,:,3)=yourImage(:,:,3).*mask
然后要可视化图像,请执行以下操作:
imshow(maskedImage,[]);
使用两个 matlab 函数repmat或bsxfun之一,可以在一行代码中对具有任意数量通道的源图像执行屏蔽操作。
假设您的图像I
是 sizeM-by-N-by-C
并且 mask 是 size M-by-N
,那么我们可以使用任一 repmat 获得蒙版图像
I2 = I .* repmat(mask, [1, 1, 3]);
或使用 bsxfun
I2 = bsxfun(@times, I, mask);
这些都是非常方便的函数,在一般情况下对代码进行矢量化时非常有用。我还建议您仔细阅读这个问题的答案:在 Matlab 中,什么时候使用 bsxfun 是最佳选择?