使用GIMP和Photoshop等软件,可以应用RGB曲线,但功能是使用额外的“伽马”曲线。
在编程和操作像素时,我通常只拥有24位,仅RGB帧,因此不可能直接使用在第三方成像软件中创建/检测到的RGB曲线,并重新使用它们来硬编码这样的一些数组。一个程序:
byte[] rCurve = { ... }
byte[] gCurve = { ... }
byte[] bCurve = { ... }
第4条伽玛曲线如何作用于红色,绿色和蓝色曲线?它会增加还是减少所有这些?
[编辑]
做一个快速检查,我注意到的第一件事就是它就像颜色的乘数一样,在提升它时最大化它们,在减少颜色时最小化它们。即图像仅具有色调,如果我最大化伽马曲线则不再有亮度级别。我想知道在我的3像素阵列上重新创建它的确切计算是什么。
答案 0 :(得分:3)
Gamma只是尝试纠正显示器的非线性特性,以实现线性亮度“曲线”。要应用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)