Matlab - 如何使用二值图像屏蔽 3-D 图像

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

这应该如何与catrepmat 一起使用? 【参考方案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;

【讨论】:

以上是关于Matlab - 如何使用二值图像屏蔽 3-D 图像的主要内容,如果未能解决你的问题,请参考以下文章

matlab中将灰度图转化为二值图后,有如何转化为灰度图

matlab 图像处理 二值化

如何利用matlab对图像进行处理,效果如图所示

MATLAB教程案例21图像的初步认识,通过MATLAB对图像进行简单操作——读写缩放二值图直方图灰度图色度空间转化等

MATLAB:图像二值化互补图(反运算)(im2bw,imcomplement函数)

matlab图像处理