1

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

我想要做的是连接这两个图像,以便二进制图像作为普通图像的掩码。

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

我知道这应该与cat,甚至与 一起使用repmat,但由于我对 Matlab 还很陌生,即使在阅读了函数的文档之后,我也不知道如何做到这一点。

4

3 回答 3

6

如果您有 3-D 图像I和二进制掩码M,则可以通过将图像乘以掩码将不相关的位掩码为零:

I = bsxfun(@times, I, M);    

或通过逻辑索引:

I(~mask(:, :, ones(1, size(I, 3)))) = 0;
于 2013-05-19T11:45:29.733 回答
1

我不是 100% 确定我理解你的问题,但这里有一个建议:

假设rgbIm是你的RGB 图像,并且bwIm是你的二值图像

您可以尝试使用以下代码行将二进制图像“扩展”为“ 3D ”(使其尺寸与原始 RGB 图像一致):

bwImAux = bwIm(:,:,[1 1 1]); 

然后执行一个简单的乘法来“消除”二进制图像中所有不是像素的像素:

rgbImNew = rgbIm.*bwImAux;

希望这可以帮助。

于 2013-05-19T11:44:44.427 回答
1

您可以将二进制图像用作 3dim 图像中的逻辑索引。image要将二进制中为零的所有像素归零mask,您可以对每个维度使用以下代码:image(~mask)=0;

于 2013-05-19T11:45:06.027 回答