graphics - 为什么 Gamma 校正应用于 RGB 而不是 YUV 或类似的?

标签 graphics colors computer-vision

据我了解, Gamma 校正用于将现实世界中的高亮度范围调整为显示器中相对较低的亮度范围。 如果它的目标是调整亮度,为什么它会独立应用于所有 RGB channel ?

在包含亮度(如 YUV)的大多数流行颜色模型中,亮度项本身是使用 RGB channel 的不同系数计算的。那么为什么所有 RGB 颜色的 Gamma 系数都相同呢?为什么仅将此系数应用于光度项并保持颜色空间不变(在 YUV 模型的情况下为 UV 项)是不合逻辑的?

这是否与人眼中存在三种或多或少对应于 RGB 颜色的视锥细胞这一事实有关? 但即使视锥细胞彼此独立适应,它们的光强也应该通过晶状体和瞳孔的作用统一调节。

最佳答案

Gamma 校正的目的不是降低相对亮度,而是以感知统一的方式对值进行编码,这将优化代码分配,从而与相同值的线性编码相比减少量化伪像。

事实上大多数光电传递函数(OETF/OECF)和电光传递函数(EOTF/EOCF)如sRGB,BT.709 , BT.1886基于幂函数的( Gamma )不会影响黑白电平。

显示链/系统输入和输出中不同指数的组合将产生端到端系统 Gamma ,它可能会根据合适的结果增加或减少视觉对比度(这称为图片渲染)。例如,HDTV 广播通常使用 BT.709 (gamma ±0.5) 作为源数据的编码函数(如使用 HDTV 摄像机拍摄),并由您的电视使用 BT.1886 (gamma 2.4) 解码,从而产生结束- ±1.2 的端到端系统 Gamma ,适合昏暗的观看条件。

Y'UV colourspace ,(注意我在 Y 上加了一个素数),Y' 不代表 relative Luminance 而是代表 luma,它是一个非线性分量:它已经通过 mean 编码了OETF(即在这种情况下的 Gamma 编码函数)。类似地,U 和 V 分量是非线性的,因为它们是由已经非线性的 R'G'B' 分量形成的。

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

我强烈建议您看看 Charles Poynton 的 Gamma Faq .

我还建议您关注我们的 The Importance of Terminology and sRGB Uncertainty slides ,他们应该让您了解正确的术语并介绍重要的概念。

关于graphics - 为什么 Gamma 校正应用于 RGB 而不是 YUV 或类似的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38750069/

相关文章:

algorithm - 什么是最新最好的人脸识别算法?

c# - 在 XNA 中更改 BackBuffer 高度/宽度 - 不需要的结果

objective-c - 如何使用 Xcode 在 Mac OS X 上的 Obj-C 中仅用几行在窗口 Canvas 上绘制/绘制/渲染点或为像素着色?

php - 突出显示数据库的结果

html - 这个模型的 CSS+HTML?

python - cv2.triangulatePoints 是不是很准确?

c# - 如何确定 GDI+ 中两条线的交点?

c++ - 硬编码 HLSL 着色器

colors - mercurial 颜色扩展的有效颜色是什么?

python - OpenCV cap.get(cv2.CAP_PROP_FRAME_COUNT)返回-1