经过一些处理后,我得到了BMP图像的黑白掩模。
现在,我想只显示BMP图像中掩模中白色的部分。
我是matlab的新手(但我喜欢它),我尝试了很多从谷歌学到的矩阵技巧,好吧,没有用(或者我没做正确..)
请提供一些提示。
感谢您的提前时间。
答案 0 :(得分:1)
假设遮罩与图像尺寸相同,那么你可以这样做(对于灰度图像):
maskedImage=yourImage.*mask %.* means pointwise multiplication.
对于彩色图像,请在三个通道上执行相同的操作:
maskedImage(:,:,1)=yourImage(:,:,1).*mask
maskedImage(:,:,2)=yourImage(:,:,2).*mask
maskedImage(:,:,3)=yourImage(:,:,3).*mask
然后想象图像,请执行:
imshow(maskedImage,[]);
答案 1 :(得分:1)
使用两个matlab函数repmat或bsxfun中的一个,可以在一行代码中对具有任意数量通道的源图像执行屏蔽操作。
假设您的图片I
大小为M-by-N-by-C
且面具大小为M-by-N
,那么我们可以使用repmat
I2 = I .* repmat(mask, [1, 1, 3]);
或使用bsxfun
I2 = bsxfun(@times, I, mask);
这些都是非常方便的功能,在一般情况下对代码进行矢量化时非常有用。我还建议您查看这个问题的答案:In Matlab, when is it optimal to use bsxfun?