Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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

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图像一致)

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

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

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


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