为什么要对RGB进行伽马校正而不是YUV或类似的颜色空间?

3
据我所知,伽马校正是用来将现实世界中的高亮度范围调整为显示器中相对较低的亮度范围。 如果它的目标是调整亮度,为什么要独立地应用于所有RGB通道呢?
在大多数包含亮度的流行色彩模型(如YUV)中,亮度项本身是使用不同系数计算RGB通道的。那么为什么伽马系数对于所有RGB颜色都是相同的呢?为什么不仅将此系数应用于亮度项,而保持颜色空间不变(在YUV模型的情况下是UV项)呢?
这是否与人眼中有三种锥形细胞,它们或多或少对应于RGB颜色有关? 但即使锥细胞独立适应,其所有光强度也应通过镜头和瞳孔的作用得到统一调整。

@kel solaar回答得最好,所以我不再重复,但是只是挑刺,请在讨论伽马编码的视频Y'时不要使用术语"亮度(luminosity)"。正确的术语应该是"亮度值(luma)"。亮度是线性的(没有曲线,伽马1.0),就像现实世界中的光一样。亮度是每单位时间发射的能量。在讨论伽马编码图像时,两个术语都不应使用。[请参见Gamma FAQ。](https://poynton.ca/notes/colour_and_gamma/GammaFAQ.html) - Myndex
2个回答

1
Gamma校正的目的不是为了降低相对亮度,而是为了以感知均匀的方式编码值,这将优化代码分配,从而与线性编码相比减少量化伪像。实际上,大多数光电传输函数(OETF / OECF)和电光转换函数(EOTF / EOCF),如sRGB、BT.709BT.1886等都是基于幂函数(gamma),不会影响黑白级别。

在显示链/系统输入和输出处使用不同的指数组合会导致端到端系统伽玛增加或降低视觉对比度,具体取决于适合的结果(这称为图像渲染)。例如,HDTV广播通常使用BT.709(伽马±0.5)作为源数据的编码函数(如使用HDTV摄像机拍摄),并由您的电视使用BT.1886(伽马2.4)解码,从而产生一个±1.2的端到端系统伽玛,适用于昏暗的观看条件。

Y'UV颜色空间中(请注意,我在Y上放了一个撇号),Y'不代表相对亮度,而是luma,这是一个非线性组件:它已经通过OETF的平均值进行了编码(在这种情况下是伽马编码函数)。类似地,U和V分量也是非线性的,因为它们是从已经非线性的R'G'B'分量形成的。

计算luma确实与人类视觉系统的敏感性密切相关,正如您可以从使用的加权因子中看到的那样: Y' = 0.299 * R' + 0.587 * G' + 0.114*B'

我强烈建议您查看Charles Poynton的Gamma Faq
我还建议您关注我们的术语重要性和sRGB不确定性幻灯片,它们应该帮助您掌握正确的术语并介绍重要的概念。

1

最初,伽马校正是为了应对电视中使用的阴极射线管的非线性而引入的,因为应用的电压和发射的亮度之间没有严格的比例关系。

当时,工程师们发现在广播站引入校正比在每个接收器中引入更经济。这就是为什么校正实际上是一种“预补偿”,传输的图像被扭曲。

即使现在使用的技术完全不同,由于惯性和其他机会原因,向后兼容性得到保持。在数字相机/彩色图像处理/显示屏领域存在/不存在预补偿/伽马强制的情况非常混乱。


实际上,伽马仍然很重要,以便最大限度地利用代码值,在接近人类感知的非线性方式下对图像数据进行编码。此外,添加伽马曲线“在传输之前”不仅仅是经济上的考虑,伽马编码发生在相机中,有助于减少信号中噪声的感知。 - Myndex
关于“完全混乱”,伽马标准已经被明确定义。sRGB是Web的标准,Rec709是HDTV的标准,等等。这些标准都可以作为ICC配置文件使用。然而,显示器的伽马值可以和应该根据环境光线进行调整,因为环境光线会影响感知意图。请参阅Poynton的Gamma FAQ 了解伽马值的相关知识。 - Myndex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接