我有一个RGB图像,我已经处理和二值化,现在我想仅返回二进制图像上现在为白色的区域的原始颜色。 是否可以这样做?
我尝试过以下代码,首先我将数据类型从逻辑转换为double然后我尝试返回原始颜色,但似乎不起作用。生成的图像是完全白色的图像。
rz = double(rz);
rz(:,:,3)=I2(:,:,3);
rz(:,:,2)=I2(:,:,2);
rz(:,:,1)=I2(:,:,1);
rz
是二值化图像,而I2
是原始RGB图像。
是否可以仅为二值化图像上的白色区域返回原始颜色?我做错了什么?
答案 0 :(得分:2)
假设rz
是逻辑NxMx1图像(即您没有在每个维度中进行二值化)
Iout=I2;
Iout=bsxfun(@times,Iout,uint8(rz))
完成这项工作。基本上,您将rz
转换为double,然后将其与Iout
的每个颜色通道相乘(使用bsxfun
)。如果该像素中的蒙版为零,则生成的图像将具有颜色[0,0,0]
。