我有一个带有红色、绿色、蓝色通道的图像和图像的二进制版本。
我想要做的是连接这两个图像,以便二进制图像作为普通图像的掩码。
我只想从彩色图像中选择二进制为 1 的像素。
我知道这应该与cat
,甚至与 一起使用repmat
,但由于我对 Matlab 还很陌生,即使在阅读了函数的文档之后,我也不知道如何做到这一点。
我有一个带有红色、绿色、蓝色通道的图像和图像的二进制版本。
我想要做的是连接这两个图像,以便二进制图像作为普通图像的掩码。
我只想从彩色图像中选择二进制为 1 的像素。
我知道这应该与cat
,甚至与 一起使用repmat
,但由于我对 Matlab 还很陌生,即使在阅读了函数的文档之后,我也不知道如何做到这一点。
如果您有 3-D 图像I
和二进制掩码M
,则可以通过将图像乘以掩码将不相关的位掩码为零:
I = bsxfun(@times, I, M);
或通过逻辑索引:
I(~mask(:, :, ones(1, size(I, 3)))) = 0;
我不是 100% 确定我理解你的问题,但这里有一个建议:
假设rgbIm
是你的RGB 图像,并且bwIm
是你的二值图像;
您可以尝试使用以下代码行将二进制图像“扩展”为“ 3D ”(使其尺寸与原始 RGB 图像一致):
bwImAux = bwIm(:,:,[1 1 1]);
然后执行一个简单的乘法来“消除”二进制图像中所有不是像素的像素:
rgbImNew = rgbIm.*bwImAux;
希望这可以帮助。
您可以将二进制图像用作 3dim 图像中的逻辑索引。image
要将二进制中为零的所有像素归零mask
,您可以对每个维度使用以下代码:image(~mask)=0;