RGB 的标准 2.2 伽马校正中的所有数字从何而来



这是标准的fwd Gamma 2.22(1/0.45)校正公式:

for R,G,B < 0.018
R´ = 4.5 * R
G´ = 4.5 * G
B´ = 4.5 * B
for R,G,B ≥ 0.018
R´ = 1.099 * R^0.45 - 0.099
G´ = 1.099 * G^0.45 - 0.099
B´ = 1.099 * B^0.45 - 0.099

数字 0.18、4.5、1.099 和 0.099 从何而来?我特别需要知道它们是如何得出的。

我需要知道,因为我正在编写一个伽马校正函数,而使用幂和缩放的简单方法,而不是上述方法,会产生不同的结果。

这就是我想到的程度。

伽马校正函数的设计必须符合以下要求(见本文):

  • 0 强度的电压必须为 0
  • 1 强度的电压必须为 1
  • 它的行为必须类似于接近强度 1 的幂函数(指数 1/2.22=0.45)
  • 它必须是靠近原点的线性的(以减少低强度下传感器噪声的影响)
  • 它必须是连续的,并且在 [0,1] 中连续可微分

所以这个问题可以通过找到定义函数 g:x->g(x) 的数字 {a,b,c,x0} 来解决,例如:

  • g(x) = a*x^.45+b in [x0,1]
  • g(x) = cx im [0,x0[
  • g(1) = 1
  • g(0) = 0
  • lim{x->x0-}(g) = lim{x->x0+}(g)
  • lim{x->x0-}(dg/dx) = lim{x->x0+}(dg/dx)

这会产生以下等式:

  • a+b=1
  • c*x0
  • =a*x0^.45+b
  • c=0.45*a*x0^-0.55

相当于:

  • a=1/(1-.55*x0^.45)
  • b=-.55*x0^.45
  • /(1-.55*x0^.45)
  • c=.45*x0^-.55
  • /(1-.55*x0^.45)

如果将 x0 设置为 0.018,则得到:

  • a=1.099
  • b=-.099
  • c=4.5

剩下的问题是:他们是如何选择x0的?我找不到 0.018 值的任何理由......或者他们可以从其他 3 个参数中的任何一个开始(例如,将脚趾坡度设置为 4.5,它们派生出 a、b 和 x0)。

不确定这会解决您的问题,无论如何,我希望这有所帮助(我在数学上玩得很开心)。

最新更新