使用矩阵滤波器进行图像裁剪

时间:2013-03-13 02:44:56

标签: image matlab

经过一些处理后,我得到了BMP图像的黑白掩模。

现在,我想只显示BMP图像中掩模中白色的部分。

我是matlab的新手(但我喜欢它),我尝试了很多从谷歌学到的矩阵技巧,好吧,没有用(或者我没做正确..)

请提供一些提示。

感谢您的提前时间。

2 个答案:

答案 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函数repmatbsxfun中的一个,可以在一行代码中对具有任意数量通道的源图像执行屏蔽操作。

假设您的图片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?