伽马校正公式:。^(gamma)或。^(1 / gamma)?

时间:2013-05-13 11:32:15

标签: image gamma

我正在寻找一个简单的伽马校正公式,用于灰度图像,其值介于0到255之间。

让我们说我的屏幕的伽玛值是2.2(这是一个液晶显示屏,所以我可能需要用更复杂的程序估算它,但让我们假设我的屏幕表现得很好。)

以下哪个公式是正确的?

  1. Corrected = 255 * (Image/255).^2.2
  2. OR

    1. Corrected = 255 * (Image/255).^(1/2.2)
    2. (那些注定是MATLAB代码,但我希望即使对非MATLAB人员也可以理解)

      我一直在互联网上环顾四周,但发现两种公式都在附近。我怀疑(2)是正确的,我的困惑是由于倾向于将“伽玛值”称为实际伽马值的倒数,但我真的很感激那些知道他们在谈论什么的人的一些反馈。

2 个答案:

答案 0 :(得分:27)

使用两个公式,一个用于编码gamma,另一个用于解码gamma。

当图像存储为整数强度值时,Gamma编码用于提高阴影值的质量,因此要使用公式进行伽玛编码:

encoded = ((original / 255) ^ (1 / gamma)) * 255

Gamma解码用于恢复原始值,因此其公式为:

original = ((encoded / 255) ^ gamma) * 255

如果显示器进行伽马解码,您可能需要使用第一个公式对图像数据进行编码。

答案 1 :(得分:24)

Gamma校正控制图像的整体亮度。未校正的图像可能看起来漂白或太暗。假设计算机监视器具有2.2幂函数作为电压响应曲线的强度。这只是意味着如果您向监视器发送一条消息,某个像素的强度应该等于x,它实际上会显示一个强度等于 x 2.2 的像素由于发送到显示器的电压范围介于01之间,这意味着显示的强度值将小于您希望的强度值。据说这种监视器的伽玛值为2.2

所以在你的情况下,

Corrected = 255 * (Image/255)^(1/2.2).