首页 > 解决方案 > 将图像从 float64 转换为 uint8 使图像看起来更暗

问题描述

我有 GAN 生成的 float64 类型的图像,我通过skimage.io.imsave. 该过程运行良好,保存的图像看起来不错,但我收到如下警告消息:

从 float64 到 uint8 的有损转换。范围 [-0.9999998807907104, 0.9999175071716309]。在保存之前将图像转换为 uint8 以抑制此警告。

然后我尝试通过在使用 function 保存之前将图像转换为 uint8 来消除此警告skimage.img_as_ubyte。这给了我一个明显更暗的图像,并带有警告

用户警告:从 float64 转换为 uint8 时可能会丢失精度 .format(dtypeobj_in, dtypeobj_out))

我还尝试tf.image.convert_image_dtype在保存之前使用其他功能,例如来自 tensorflow 的功能。它们都返回比我直接调用 skimage.io.imsave 更暗的图像。这里有什么问题?

这是保存前转换为uint8生成的一组图像 在此处输入图像描述

下面是直接保存生成的一组图片

标签: pythonimagetensorflowimage-processingscikit-image

解决方案


您链接的文档中skimage.img_as_ubyte

负输入值将被剪裁。正值在 0 到 255 之间缩放。

由于您的图像在 [-1,1] 范围内,一半的数据将设置为 0,这就是为什么东西看起来更暗的原因。在调用skimage.img_as_ubyte.


推荐阅读