【问题标题】:Can pixel values of a hdr image have greater than 1?hdr 图像的像素值可以大于 1 吗?
【发布时间】: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 - 它只会将 integer12 转换为浮点值 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 时完全相同的信息计算

标签: python opencv hdr


【解决方案1】:

是的,在范围有限的情况下。对于 10 位,16-940 用于 Y' 和 Cb,Cr 为 16-960。其中,它将小于 0 并且大于 1。xvYCC 使用的是 BTW。并且被 Superwhite 和 Superblack 使用。并不是说它对 PQ 转移有任何意义。

在全范围的情况下,Y、Cb、Cr 中没有,但 R'、G'、B' 中仍然是。

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 2018-04-01
    • 1970-01-01
    • 2011-05-15
    • 2012-02-23
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    相关资源
    最近更新 更多