2. 色彩科学基础:CIE 1931色度图、色域、白点与Gamma/PQ/HLG曲线
在HDR显示链路中,色彩科学是连接物理光信号与视觉感知的数学桥梁。本章将系统梳理CIE 1931色度图、三大标准色域(BT.709、DCI-P3、BT.2020)、关键白点(D65、D50)以及光电转换曲线(Gamma、PQ、HLG)的核心概念与工程参数。
2.1 CIE 1931色度图:色彩度量的“世界地图”
CIE 1931色度图是由国际照明委员会(CIE)在1931年基于人眼视觉实验建立的色彩描述模型。它通过三个假想的原色(X、Y、Z)将可见光谱映射到二维平面,其中Y分量同时携带亮度信息。
- 马蹄形边界:代表单色光谱轨迹(380nm-780nm),是人眼可见颜色的物理极限。
- 内部区域:所有可能的混合色,饱和度从边界向中心递减。
- 等温线:连接不同色温点的直线,用于定义白点位置。
2.2 三大标准色域:BT.709、DCI-P3、BT.2020
色域是显示设备所能呈现的颜色范围,在CIE 1931色度图上表现为一个三角形(由红、绿、蓝三原色坐标围成)。不同标准针对不同应用场景定义了不同的色域范围。
| 色域标准 | 应用场景 | 红原色 (x, y) | 绿原色 (x, y) | 蓝原色 (x, y) | 白点 | 覆盖CIE面积 |
|---|---|---|---|---|---|---|
| BT.709 | HDTV、SDR内容 | (0.640, 0.330) | (0.300, 0.600) | (0.150, 0.060) | D65 | 约35.9% |
| DCI-P3 | 数字影院、HDR显示 | (0.680, 0.320) | (0.265, 0.690) | (0.150, 0.060) | D65(显示)/ D50(影院) | 约45.5% |
| BT.2020 | UHDTV、HDR广播 | (0.708, 0.292) | (0.170, 0.797) | (0.131, 0.046) | D65 | 约75.8% |
2.3 白点:D65与D50
白点定义了显示设备在显示“白色”时的色度坐标,是色域三角形的重要参考点。不同白点对应不同的色温,直接影响画面的整体色调。
- D65(标准照明体D65):色温约6504K,CIE坐标(x=0.3127, y=0.3290)。是HDTV、UHDTV、互联网视频和绝大多数显示设备的标准白点。
- D50(标准照明体D50):色温约5003K,CIE坐标(x=0.3457, y=0.3585)。常用于印刷、摄影和数字影院(DCI-P3影院标准)。
2.4 Gamma曲线与PQ/HLG曲线
光电转换函数(OETF/EOTF)决定了数字信号与显示亮度之间的映射关系。SDR时代广泛使用Gamma曲线,而HDR时代则引入了PQ(Perceptual Quantizer)和HLG(Hybrid Log-Gamma)两种核心曲线。
2.4.1 Gamma曲线(SDR)
Gamma曲线源于CRT显示器的物理特性,其数学形式为:L = Vγ,其中L为亮度,V为电压/数字信号,γ通常为2.2(显示端)或2.4(广播端)。
- 编码Gamma(OETF):约0.45(即1/2.2),用于将场景线性光压缩为非线性信号。
- 解码Gamma(EOTF):约2.2-2.4,用于将信号还原为显示亮度。
- 系统Gamma:编码与解码的乘积,通常为1.1-1.2(考虑观看环境)。
2.4.2 PQ曲线(Perceptual Quantizer,ST 2084)
PQ曲线由Dolby提出,后被纳入SMPTE ST 2084标准,是HDR显示的核心EOTF。其设计基于人眼视觉的对比度敏感度函数(CSF),在低亮度区域分配更多码值,高亮度区域分配更少码值,从而实现10,000 cd/m²的亮度范围。
| 参数 | Gamma (SDR) | PQ (HDR) | HLG (HDR) |
|---|---|---|---|
| 峰值亮度 | 100 cd/m² | 10,000 cd/m² | 1,000+ cd/m²(可变) |
| 黑电平 | 0.1 cd/m² | 0.005 cd/m² | 0.005 cd/m² |
| 位深需求 | 8-bit | 10-12 bit | 10-12 bit |
| 兼容SDR | — | 否(需元数据映射) | 是(后向兼容) |
| 主要标准 | BT.1886 | SMPTE ST 2084 | ITU-R BT.2100 |
2.4.3 HLG曲线(Hybrid Log-Gamma)
HLG由BBC和NHK联合开发,被纳入ITU-R BT.2100标准。其特点是在信号的低半部分使用Gamma曲线(兼容SDR),高半部分使用对数曲线(扩展HDR高光),无需元数据即可在SDR和HDR设备上显示。
2.5 色彩空间转换实战要点
在HDR链路中,色彩空间转换(CSC)是连接不同色域、白点和EOTF的桥梁。以下是一个典型的转换流程:
- 解线性化:根据源EOTF(PQ/HLG/Gamma)将非线性信号还原为线性光。
- 色域矩阵变换:通过3x3矩阵将源色域(如DCI-P3)转换到目标色域(如BT.2020)。
- 白点色适应:使用Bradford或CAT02矩阵将白点从D65转换到D50(或反之)。
- 再线性化:根据目标EOTF将线性光重新编码为非线性信号。
- 色调映射(可选):当源亮度范围超过目标设备时,需进行色调映射(如从10,000 nit映射到1,000 nit)。
import numpy as np
# BT.709 to DCI-P3 色域转换矩阵(示例值)
M_709_to_P3 = np.array([
[0.8225, 0.1775, 0.0000],
[0.0332, 0.9668, 0.0000],
[0.0171, 0.0724, 0.9105]
])
def convert_color_space(rgb_709):
"""将BT.709 RGB转换到DCI-P3 RGB"""
rgb_linear = inverse_gamma(rgb_709) # 解Gamma
rgb_p3 = np.dot(M_709_to_P3, rgb_linear)
return apply_gamma(rgb_p3) # 重新编码