【发布时间】:2021-05-07 10:48:23
【问题描述】:
据我所知,一张 hdr 图像的所有像素值都应该小于 1 且大于 0。
但是,我尝试读取 hdr 图像并检查其中一张图像的像素值:
train_set_y_original = [cv.imread(fn, -1) for fn in train_img_folder]
print(train_set_y_original[20])
但是,有些值大于 1。
我都试过了
print(train_set_y_original[20].astype('float32')
和
print(train_set_y_original[20].astype('float64'))
结果是一样的。
我不明白为什么会得到这个结果。
我需要制作 hdr 图像的标签,因此我需要 hdr 图像的像素值不变。
【问题讨论】:
-
你得到什么结果?也许你必须转换图像,即。从 RGB 到灰度或其他格式。或者,也许您必须对其进行规范化。大多数图像将颜色保持为 0...255。
-
float32,float64无法更改,即。12的值小于1- 它只会将integer值12转换为浮点值12.0。将12转换为 ie。1您将不得不使用normalize值。 -
尝试打印
img.mean(), img.max(), img.min() -
这是train_set_y_original的(0,0,0):[0.2578125 0.2578125 0.2578125 0.2578125 1.0234375 1.0234375 1.0234375 1.0234375 1.171875 0.734375] [19.875 25.125 11.125] [19.125] [19.125] [19.125] [19.125] [19.125] 11. ] [ 0.2578125 0.2578125 0.2578125]] 我需要制作 hdr 图像的标签,所以我不应该将这些值转换为 0 到 255 之间。
-
由于 HDR 处理使用指数表达式,它通常处理 float s,但在大多数情况下(可能是您的情况),图像保存在 RGB - 无符号 8 位整数中。这意味着最大值(可能为 1)-> 255 和最小值(可能为 0)-> 0,如果您想要 0 到 1 的值,您将不得不自己标准化,但您不会获得与 HDR 时完全相同的信息计算