我的图像有红色,绿色,蓝色通道和图像的二进制版本 .
我想要做的是连接这两个图像,使二进制图像作为正常图像的掩码 .
我想只选择彩色图像中的二进制1像素 .
我知道这应该与 cat 一起使用,或者甚至与 repmat 一起使用,但是因为即使在阅读了函数的文档之后我就会知道如何做到这一点 .
cat
repmat
我不是100%肯定我理解你的问题,但这里有一个建议:
假设 rgbIm 是您的RGB图像, bwIm 是您的二进制图像;
rgbIm
bwIm
您可以使用以下代码行尝试将二进制图像"expand"设为“3D”(以使其尺寸与原始RGB图像一致):
bwImAux = bwIm(:,:,[1 1 1]);
然后执行一个简单的 multiplication 到"eliminate"二进制图像中 are not ones 的所有像素:
rgbImNew = rgbIm.*bwImAux;
希望这可以帮助 .
您可以将二进制图像用作3dim图像中的逻辑索引 . 要将 image 中的所有像素归零(二进制 mask 中为零),可以对每个维使用以下代码: image(~mask)=0;
image
mask
image(~mask)=0;
如果您有一个三维图像 I 和一个二进制掩码 M ,您可以通过将图像乘以掩码将无关位掩盖为零:
I
M
I = bsxfun(@times, I, M);
或通过逻辑索引:
I(~mask(:, :, ones(1, size(I, 3)))) = 0;
3 回答
我不是100%肯定我理解你的问题,但这里有一个建议:
假设
rgbIm
是您的RGB图像,bwIm
是您的二进制图像;您可以使用以下代码行尝试将二进制图像"expand"设为“3D”(以使其尺寸与原始RGB图像一致):
然后执行一个简单的 multiplication 到"eliminate"二进制图像中 are not ones 的所有像素:
希望这可以帮助 .
您可以将二进制图像用作3dim图像中的逻辑索引 . 要将
image
中的所有像素归零(二进制mask
中为零),可以对每个维使用以下代码:image(~mask)=0;
如果您有一个三维图像
I
和一个二进制掩码M
,您可以通过将图像乘以掩码将无关位掩盖为零:或通过逻辑索引: