RGB的标准2.2伽马校正中的所有数字都来自哪里?

时间:2012-05-24 10:26:26

标签: math colors formula gamma

这是标准的前卫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的数字来自哪里?我特别需要知道它们是如何衍生出来的。

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

1 个答案:

答案 0 :(得分:1)

所以这就是我想到的程度。

必须根据以下要求设计伽马校正功能(参见this paper):

  • 0强度的电压必须为0
  • 1个强度的电压必须为1
  • 它必须表现得接近强度1的幂函数(指数1 / 2.22 = 0.45)
  • 它必须是靠近原点的线性(以减少低强度时传感器噪声的影响)
  • 在[0,1]
  • 中必须连续且可连续区分

所以这个问题可以通过找到定义函数g:x-&gt; 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-&gt; x0 +}(dg / dx)

产生以下等式:

  • A + B = 1
  • C * X0 = A * X 0 ^ 0.45 + B
  • C = 0.45 * A * X0 ^ -0.55

相当于:

  • A = 1 /(1-0.55 * X0 ^ 0.45)
  • B = - 。55 * X0 ^ 0.45 /(1-0.55 * X0 ^ 0.45)
  • C = 0.45 * X0 ^ - 55 /(1-0.55 * X0 ^ 0.45)

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

  • A = 1.099
  • B = - 。099
  • C = 4.5

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

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