为了账号安全,请及时绑定邮箱和手机立即绑定

如何标准化图像中的像素值并保存

如何标准化图像中的像素值并保存

倚天杖 2023-02-22 15:40:11
我正在尝试规范化我的数据以准备将其作为此模型的输入。我尝试按照本指南进行操作,但一直遇到问题。首先,我的最小值和最大值不是从 0 和 255 开始的,最终结果也没有在 0 和 1 之间归一化。这是我的功能def process_image(image_path):    image = Image.open(image_path)    new_image = image.resize((224,224))        pixels = asarray(new_image)    # confirm pixel range is 0-255    print('Data Type: %s' % pixels.dtype)    print('Min: %.3f, Max: %.3f' % (pixels.min(), pixels.max()))    # convert from integers to floats    pixels = pixels.astype('float32')    # normalize to the range 0-1    pixels /= 255.0    # confirm the normalization    print('Min: %.3f, Max: %.3f' % (pixels.min(), pixels.max()))    new_image.save("result.jpg")        return new_image这是我的结果输出Data Type: uint8Min: 8.000, Max: 216.000Min: 0.031, Max: 0.847任何想法为什么?而且,我怎样才能保存具有这些标准化结果的图像。现在编写代码时,像素不会更改,因为我只是从 new_image 创建像素的副本。感谢您提供的任何帮助。
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您可以做的是计算数据集的实际最小值和最大值,然后再进行您自己的 minmax 归一化。


这可能是这样的:


import sys

from PIL import Image

import numpy as np


image_paths = ['image_path1.jpg', 'image_path2.jpg', 'image_path3.jpg']

min = sys.maxsize

max = -sys.maxsize


for image_path in image_paths:

    image = Image.open(image_path)

    np_image = np.asarray(image)

    if min > np_image.min()

        min = np_image.min()

    if max < np_image.max()

        max = np_image.max()

这将为您提供变量 min 和 max,您现在可以使用它们在 0 和 1 之间进行归一化,而不是之前的 /= 255!


    ...

    pixels -= min

    pixels /= (max - min)

    ...

让我知道是否有帮助!


查看完整回答
反对 回复 2023-02-22
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信