从1,1到0255的图像的归一化numpy数组

2024-09-29 23:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数字数组的图像形状(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))

如果有任何帮助,我们将不胜感激。在


Tags: 图像宽度高度batch数字数组解决方案min
1条回答
网友
1楼 · 发布于 2024-09-29 23:27:53

这里唯一棘手的地方是,当您从浮点数组转换回整数数组时,必须小心浮点如何映射到整数。对于您的情况,您需要确保所有的浮点值都四舍五入到最接近的整数,这样就可以了。下面是一个使用第一种方法的工作示例:

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()

相关问题 更多 >

    热门问题