Image 伽马校正公式:.^(伽马)或.^(1/伽马)?

Image 伽马校正公式:.^(伽马)或.^(1/伽马)?,image,gamma,Image,Gamma,我正在寻找一个简单的灰度图像伽马校正公式,其值介于0和255之间 假设我的屏幕的伽马值是2.2(这是一个LCD屏幕,所以我可能需要用一个更复杂的过程来估计它,但假设我的屏幕运行良好) 下列哪一个公式是正确的 Corrected=255*(图像/255)。^2.2 或 Corrected=255*(图像/255)。^(1/2.2) (这些代码注定是MATLAB代码,但我希望即使是非MATLAB人员也能理解) 我在互联网上四处寻找,但发现两个公式都适用。我怀疑(2)是正确的,我的困惑是因为倾向于将“

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

假设我的屏幕的伽马值是2.2(这是一个LCD屏幕,所以我可能需要用一个更复杂的过程来估计它,但假设我的屏幕运行良好)

下列哪一个公式是正确的

  • Corrected=255*(图像/255)。^2.2
  • Corrected=255*(图像/255)。^(1/2.2)
  • (这些代码注定是MATLAB代码,但我希望即使是非MATLAB人员也能理解)


    我在互联网上四处寻找,但发现两个公式都适用。我怀疑(2)是正确的,我的困惑是因为倾向于将“伽马值”称为实际伽马值的倒数,但我真的希望知道他们在说什么的人提供一些反馈…

    两个公式都使用,一个用于编码伽马,另一个用于解码伽马

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

    encoded = ((original / 255) ^ (1 / gamma)) * 255
    
    Gamma解码用于恢复原始值,因此公式为:

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

    如果监视器执行gamma解码,您可能希望使用第一个公式对图像数据进行编码。

    gamma校正控制图像的整体亮度。未经校正的图像可能被漂白或太暗。假设一台计算机显示器具有
    2.2
    功率函数作为强度-电压响应曲线。这只是意味着,如果您向监视器发送一条消息,说明某个像素的强度应等于
    x
    ,它实际上将显示一个强度等于x2.2的像素,因为发送到监视器的电压范围在
    0
    1
    之间,这意味着显示的强度值将小于您希望的强度值。据说这种监视器的伽马值为
    2.2

    所以在你的情况下

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

    你问得对。这一切都很混乱。很好,但要小心。在第一个公式中,
    original
    是来自渲染器的合成值。(光线跟踪、光栅等)。在线性(物理)空间中。如果
    original
    是照片或纹理的像素,则不应用任何公式,因为它们已进行伽马编码。如果你这样做,你只会做两次。这就是事情变得复杂的地方,如果你把纹理作为渲染器的输入?您需要先应用公式2进行线性化,然后进行数学运算,然后将gamma返回存储。如何知道logitech camera捕获的图像中使用了哪个gamma值?@Abc:对于打算在常规屏幕上显示的图像,gamma值通常为2.2。通常是使用sRGB或Adobe RGB颜色空间的JPEG图像。