如何将原始颜色返回到二值化图像?

时间:2017-05-15 18:31:09

标签: matlab image-processing

我有一个RGB图像,我已经处理和二值化,现在我想仅返回二进制图像上现在为白色的区域的原始颜色。 是否可以这样做?

我尝试过以下代码,首先我将数据类型从逻辑转换为double然后我尝试返回原始颜色,但似乎不起作用。生成的图像是完全白色的图像。

rz = double(rz);
rz(:,:,3)=I2(:,:,3);
rz(:,:,2)=I2(:,:,2);
rz(:,:,1)=I2(:,:,1);

rz是二值化图像,而I2是原始RGB图像。

是否可以仅为二值化图像上的白色区域返回原始颜色?我做错了什么?

1 个答案:

答案 0 :(得分:2)

假设rz是逻辑NxMx1图像(即您没有在每个维度中进行二值化)

Iout=I2;
Iout=bsxfun(@times,Iout,uint8(rz))

完成这项工作。基本上,您将rz转换为double,然后将其与Iout的每个颜色通道相乘(使用bsxfun)。如果该像素中的蒙版为零,则生成的图像将具有颜色[0,0,0]