1

使用 GIMP 和 Photoshop 等软件,可以应用 RGB 曲线,但该功能是使用额外的“伽马”曲线。

在编程和操作像素时,我通常只有 24 位,只有 RGB 帧,所以不可能直接使用在 3rd 方成像软件中创建/检测的 RGB 曲线并在程序中重新使用它们来硬编码一些这样的数组:

byte[] rCurve = { ... }
byte[] gCurve = { ... }
byte[] bCurve = { ... }

第 4 条伽马曲线如何作用于红、绿和蓝曲线?它增加或减少所有这些?

[编辑]

快速检查一下,我注意到的第一件事是它就像颜色的乘数一样,在提高它时最大化它们,在减少它时最小化它们。即图像只有色调,如果我最大化伽玛曲线,则没有更多的亮度级别。我想知道在我的 3 像素阵列上重新创建它的确切计算是什么。

4

1 回答 1

3

Gamma 只是尝试纠正显示器的非线性特性以实现线性亮度“曲线”。要应用 gamma,无需对任何内容进行硬编码。

只需将每个分量与伽马值相乘,如下所示:

gamma = 1 / 2.2
r = 255 * pow(r / 255, gamma) // pow(value, power)
g = 255 * pow(g / 255, gamma)
b = 255 * pow(b / 255, gamma)

要将其从线性反转回伽玛,您可以执行以下操作:

gamma = 2.2
r = 255 * pow(r / 255, gamma)
g = 255 * pow(g / 255, gamma)
b = 255 * pow(b / 255, gamma)

2.2 是 Windows 的默认值(Mac 是 1.8)

在此处输入图像描述

于 2013-07-28T17:08:46.307 回答