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 还很陌生,即使在阅读了函数文档之后,我也不知道如何做到这一点。
【问题讨论】:
这应该如何与cat
或repmat
一起使用?
【参考方案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教程案例21图像的初步认识,通过MATLAB对图像进行简单操作——读写缩放二值图直方图灰度图色度空间转化等