如何计算图像中颜色的色温/色调?

信息处理 图像处理 颜色
2022-01-02 02:37:02

如何计算照明给定图像的光源的(黑体等效)色温?下面是 Adob​​e Lightroom 处理色温和 RGB 直方图变化的屏幕截图。给定图像的 RGB 分量,我该如何计算它?我应该期待一个值 - 照明源的黑体等效温度,对吗?

4600K 23810K

1个回答

本文(pdf 下载/更新链接)给出了计算相关色温 (CCT) 的以下公式。他们没有明确说(或者我错过了),但他们的例子让我推断他们假设 RGB 值在 0-255 的范围内。

1. 将 RGB 值转换为CIE 三色值(XYZ),如下所示:

X=(0.14282)(R)+(1.54924)(G)+(0.95641)(B)
Y=(0.32466)(R)+(1.57837)(G)+(0.73191)(B)=Illuminance
Z=(0.68202)(R)+(0.77073)(G)+(0.56332)(B)

2. 计算归一化色度值:

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

3. 计算 CCT 值:

CCT=449n3+3525n2+6823.3n+5520.33

where n=(x0.3320)/(0.1858y)

可以组合形成以下等式:

CCT=449n3+3525n2+6823.3n+5520.33
where n=((0.23881)R+(0.25499)G+(0.58291)B)/((0.11109)R+(0.85406)G+(0.52289)B)

我不确定是否将其应用于图像,但如果你只想要一个单一的、概括的数字,那么你也许可以使用某种平均值?要么为图像找到一个可接受的“平均”RGB值(例如质心)并使用它来计算温度,要么(一个计算成本更高的选项)计算图像中每个像素的温度并取这些结果的平均值.

此外,请记住,CCT 只是大多数颜色的近似度量,因为颜色空间中只有一条曲线实际上表示可以从真实世界的黑体辐射器获得的颜色。因此,对于所有其他颜色,计算的色温只是它最接近代表的黑体温度的近似值。因此,对于某些颜色(尤其是绿色),它实际上可能是一个毫无意义的值,至少在物理意义上是这样。下图很好地说明了这一点(来自关于色温的维基百科文章)。

图像中的黑线表示实际上可以由块体辐射产生的普朗克轨迹。较小的交叉线代表附近 CCT 近似的等温线。

另外,由于您的问题专门引用了 Adob​​e Lightroom,因此我在四处搜索时发现了这一点

[在 Adob​​e Lightroom 中] 的滑块调整的不是光的黑体温度,而是应用于图像的补偿以补偿光的黑体温度。这反过来说。

因此请记住,您在 Lightroom 滑块上看到的色温与根据上述公式计算的色温不同。