sRGB 的线性段避免无限斜率 - 为什么?

sRGB's linear segment to avoid infinite slope - why?

在这篇关于 sRGB (https://en.wikipedia.org/wiki/SRGB) 的文章中指出,伽马变换有一个接近零的线性部分,到 "avoid having an infinite slope at K = 0, which can cause numerical problems"。我想知道这有什么问题。

伽玛通常有两个答案。现代变体是:

问题在于,对于无限斜率,您需要 "infinite" 分辨率(许多存储位)才能获得可逆到伽玛编码而不会丢失的线性表示。换句话说,它允许一个小的查找 table 来产生一个可逆的线性编码(8 位 -> 10 位 -> 8 位)。

第一步最容易理解数值题(8位->10位)。在接近零的无限斜率下,您需要更大的编码范围来保持忠实和可逆,即您需要超过 16 位(假设整数编码,一半没有这个问题)。

#010101 的线性等效值或 1/255 平方(伽玛 = 2.0)编码为 1/(255*255)。您将需要 16 位来忠实地表示它,使用 2.2 而不是 2.0 作为指数会使情况变得更糟。这些相当小的数字只是编码函数的必然结果,实际上,在大致为黑色的亮度范围内,您不需要太多分辨率。因此,线性段通过不将分辨率浪费在黑色周围(或接近零)的细节上来帮助编码。

稍旧的答案,摘自

http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html#gamma_correction

是在某些设备中,这个线性段对噪声不太敏感。这可能主要适用于模拟信号路径。