【问题标题】:Matlab - How to mask a 3-D image using a binary imageMatlab - 如何使用二值图像屏蔽 3-D 图像
【发布时间】:2013-05-19 11:01:02
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这应该如何与cat 或repmat 一起使用?

标签: matlab image-processing matrix


【解决方案1】:

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

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

或通过逻辑索引:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    rgbImNew = rgbIm.*bwImAux;
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-02-19
        • 2014-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-12
        • 2011-04-12
        相关资源
        最近更新 更多