2009 年 8 月,苹果发布 Mac OS X 10.6 Snow Leopard 时,悄悄修改了一个很少人注意的默认设置:系统 Gamma 值从 1.8 改为 2.2。这个改动让无数设计师抱怨屏幕"突然变暗了"。但苹果并非心血来潮——这是向行业标准的靠拢。而这个被称为"Gamma"的参数,背后藏着一段横跨 80 年电视广播史的技术演化。
什么是 Gamma:一个看似简单的幂函数
Gamma 校正的本质是一个幂函数:
$$V_{\text{out}} = V_{\text{in}}^{\gamma}$$当 γ > 1 时,曲线向下弯曲,输出值被"压缩";当 γ < 1 时,曲线向上弯曲,输出值被"扩展"。这个看似简单的数学变换,却是数字图像处理的基石之一。
但要真正理解 Gamma,得从它的起源说起——那个 CRT 显示器统治世界的年代。
CRT 的"意外"遗产
阴极射线管(CRT)显示器的工作原理决定了它天生就带有非线性特性。当电子枪发射电子束轰击屏幕上的荧光粉时,光强与输入电压的关系并非线性,而是近似遵循:
$$I \propto V^{\gamma}$$其中 I 是光强,V 是输入电压,γ 大约在 2.2 到 2.5 之间。这意味着,如果输入电压是最大值的一半(0.5),实际显示的光强只有最大值的 0.5^2.2 ≈ 0.22,约 22%。这在当年是一个"意外"的物理特性,但这个意外却恰好与人眼的感知特性形成了微妙的互补。
Hewlett-Packard 的测试数据表明,不同品牌的 CRT 显示器平均 Gamma 值确实接近 2.2,这也是 sRGB 标准选择 2.2 作为参考值的重要依据。
人眼的非线性感知
人眼对亮度的感知是非线性的。这是生物学上的适应结果——让我们能在极宽的亮度范围内(约 10^6:1)辨别物体。韦伯-费希纳定律描述了这种现象:可感知的亮度变化与当前亮度的比例成正比。
换句话说,在暗部区域,我们能分辨更细微的亮度差异;而在亮部区域,同样的绝对亮度变化几乎无法察觉。

图片来源: learnopengl.com
上图展示了两行灰度条。上面一行看起来亮度均匀递增——这正是人眼感知的"线性"。但下面一行才是物理意义上的线性亮度:在暗部跳变剧烈,在亮部几乎看不出差别。
这个差异揭示了一个关键洞察:如果用线性方式编码亮度,有限的位深会被大量浪费在亮部细节上,而暗部则因为精度不足出现断层。
Gamma 编码:位深的优化分配
这正是 Gamma 编码的核心价值。通过对原始线性数据进行幂函数变换(γ ≈ 1/2.2 ≈ 0.45),可以把更多的码值分配给人眼敏感的暗部区域。

