首页 文章

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

提问于
浏览
1

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

我想要做的是连接这两个图像,使二进制图像作为正常图像的掩码 .

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

我知道这应该与 cat 一起使用,或者甚至与 repmat 一起使用,但是因为即使在阅读了函数的文档之后我就会知道如何做到这一点 .

3 回答

  • 1

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

    假设 rgbIm 是您的RGB图像, bwIm 是您的二进制图像;

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

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

    然后执行一个简单的 multiplication 到"eliminate"二进制图像中 are not ones 的所有像素:

    rgbImNew = rgbIm.*bwImAux;
    

    希望这可以帮助 .

  • 1

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

  • 6

    如果您有一个三维图像 I 和一个二进制掩码 M ,您可以通过将图像乘以掩码将无关位掩盖为零:

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

    或通过逻辑索引:

    I(~mask(:, :, ones(1, size(I, 3)))) = 0;
    

相关问题