以 K 为单位计算色温

2022-08-30 18:37:10

我写了一个用于处理颜色的lib,并坚持尝试计算。从我所读到的内容来看,在CIE 1931色彩空间中工作是要走的路,可以使用.Tc(k)XYZxyY

到目前为止,我已经把一切都弄对了,以至于弄清楚了正确的和从:xy

          X                 Y
x = ____________  y = ____________
    ( X + Y + Z)      ( X + Y + Z)

数字远远超出了图表,但找不到任何详细说明您如何从和到xyTc(K)

enter image description here

例如:对于#FF0000我得到以下内容。

x: 0.64007449945677
y: 0.32997051063169

我读过很多关于这个主题的论文,以及所有维基百科的文章。我在SO上遇到的所有问题都只是链接到一篇关于颜色的wiki文章,没有看到一个有实际计算公式的文章。Tc(k)


答案 1

根据维基百科文章,我在Excel中输入了用于计算的近似公式,如下所示Color Temperature

=(-449*((R1-0,332)/(S1-0,1858))^3)+(3525*((R1-0,332)/(S1-0,1858))^2)-(6823,3*((R1-0,332)/(S1-0,1858)))+(5520,33)

R1 is color space x coordinate from 0 to 1
S1 is color space y coordinate from 0 to 1

工作正常!


答案 2

如果我正确理解您,请参阅此pdf,其中描述了许多方法(简要:()。从此 PDF 中:

[断续器1]使用 CIE 1960 统一色彩空间坐标 U 和 v 执行计算。坐标 u 和 v 使用公式从 x 和 y 派生:u = 4x/(12y-2x+3) 和 v = 6y/(12y-2x+3) 相关色温定义为最接近测试源的 u,v 坐标的黑体的温度。两种不同的方法提供了结果:一种是基于定义的迭代方法,另一种是基于30个预先计算的u,v和逆斜率参数的表的常用罗伯逊方法。迭代 如果 uS 和 vS 是测试源的值,uT 和 vT 是温度 T 下的黑体值,则相关色温是 T 的值,其中:

sqrt( (uS - uT)^2 + (vS - vT)^2 )

已最小化。调整温度T以获得此功能的最小值是使用电子表格(Quattro Pro 8和Excel 97)完成的。两个电子表格都给出了相同的值。

不知道它是否真的对你有帮助。


推荐