直方图:RGB 到亮度

问题描述 投票:0回答:1

在我正在实现的直方图显示中,我成功地显示了RGB直方图。与 Photoshop 相比,似乎很正确!

(以下所有截图均来自同一张图片)


现在,对于亮度直方图,我使用了以下公式:

Y = 0.2126 R + 0.7152 G + 0.0722 B

(如此处所讨论)

但是,我的似乎与 Photoshop 的 亮度直方图(也来自其他应用程序)不同:

事实上,我的亮度直方图(根据上面的公式计算),似乎等于Photoshop的RGB直方图

问题

从 RGB 值实现正确的亮度直方图的正确公式是什么?


附注:我尝试过以下公式,但它们似乎并没有让我接近 Photoshop 的实际亮度直方图

Y = 0.2126 R + 0.7152 G + 0.0722 B
Y = 0.299 R + 0.587 G + 0.114 B
Y = 0.33 R + 0.5 G + 0.16 B
Y = 0.375 R + 0.5 G + 0.125 B

(请注意:我确实理解,由于色彩空间差异、不同应用程序使用的实际公式等,直方图在不同应用程序之间往往略有不同。我使用 Photoshop 作为常见示例。我也确实与其他图像编辑软件,差异看起来都是一样的。)

swift histogram rgb core-image luminance
1个回答
0
投票

简短回答

在应用系数之前,您必须对 sRGB 值进行线性化。

更长的答案

  1. 适当的术语是亮度。光度是随时间变化的光,在天文学中用于表示星光强度。

  2. sRGB,以及大多数用于存储或传输颜色数据的 RGB 颜色空间都使用用伽玛或传输曲线(又名“TRC 或色调响应曲线”)编码的值。

    • 因此,sRGB 值与显示器的实际光输出之间不存在 1:1 线性关系。
  3. 另一方面,亮度是光强度的线性值。虽然亮度根据人类对不同波长的敏感度具有光谱权重,但亮度与人类对明度/暗度的感知无关,并且人类明度感知相对于物理光强度是非线性的。

    • 此处的含义是,为了使用于计算线性亮度的色度系数按预期工作,非线性 sRGB 值必须首先进行线性化
  4. 使用 gamma / TRC 的原因在 Poynton 博士的“Gamma FAQ”中有很好的描述。

© www.soinside.com 2019 - 2024. All rights reserved.