我的图像有红色,绿色,蓝色通道和图像的二进制版本。
我想要做的是连接这两个图像,使二进制图像作为普通图像的掩码。
我想只选择彩色图像中二进制为1的像素。
我知道这应该适用于cat
,甚至适用于repmat
,但由于我是Matlab的新手,即使在阅读了文档后我也无法弄清楚如何做到这一点的功能。
答案 0 :(得分:6)
如果您有一个三维图像I
和一个二进制掩码M
,您可以通过将图像乘以掩码将无关位掩盖为零:
I = bsxfun(@times, I, M);
或通过逻辑索引:
I(~mask(:, :, ones(1, size(I, 3)))) = 0;
答案 1 :(得分:1)
我不是100%确定我理解你的问题,但这里有一个建议:
假设rgbIm
是您的 RGB图像,而bwIm
是您的二进制图像;
您可以尝试使用以下代码行将二进制图像“展开”为“ 3D ”(以使其尺寸与原始RGB图像一致):
bwImAux = bwIm(:,:,[1 1 1]);
然后执行一个简单的乘法来“消除”二进制图像中不是的所有像素:
rgbImNew = rgbIm.*bwImAux;
希望这有帮助。
答案 2 :(得分:1)
您可以将二进制图像用作3dim图像中的逻辑索引。要将image
中所有在二进制mask
中为零的像素归零,您可以对每个维使用以下代码:image(~mask)=0;