上图展示了 Gamma 编码的效果。左侧是线性编码的渐变,右侧是 Gamma 编码后的效果。注意右侧在暗部区域的过渡更加平滑——因为在 Gamma 编码后,0-0.5 的输入值大约对应 0-0.73 的输出值,获得了更多的码值分配。
Cambridge in Colour 的分析指出,如果使用线性编码,需要 11 位(约 2048 级)才能避免暗部断层;而 Gamma 编码只需要 8 位(256 级)就能达到类似的视觉质量。这对于存储和传输都是巨大的节省。
从 CRT 到 LCD:Gamma 校正的传承
CRT 显示器有一个巧合:它的物理 Gamma(约 2.2)恰好能补偿摄像机端的 Gamma 编码(约 0.45),形成一个"闭环"。这意味着把 Gamma 编码后的图像直接送给 CRT 显示,结果会自动正确。
但 LCD 显示器没有这个物理特性。LCD 的光电响应在理论上更接近线性,或者说它的"原生 Gamma"与 CRT 完全不同。为了让 LCD 显示器兼容现有的 Gamma 编码内容,制造商在显示器内部加入了查找表(LUT),通过数字信号处理来模拟 CRT 的 Gamma 特性。
这就是为什么现代 LCD 显示器仍然在"假装"自己有 Gamma 2.2 的特性——这不是物理特性,而是对历史标准的兼容。
sRGB:分段 Gamma 曲线的工程智慧
1996 年,HP 和微软联合提出了 sRGB 色彩空间,后来被 IEC 标准化为 IEC 61966-2-1:1999。sRGB 并没有采用简单的幂函数,而是使用了一个分段函数:
编码端(线性 → sRGB):
$$ C' = \begin{cases} 12.92 C & \text{if } C \leq 0.0031308 \\ 1.055 C^{1/2.4} - 0.055 & \text{if } C > 0.0031308 \end{cases} $$解码端(sRGB → 线性):
$$ C = \begin{cases} C' / 12.92 & \text{if } C' \leq 0.04045 \\ \left(\frac{C' + 0.055}{1.055}\right)^{2.4} & \text{if } C' > 0.04045 \end{cases} $$为什么要在极低亮度处使用线性段?因为纯幂函数在零点的导数为无穷大,这会导致数值计算的不稳定性。线性段避免了这个问题,同时也让曲线在接近黑电平时更加可控。

图片来源: upload.wikimedia.org
图中红色曲线是 sRGB 的传输函数,黑色虚线是纯 Gamma 2.2 幂函数。可以看到两者非常接近,但在低亮度区域有细微差异。
Mac 的 Gamma 1.8:印刷时代的遗产
苹果在 Snow Leopard 之前一直使用 Gamma 1.8,这源于桌面排版时代的历史原因。早期的 LaserWriter 打印机的"网点扩大"(dot gain)特性与 Gamma 1.8 曲线相近。在色彩管理系统尚不完善的年代,让显示器和打印机使用相似的 Gamma 值可以简化工作流——屏幕上看到的效果更接近最终打印结果。
但随着色彩管理的成熟和 sRGB 标准的普及,Gamma 1.8 的优势不再存在,反而造成了与其他平台的内容不兼容。2009 年,苹果终于顺应潮流,将默认 Gamma 改为 2.2。
Gamma 2.2 vs 2.4:环境光的考量
Windows 默认 Gamma 2.2,而电视广播标准(如 Rec. 709)常使用 Gamma 2.4。差异的根源在于观看环境。
Gamma 2.2 适用于"较暗的办公室环境"——有一定环境光,但不算明亮。而 Gamma 2.4(或 BT.1886 标准)适用于"暗室环境"——典型的家庭影院场景。在暗室中,人眼对暗部细节更敏感,稍高的 Gamma 值能让暗部层次更丰富。
BT.1886 标准甚至更进一步,它不是固定 Gamma,而是根据显示器的实际黑电平动态调整曲线:
$$L = L_W \left( \frac{V^{2.4} - V_B^{2.4}}{1 - V_B^{2.4}} \right)$$其中 L_W 是白电平(通常 100 cd/m²),V_B 是归一化的黑电平。这种设计让 BT.1886 能够适应不同对比度能力的显示器。
DCI-P3 影院标准更进一步,使用 Gamma 2.6——因为电影院是完全黑暗的环境,且数字投影仪的黑电平远低于家用显示器。
线性工作流:渲染的正确姿势
在 3D 渲染和图像处理中,Gamma 校正错误是常见的陷阱。问题出在:大多数纹理图像都是 Gamma 编码的(sRGB),但如果在 Shader 中直接使用这些值进行光照计算,结果会是错的。
物理世界的光照遵循线性叠加——两盏灯的亮度等于各自亮度的和。但 Gamma 编码的空间不满足这个性质。如果用 Gamma 编码的值做光照计算,实际上是在做:
$$(0.5^{2.2} + 0.5^{2.2})^{1/2.2} \approx 0.73$$而正确的线性计算应该是:
$$(0.5 + 0.5) = 1.0$$这意味着,未经 Gamma 校正的渲染会系统性地让光照变暗、对比度降低。

图片来源: learnopengl.com
上图对比了正确 Gamma 校正(左)和未校正(右)的渲染结果。可以看到校正后的图像暗部细节更丰富,整体光照更自然。
正确的线性工作流流程:
- 读取 sRGB 纹理时,自动转换为线性空间(GPU 通常通过
GL_SRGB格式自动完成) - 在线性空间进行所有光照和混合计算
- 最终输出时,将结果转换回 Gamma 编码空间
现代游戏引擎和渲染框架(如 Unity、Unreal Engine)都提供了线性空间渲染选项,本质上就是自动处理这个流程。
HDR 时代:从 Gamma 到 PQ
随着 HDR 显示技术的普及,传统的 Gamma 曲线面临新的挑战。HDR 内容需要表达高达 10000 nits 的亮度范围,而传统 8-bit Gamma 编码在这个范围内精度严重不足。
SMPTE ST 2084(也称 PQ,Perceptual Quantizer)应运而生。PQ 曲线基于人眼的对比度敏感度模型,能够高效地将 0.0001 到 10000 nits 的亮度范围编码到 10-12 bit:
$$V = \left( \frac{c_1 + c_2 \cdot L^{m_1}}{1 + c_3 \cdot L^{m_1}} \right)^{m_2}$$其中 L 是归一化的亮度值,c_1、c_2、c_3、m_1、m_2 是预定义的常数。
PQ 曲线与 Gamma 的本质区别在于:Gamma 是简单的幂函数,而 PQ 是基于 Barten 视觉模型设计的感知均匀编码。在 100 nits 以下,PQ 近似于 Gamma 2.4;在更高亮度区域,曲线变得更加陡峭以容纳更大的动态范围。
HLG(Hybrid Log-Gamma)则采取了不同的策略:它保留了对传统 SDR 设备的兼容性,同时通过曲线形状的变化来支持 HDR。HLG 在低亮度区域类似 Gamma 曲线,在高亮度区域则采用对数曲线。
色带问题:Gamma 校正的副作用
Gamma 校正并非没有代价。在 8-bit 环境下,对 Gamma 编码的图像进行调整(如曲线、色阶)后再转回 Gamma 空间,往往会产生色带——暗部的平滑过渡被量化台阶取代。
这是因为 Gamma 编码虽然优化了存储效率,但牺牲了计算的精度。在非线性空间进行插值和混合会产生数学上不正确的结果,而这种误差在多次处理后会累积放大。
解决方案包括:
- 使用更高位深(10-bit 或 16-bit)进行处理
- 在线性空间进行所有计算,仅在最后一步转回 Gamma 编码
- 在 8-bit 输出前添加适当的抖动
为什么 Gamma 仍然重要
在 CRT 显示器早已成为历史的今天,Gamma 校正依然不可或缺,原因有三:
存储效率:对于有限的位深(如 8-bit),Gamma 编码依然是最有效的方式,将宝贵的码值分配给人眼最敏感的暗部区域。
兼容性:几乎所有的图像格式(JPEG、PNG)、视频编码(H.264、HEVC)和显示设备都基于 Gamma 编码的标准(sRGB、Rec.709)。
感知均匀性:Gamma 编码后的数值变化与人眼感知的亮度变化更加一致,这使得图像处理算法(如直方图均衡化)在 Gamma 空间更加直观有效。
Gamma 校正从 CRT 的物理特性出发,最终成为数字图像处理的基石。它是一个工程师们"因祸得福"的案例——物理上的不完美恰好匹配了人类感知的非线性,而这个巧合被标准化、传承,并在 LCD 和 OLED 时代继续发挥作用。理解 Gamma,就是理解数字图像如何从物理世界映射到我们的感知世界。
参考文献
-
International Electrotechnical Commission. IEC 61966-2-1:1999 - Multimedia systems and equipment - Colour measurement and management - Part 2-1: Colour management - Default RGB colour space - sRGB. 1999.
-
ITU-R Recommendation BT.1886 - Reference electro-optical transfer function for flat panel displays used in HDTV studio production. 2011.
-
ITU-R Recommendation BT.709-6 - Parameter values for the HDTV standards for production and international programme exchange. 2015.
-
SMPTE ST 2084:2014 - High Dynamic Range Electro-Optical Transfer Function of Mastering Reference Displays.
-
Poynton, Charles. “Gamma and Its Disguises.” Journal of the Society of Motion Picture and Television Engineers, 1993.
-
Ebner, Fritz, and Mark D. Fairchild. “Development and testing of a color space (IPT) with improved hue uniformity.” IS&T/SID Sixth Color Imaging Conference, 1998.
-
Wikipedia contributors. “Gamma correction.” Wikipedia, The Free Encyclopedia.
-
Cambridge in Colour. “Understanding Gamma Correction.” https://www.cambridgeincolour.com/tutorials/gamma-correction.htm
-
LearnOpenGL. “Gamma Correction.” https://learnopengl.com/Advanced-Lighting/Gamma-Correction
-
Apple Inc. “Mac OS X v10.6 Snow Leopard: About gamma 2.2.” Technical Note TN2263, 2009.
-
Barten, Peter G. J. “Contrast sensitivity of the human eye and its effects on image quality.” SPIE Press, 1999.
-
Reinhard, Erik, et al. “High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting.” Morgan Kaufmann, 2010.
-
Colour Science. “sRGB EOTF: Pure Gamma 2.2 or Piece-Wise Function?” https://www.colour-science.org/posts/srgb-eotf-pure-gamma-22-or-piece-wise-function/
-
Light Illusion. “What is HDR?” https://lightillusion.com/what_is_hdr.html
-
EIZO. “Understanding Monitor Gamma & Gamma Correction.” https://www.eizo.com/library/basics/lcd_display_gamma/