Matlab 如何将原始颜色返回到二值化图像?
我有一个RGB图像,我已经处理和二值化,现在我想返回的原始颜色只为地区,现在是白色的二值化图像。 有可能吗 我尝试过执行以下代码,首先我将数据类型从logical转换为double,然后我尝试返回原始颜色,但这似乎不起作用。生成的图像是完全白色的图像Matlab 如何将原始颜色返回到二值化图像?,matlab,image-processing,Matlab,Image Processing,我有一个RGB图像,我已经处理和二值化,现在我想返回的原始颜色只为地区,现在是白色的二值化图像。 有可能吗 我尝试过执行以下代码,首先我将数据类型从logical转换为double,然后我尝试返回原始颜色,但这似乎不起作用。生成的图像是完全白色的图像 rz = double(rz); rz(:,:,3)=I2(:,:,3); rz(:,:,2)=I2(:,:,2); rz(:,:,1)=I2(:,:,1); rz是二值化图像,I2是原始RGB图像 是否可以仅为二值化图像上的白色区域返回原始颜色
rz = double(rz);
rz(:,:,3)=I2(:,:,3);
rz(:,:,2)=I2(:,:,2);
rz(:,:,1)=I2(:,:,1);
rz
是二值化图像,I2
是原始RGB图像
是否可以仅为二值化图像上的白色区域返回原始颜色?我做错了什么?假设
rz
是逻辑NxMx1图像(即,在每个维度上没有不同的二值化)
他做这项工作。基本上,您可以将
rz
转换为double,然后将其与Iout
的每个颜色通道相乘(使用bsxfun
)。如果遮罩在该像素中为零,则生成的图像将具有颜色[0,0,0]
。什么是大小(rz)
?您好@AnderBiguri,rz
的大小是171x181Hi@AnderBiguri,谢谢您的回答!我尝试了你的代码,但它说“不支持使用bsxfun混合整数类输入时出错”。@inavas这是因为你的图像实际上不是双精度的。什么是class(I2)
?Hi@AnderBiguri,I2
是uint8.Hi@AnderBiguri。对谢谢!它工作得很好。
Iout=I2;
Iout=bsxfun(@times,Iout,uint8(rz))