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

时间:2015-08-07 20:49:46

标签: numerical-methods srgb

在这篇关于sRGB(https://en.wikipedia.org/wiki/SRGB)的文章中,指出伽马变换的线性部分接近于零,并且避免在K = 0时具有无限斜率,这可能导致数值问题&# 34 ;.我想知道问题是什么。

1 个答案:

答案 0 :(得分:2)

有两个答案,就像通常的伽玛一样。现代变体是:

问题在于,无限的坡度,你需要无限的"分辨率(许多存储位),以便得到一个线性表示,该线性表示可以在没有损失的情况下进行伽马编码。换句话说,它允许小的查找表产生可逆的线性编码(8位 - > 10位 - > 8位)。

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

#010101或1/255的方形(γ= 2.0)编码的线性等价物是1 /(255 * 255)th。你需要16位来忠实地表示,并且使用2.2而不是2.0作为指数会使情况变得更糟。这些非常小的数字只是编码功能的必然结果,在实践中,您在光线范围内(大致为黑色)不需要太多分辨率。因此,线性段有助于编码,不会将分辨率浪费在黑色(或接近零)附近。

稍微陈旧的答案,取自

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

在某些设备中,这个线性段对噪声的敏感度较低。这可能是模拟信号路径的主要原因。