0

经过一些处理,我得到了一张 BMP 图像的黑白蒙版。

现在,我只想显示 BMP 图像在蒙版中为白色的部分。

我是 matlab 的新手(但我喜欢它),我已经尝试了很多从谷歌那里学到的矩阵技巧,好吧,没有一个有效(或者我做得不对..)

请给我一些提示。

提前感谢您的时间。

4

2 回答 2

1

假设蒙版与图像大小相同,那么您可以这样做(对于灰度图像):

maskedImage=yourImage.*mask %.* means pointwise multiplication. 

对于彩色图像,在三个通道上做同样的操作:

maskedImage(:,:,1)=yourImage(:,:,1).*mask 
maskedImage(:,:,2)=yourImage(:,:,2).*mask 
maskedImage(:,:,3)=yourImage(:,:,3).*mask 

然后要可视化图像,请执行以下操作:

imshow(maskedImage,[]);
于 2013-03-13T02:55:23.270 回答
1

使用两个 matlab 函数repmatbsxfun之一,可以在一行代码中对具有任意数量通道的源图像执行屏蔽操作。

假设您的图像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 是最佳选择?

于 2013-03-13T10:29:19.240 回答