Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab-如何使用二值图像屏蔽三维图像_Matlab_Image Processing_Matrix - Fatal编程技术网

Matlab-如何使用二值图像屏蔽三维图像

Matlab-如何使用二值图像屏蔽三维图像,matlab,image-processing,matrix,Matlab,Image Processing,Matrix,我有一个红色,绿色,蓝色通道的图像和图像的二进制版本 我想做的是连接这两个图像,这样二值图像就可以作为普通图像的遮罩 我只想从彩色图像中选择二进制为1的像素 我知道这应该适用于cat,甚至适用于repmat,但由于我对Matlab非常陌生,即使在阅读了函数的文档之后,我也不知道如何做到这一点。我不确定我是否100%理解您的问题,但这里有一个建议: 假设rgbIm是您的RGB图像,bwIm是您的二进制图像 您可以尝试将二进制图像扩展到3D,使其尺寸与原始RGB图像一致,代码如下: bwImAux

我有一个红色,绿色,蓝色通道的图像和图像的二进制版本

我想做的是连接这两个图像,这样二值图像就可以作为普通图像的遮罩

我只想从彩色图像中选择二进制为1的像素


我知道这应该适用于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上应该如何工作?