【问题标题】:OpenGL: Is the precision of GL_R11F_G11F_B10F good for 8bit RGB images?OpenGL:GL_R11F_G11F_B10F 的精度是否适用于 8 位 RGB 图像?
【发布时间】:2016-04-29 14:22:53
【问题描述】:

"Image Format",我们看到:

11 位浮点数没有符号位;它有 6 位尾数和 5 位 指数。

从“Half-precision floating-point format”中,我们可以推导出: 11位浮点数的相对精度为2^(-6),即1/64

但对于 8 位 RGB 图像,255 处的相对精度为 (255-254)/255 = 1/255。

那么是不是说GL_R11F_G11F_B10F的精度对于亮度范围很大(例如255)的8bit RGB图像不好?

【问题讨论】:

  • 奇怪的是,您链接到有关图像格式的 OpenGL wiki 文章,但没有注意到 explains exactly how much precision 您从此类浮动中获得的文章。
  • @Nicol Bolas,我认为相对精度很重要。所以这就是我没有包含你引用的关于“精度的小数位数”的文章的原因
  • 但“精度的小数位数”“相对精度”。它是您从尾数中获得的精度位数,与指数无关。
  • @Nicol Bolas,感谢您的讨论。我们可以使用“精度的十进制数字”来推断相对精度。但我认为它们是两个不同的概念。为了帮助我决定我们是否可以从 250-255 得到精确的 5 区间,我们需要使用“相对精度”的概念。如果我们有 6 位的有效位精度,则一个间隔是 2^(-6)。如果我的值为 1,则下一个值为 1 + 2^(-6)。我的理解正确吗?谢谢。

标签: image opengl precision 8-bit


【解决方案1】:

使用浮点图像的原因是允许您表达范围 [0, 1] 之外的值。如果这就是您需要做的,那么这就是您需要做的,标准化的整数格式将无济于事,无论其精度如何。

这种特殊的浮点格式在不使用共享指数的情况下尽可能压缩浮点 RGB 数据。相对于规范化的 8 位整数,它确实会丢失精度,只有大约 2.1 位的十进制精度(由于 IEEE-754 浮点数的工作方式,你会得到比实际多一位尾数的效果)。

但如前所述,如果您需要大于 1 的值,则不能选择规范化格式。这种特殊的浮点格式适用于可以容忍精度损失的情况。这将用于 HDR 情况下的帧缓冲输出等用途。它的大小是 16 位浮点 RGBA 格式的一半,因此可以在帧缓冲区带宽成本方面带来不小的性能提升。

这是一种优化。您可能会使用半浮点数进行开发,但随后您切换到此,看看您是否能分辨出区别。如果没有,则永久切换到它(可能使用面向用户的设置以提高图像保真度)。

【讨论】:

  • 由于我们关心相对精度、误差/值,我认为在 GL_R11F_G11F_B10F 格式中使用 0-255 还是 0-1 并不重要。我只是想寻求确认或反驳,对于强度在 250-255(在 0-255 范围内)或 0.98-1(在 0-1 范围内)排列的像素,它在 GL_R11F_G11F_B10F 格式中不能像 8bit 那样具有精度整数表达式。这意味着,在 8 位整数表达式中,我们可以有 250、251、... 255。但我认为 GL_R11F_G11F_B10F 格式中没有 6 步的值表达式。我的理解正确吗?
  • 我认为“相对于标准化的 8 位整数而言,它确实会丢失精度”很清楚。更何况……你为什么这么在意?正如我所指出的,如果您需要浮点值,那么标准化整数甚至不可能出现在桌面上。如果你可以生活在 [0, 1] 范围内,为什么不直接使用归一化整数呢?我回答的重点是你问错了问题。你从错误的地方开始。
  • 谢谢。我会检查你的答案。实际上我会对像素值做一些数学运算。所以它可能大于 1(可以通过 GL_R11F_G11F_B10F 格式满足),并且可能需要比 0-255 级别更高的精度(这是我问的问题)。再次感谢。
  • 顺便说一句,我认为“相对误差”才是真正重要的。请参阅en.wikipedia.org/wiki/Half-precision_floating-point_format 中的“[0, 1] 中十进制值的精度限制”部分,例如,它指出:2 之间的小数^(-11) 和 2^(-10):固定区间 2^(-21),这是关心的。
  • 你注意到-21 = -10 - 11这个事实了吗?其中 -10 是该范围内的最大指数,而 11 是有效数字中的精度位数?每个(非非规范化)区间都适用于该精确数学。偶数 [1, 2]:-10 = 1 - 11。简而言之,您所说的与您在有效数字中获得 11 位精度的说法没有什么不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2021-06-04
  • 2014-11-03
相关资源
最近更新 更多