将图像从float64转换为uint8使图像看起来更暗

May*_*ybe 2 python image image-processing scikit-image tensorflow

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

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

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

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

我还尝试过使用其他功能,例如tf.image.convert_image_dtype在保存之前从tensorflow获得的功能。与我直接调用skimage.io.imsave相比,它们都返回了较暗的图像。这是什么问题

这是一组在保存之前转换为uint8生成的图像 在此处输入图片说明

这是通过直接保存生成的一组图像

Anh*_*INH 7

我通过使用修复此警告,

import numpy as np
import imageio

# suppose that img's dtype is 'float64'
img_uint8 = img.astype(np.uint8)
# and then
imageio.imwrite('filename.jpg', img_uint8)
Run Code Online (Sandbox Code Playgroud)

就是这样!


Cri*_*ngo 5

您链接的文档中skimage.img_as_ubyte

负输入值将被裁剪。正值的范围是0到255。

由于您的图像在[-1,1]范围内,因此一半的数据将被设置为0,这就是填充物看起来更暗的原因。尝试在调用之前先将图像缩放到正数范围,例如在图像上加1 skimage.img_as_ubyte