Matlab-如何使用二值图像屏蔽三维图像
我有一个红色,绿色,蓝色通道的图像和图像的二进制版本 我想做的是连接这两个图像,这样二值图像就可以作为普通图像的遮罩 我只想从彩色图像中选择二进制为1的像素Matlab-如何使用二值图像屏蔽三维图像,matlab,image-processing,matrix,Matlab,Image Processing,Matrix,我有一个红色,绿色,蓝色通道的图像和图像的二进制版本 我想做的是连接这两个图像,这样二值图像就可以作为普通图像的遮罩 我只想从彩色图像中选择二进制为1的像素 我知道这应该适用于cat,甚至适用于repmat,但由于我对Matlab非常陌生,即使在阅读了函数的文档之后,我也不知道如何做到这一点。我不确定我是否100%理解您的问题,但这里有一个建议: 假设rgbIm是您的RGB图像,bwIm是您的二进制图像 您可以尝试将二进制图像扩展到3D,使其尺寸与原始RGB图像一致,代码如下: bwImAux
我知道这应该适用于cat,甚至适用于repmat,但由于我对Matlab非常陌生,即使在阅读了函数的文档之后,我也不知道如何做到这一点。我不确定我是否100%理解您的问题,但这里有一个建议: 假设rgbIm是您的RGB图像,bwIm是您的二进制图像 您可以尝试将二进制图像扩展到3D,使其尺寸与原始RGB图像一致,代码如下:
bwImAux = bwIm(:,:,[1 1 1]);
然后执行一个简单的乘法,以消除二进制图像中非像素的所有像素:
rgbImNew = rgbIm.*bwImAux;
希望这能有所帮助。我不是100%确定我理解了你的问题,但这里有一个建议: 假设rgbIm是您的RGB图像,bwIm是您的二进制图像 您可以尝试将二进制图像扩展到3D,使其尺寸与原始RGB图像一致,代码如下:
bwImAux = bwIm(:,:,[1 1 1]);
然后执行一个简单的乘法,以消除二进制图像中非像素的所有像素:
rgbImNew = rgbIm.*bwImAux;
希望这有帮助。您可以使用二进制图像作为3dim图像中的逻辑索引。要将图像中二进制掩码中为零的所有像素归零,可以对每个维度使用以下代码:image~mask=0 您可以使用二进制图像作为3dim图像中的逻辑索引。要将图像中二进制掩码中为零的所有像素归零,可以对每个维度使用以下代码:image~mask=0 如果您有一个三维图像I和一个二进制掩码M,您可以通过将图像乘以掩码将不相关位掩码为零:
I = bsxfun(@times, I, M);
或通过逻辑索引:
I(~mask(:, :, ones(1, size(I, 3)))) = 0;
如果您有一个三维图像I和一个二进制掩码M,您可以通过将图像乘以掩码将不相关位掩码为零:
I = bsxfun(@times, I, M);
或通过逻辑索引:
I(~mask(:, :, ones(1, size(I, 3)))) = 0;
这在cat或repmat上应该如何工作?在cat或repmat上应该如何工作?