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