我有一个图像与红色,绿色,蓝色通道和二进制版本的图像。Matlab - 如何使用二进制图像掩盖三维图像
我想要做的是连接这两个图像,以便二进制图像作为正常图像的掩膜。
我想只选择彩色图像中二进制为1的像素。
我知道这应该与cat
甚至repmat
一起工作,但因为我对Matlab很新颖,所以即使在阅读函数的文档之后,我也无法弄清楚如何做到这一点。
我有一个图像与红色,绿色,蓝色通道和二进制版本的图像。Matlab - 如何使用二进制图像掩盖三维图像
我想要做的是连接这两个图像,以便二进制图像作为正常图像的掩膜。
我想只选择彩色图像中二进制为1的像素。
我知道这应该与cat
甚至repmat
一起工作,但因为我对Matlab很新颖,所以即使在阅读函数的文档之后,我也无法弄清楚如何做到这一点。
如果有3-d图像I
和二进制掩码M
,可以屏蔽不相关比特零或者由屏蔽图像乘以:
I = bsxfun(@times, I, M);
,或按逻辑索引:
I(~mask(:, :, ones(1, size(I, 3)))) = 0;
thx它的工作! :) –
我不是100%肯定我明白你的问题,但在这里不用一个建议:
假设rgbIm
是你RGB图像和bwIm
是你二值图像;
您可以尝试以“扩大”的二进制图像“3D”(这样它的尺寸与原来的RGB图像一致)与下面的代码行:
bwImAux = bwIm(:,:,[1 1 1]);
,然后执行一个简单的乘法到“消除”这不是那些二值图像中的所有像素:
rgbImNew = rgbIm.*bwImAux;
希望这有助于。
您可以将二进制图像用作3dim图像中的逻辑索引。在零image
,在二进制mask
都是零的所有像素,则可以使用下面的代码对每个维:image(~mask)=0;
怎么是,应该以'cat'或'repmat'工作? –