gpt4 book ai didi

python - 如何在python中对图像进行反规范化?

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:38 25 4
gpt4 key购买 nike

我正在做一个项目,我必须首先将图像标准化为 [0,1],然后在处理后对图像执行 dwt 和 idwt。所以首先我将图像转换为数组,然后用这段代码对其进行归一化

def normalization (array):    
maxs = max([max(l) for l in array])
mins = min([min(l) for l in array])
range = max - mins
A = []
for x in array:
m = [(float(xi) - mins)/range for xi in x]
A.append(m)
return A

代码运行良好,现在我不知道如何将它反规范化回到实际范围。有人可以帮忙吗?

最佳答案

我使用以下方法映射到任何区间 [a, b] --> [c, d] 并返回:

import numpy as np

def interval_mapping(image, from_min, from_max, to_min, to_max):
# map values from [from_min, from_max] to [to_min, to_max]
# image: input array
from_range = from_max - from_min
to_range = to_max - to_min
scaled = np.array((image - from_min) / float(from_range), dtype=float)
return to_min + (scaled * to_range)

一个例子:

image = np.random.randint(0, 255, (3, 3))
image

返回:

array([[186, 158, 187],
[172, 176, 232],
[124, 167, 155]])

现在将其从 [0, 255] 映射到 [0, 1]

norm_image = interval_mapping(image, 0, 255, 0.0, 1.0)
norm_image

返回:

array([[ 0.72941176,  0.61960784,  0.73333333],
[ 0.6745098 , 0.69019608, 0.90980392],
[ 0.48627451, 0.65490196, 0.60784314]])

现在从 [0, 1] 回到 [0, 255]:

orig_image =interval_mapping(norm_image, 0.0, 1.0, 0, 255).astype('uint8')
orig_image

返回:

array([[186, 158, 187],
[172, 176, 232],
[124, 167, 155]], dtype=uint8)

您也可以将它用作 image 的单列并将其映射到 [-1.0, 1.0]:

col = image[:, 1]
print col
interval_mapping(col, 0, 255, -1.0, 1.0)

返回:

[158 176 167]
array([ 0.23921569, 0.38039216, 0.30980392])

或标量:

interval_mapping(1.0, 0, 255, -1.0, 1.0)

返回:

-0.99215686274509807

关于python - 如何在python中对图像进行反规范化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30047612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com