【问题标题】:How to return original color to a binarized image?如何将原始颜色恢复为二值化图像?
【发布时间】:2017-10-14 15:38:06
【问题描述】:

我有一个经过处理和二值化的 RGB 图像,现在我想只为二值化图像上现在为白色的区域返回原始颜色。 有可能吗?

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

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

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

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

【问题讨论】:

  • 什么是size(rz)
  • 嗨 @AnderBiguri ,rz 的大小是 171x181

标签: matlab image-processing


【解决方案1】:

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

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

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

【讨论】:

  • 嗨@AnderBiguri,感谢您的回答!我尝试了您的代码,但它显示“不支持使用 bsxfun 混合整数类输入时出错。”
  • @inavas 那是因为您的图像实际上不是双重的。 class(I2) 是什么?
  • 嗨@AnderBiguri,I2 是uint8。
  • 嗨@AnderBiguri。是的!!非常感谢!效果很好。
猜你喜欢
  • 2012-10-02
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多