给定一个蒙版,我如何获得图像的原始颜色?

时间:2014-09-26 05:08:33

标签: image matlab image-processing

我已将我的图像转换为蒙版,现在我想获得这个蒙版的原始颜色。我有一个名为objectPixels的数组,它确定哪些位置属于我正在分割的对象。我已经尝试了下面的代码,但我没有获得原始颜色。

我在做什么呢?

mask = false(size(grayImage));
mask(objectPixels) = true;  
%on R channel
tmp = originalImage(:,:,1);

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你有一个属于某些对象的像素掩码。您现在希望找到一个图像,其中标记为true的任何像素将在这些位置提供原始颜色,而我们跳过false。如果掩码位置为false,我将假设输出像素是黑色的。这可以使用bsxfuntimes作为函数轻松计算。我们基本上会复制图像中每个颜色通道的蒙版,然后将蒙版与原始图像相乘。

因此:

out = bsxfun(@times, originalImage, cast(mask, class(originalImage)));

mask最初是logical数组,为了将蒙版和原始图像相乘,它们必须是同一类型,这就是为什么{{1}使用以便我们可以将图像转换为与原始图像相同的类型。我们使用class来确定原始图像的类或类型。

例如,让我们使用MATLAB系统路径的cast图片。我将使用rgb2gray将此图像转换为灰度,然后选择灰度级100的任意阈值来为我们提供遮罩。大于100的任何内容都会使掩码值为onion.png,而其他任何内容都会设置为true

生成此蒙版后,让我们根据这些蒙版值确定原始颜色的含义。就这样:

false

通过上面的代码,我实现了我正在讨论的逻辑,附加图形显示原始图像,生成的蒙版以及输出图像,显示蒙版位置所在的原始颜色{{ 1}}。


这就是我得到的:

enter image description here