规范从-1,1到0,255的图像的numpy数组

时间:2019-03-18 20:41:51

标签: python numpy image-processing normalize

我有一个形状为(32,32,32,3)的图像阵列, (批量大小,高度,宽度,通道)。

值在-1到1之间,我希望将整个数组归一化/转换为0255。

我尝试了以下解决方案:

realpics  = ((batch_images - batch_images.min()) * (1/(batch_images.max() - batch_images.min()) * 255).astype('uint8'))


realpics = np.interp(realpics, (realpics.min(), realpics.max()), (0, 255))

任何对此的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这里唯一棘手的部分是,当您从浮点数组转换回整数数组时,必须注意如何将浮点数映射到整数。对于您的情况,您需要确保所有浮点数都四舍五入到最接近的整数,然后就可以了。这是使用您的第一种方法的有效示例:

import numpy as np

raw_images = np.random.randint(0, 256, (32, 32, 32, 3), dtype=np.uint8)
batch_images = raw_images / 255 * 2 - 1 # normalize to [-1, 1]
recovered = (batch_images - batch_images.min()) * 255 / (batch_images.max() - batch_images.min())
recovered = np.rint(recovered).astype(np.uint8) # round before casting
assert (recovered == raw_images).all()