2013-05-19 139 views
1

我有一个图像与红色,绿色,蓝色通道和二进制版本的图像。Matlab - 如何使用二进制图像掩盖三维图像

我想要做的是连接这两个图像,以便二进制图像作为正常图像的掩膜。

我想只选择彩色图像中二进制为1的像素。

我知道这应该与cat甚至repmat一起工作,但因为我对Matlab很新颖,所以即使在阅读函数的文档之后,我也无法弄清楚如何做到这一点。

+0

怎么是,应该以'cat'或'repmat'工作? –

回答

6

如果有3-d图像I和二进制掩码M,可以屏蔽不相关比特零或者由屏蔽图像乘以:

I = bsxfun(@times, I, M);  

,或按逻辑索引:

I(~mask(:, :, ones(1, size(I, 3)))) = 0; 
+1

thx它的工作! :) –

1

我不是100%肯定我明白你的问题,但在这里不用一个建议:

假设rgbIm是你RGB图像bwIm是你二值图像;

您可以尝试以“扩大”的二进制图像“3D”(这样它的尺寸与原来的RGB图像一致)与下面的代码行:

bwImAux = bwIm(:,:,[1 1 1]); 

,然后执行一个简单的乘法“消除”这不是那些二值图像中的所有像素:

rgbImNew = rgbIm.*bwImAux; 

希望这有助于。

1

您可以将二进制图像用作3dim图像中的逻辑索引。在零image,在二进制mask都是零的所有像素,则可以使用下面的代码对每个维:image(~mask)=0;