opengl 无法理解伽马校正

z3yyvxxp  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(120)

我试图理解伽马校正,我不理解这么多的东西。我知道有这么多的问题问这里,但我仍然感到困惑,所以决定张贴我的困惑在这里。
点的概念,我有(这并不意味着我能够互连他们)后,阅读许多博客和观看一系列的youtube视频。
1.我们的眼睛以对数的方式感知照度,传感器在感知时存储照度。
1.当图像以伽马编码存储时,它们被存储为y = (x)^(1/2.2)(对于伽马2.2),并被解码为y = x^2.2(对于显示伽马2.2)
1.即使照度很小,我们的眼睛也会将其视为更亮的输出(感谢对数感知)[我希望我在这里没有错,这就是我们需要伽马校正的原因(我猜)]
我的困惑是:
1.如果在编码和解码之后,输出将是线性的,就像它被传感器感知到的那样,那么为什么我们首先需要编码和解码。
1.我在一个博客中发现了一条声明,“当保存数字图像时,它是伽马编码的,因此文件中的两倍值更接近于我们所感知的两倍亮度”。
1.我看到博客和教程说:“* 目标是根据我们的眼睛如何感知光线来分配照度值,而不是相机如何感知光线。*”我不明白如果我的眼睛是线性曲线,那就是相机如何感知光线,那么这种说法如何有意义。

  1. Gamma编码图像更有效地存储色调。我不明白如何存储线性数据到多项式使存储音调更有效。
    1.我认为这是一个很大的声明,我无法理解“伽马编码重新分配色调水平更接近我们的眼睛如何感知它们”。
    有没有人可以帮我连接点在这里。谢谢你
kyvafyod

kyvafyod1#

伽马校正实际上与我们的眼睛关系不大。它与我们的“显示”设备有关。特别是阴极射线管显示器。
阴极射线管显示器的核心工作原理是向荧光屏发射电子束,使荧光屏在短时间内发光。当以恒定速率扫描屏幕时,任何一个位置的亮度由电子束的强度决定,而该强度由进入电子束发射器的电压决定。
基于CRT的电视摄像机有效地做了相反的事情:它扫描整个图像,将图像每个部分的亮度转换为电压。该电压被调制成广播信号。电视机将信号反调制为电压,并将电压施加到自己的电子束上。
但问题是电压和由电子束引起的最终亮度之间的关系不是线性关系。也就是说,两倍的电压不会导致两倍的亮度。亮度与电压的γ次方(希腊字母gamma)成正比。对于特定的电视,γ的确切值是可变的,但它们大多徘徊在2.2左右。
对于基于CRT的视频广播,这很好:广播公司反过来也有同样的问题。当它将亮度转换为信号时,它在功能上应用反函数,将亮度提高到1/γ的幂。
当我们想开始将计算机插入CRT时,我们需要应用相同的概念。输出的信号必须提高到1/γ的幂,以便显示所需的亮度。不过,电脑显示器硬件一般不会这样做,所以它们的颜色看起来很奇怪。因此,找到了软件解决方案。具体来说,软件将生成1/γ次幂的颜色。图形硬件将按原样发送数据,监视器将取消伽马校正,从而生成预期的颜色。
现在,你可能想知道为什么这很重要。你没有使用CRT,如果你足够大,可能已经好几年没有见过CRT了。嗯,在CRT与LCD和其他显示技术的相关性之间有很长一段时间。为了能够消耗用于CRT的信号,他们必须 * 假设 * 信号是伽马校正的。
他们一直在这样做,因为即使是图像格式也希望像素数据经过伽马校正。图像编辑软件在伽马校正空间中工作,并生成伽马校正的图像。因此,当您将像素作为纹理进行采样(将其转换为线性颜色值)时,您需要取消像素的校正,对它们进行线性数学运算,然后在写入显示图像时将其转换回Gamma校正。

4c8rllxm

4c8rllxm2#

当将图像从传感器保存到文件时,数据通常是量化的(从10或12位到8位)。这导致小的量化误差。为了使误差在动态范围内(从黑到白色)的任何地方都最不易察觉,我们希望增加暗强度之间的距离(在那里我们看到较小的强度差异),以换取减少亮强度之间的距离。
当然,存储完整的10位或12位原始数据更好,但这样你就会得到与许多图像显示程序不兼容的文件。

相关问题