# SDR与HDR


## ***HDR介绍***

1. ***更高的峰值亮度 (Higher Peak Brightness)***
   - *HDR将亮度上限提升了几个数量级，通常要求达到 1000尼特 (nits) 甚至更高。这使得画面不仅整体更亮，更重要的是能够呈现出惊人的对比度和高光细节。阳光不再是一片死白，而是耀眼且有层次的光源；阴影下的细节也依然清晰可见。*

2. ***更宽的色域 (Wider Color Gamut - WCG)***
   - *HDR标准强制要求使用广色域，通常是 DCI-P3 或更广的 Rec. 2020。这意味着HDR内容可以展现出远超sRGB的色彩，画面更生动、更饱和、更接近真实。*
3. ***更高的色深 (Higher Bit Depth)***
   - *HDR强制要求至少使用 10-bit 色深，每个颜色通道有1024个色阶，总共能显示超过 10.7亿 种颜色。这使得色彩过渡无比平滑，彻底告别了SDR时代的色彩断层问题。*

### ***HDR10：开放的入门标准***

*为了统一HDR内容的制作和显示，行业推出了多种标准，其中最主流的是：*

- *定义： HDR10是目前最常见、最基础的HDR开放标准。你可以把它看作是进入HDR世界的“通行证”。*
- *核心技术栈：*
  - *转换函数：采用 PQ (Perceptual Quantizer) 曲线，一种为HDR设计的、更符合人眼感知特性的伽马曲线。*
  - *色域： Rec. 2020*
  - *色深：10-bit*
- *元数据 (Metadata)：HDR10使用静态元数据。这意味着它会告诉显示器整部影片的亮度信息（例如“这部电影最亮的地方有多亮”）。*
  - *MaxCLL (Maximum Content Light Level): 内容的最大亮度，即整个影片中最亮像素的尼特值。*
  - *MaxFALL (Maximum Frame-Average Light Level): 最大帧平均亮度，即整部影片中平均亮度最高的那一帧的平均尼特值。*
- *局限性：由于元数据是静态的，显示器只能用一套方案来处理整部电影，这在明暗场景频繁切换时可能不是最优解。*

### ***Dolby Vision & HDR10+：更智能的动态标准***

- *为了解决HDR10的局限性，杜比实验室推出了 Dolby Vision，三星等厂商则推出了 HDR10+。它们最大的升级在于引入了动态元数据 (Dynamic Metadata)。*
- *核心优势： 动态元数据可以为电影的每一帧或每一个场景提供独立的优化信息。这意味着显示器可以根据当前画面的具体内容，实时调整亮度和色彩映射，从而在任何场景下都能获得最佳的显示效果。*

### ***HLG (Hybrid Log-Gamma)：为广播而生***

- *HLG主要由英国BBC和日本NHK联合开发，专为电视广播设计。它最大的特点是向后兼容，同一个HLG信号源既可以在HDR电视上显示出HDR效果，也可以在SDR电视上正常显示为SDR图像，极大地简化了电视广播的流程。*

## ***SDR介绍***

1. ***有限的峰值亮度 (Lower Peak Brightness)***
   - *SDR内容的亮度上限通常被设定在 100尼特 (nits) 左右。这大致相当于一台普通办公显示器的亮度。这意味着它无法再现真实世界中刺眼的强光，比如正午的太阳、水面的波光粼粼或是车灯的炫光。所有高光部分的细节都会被“削平”成一片白色。*
2. ***受限的色域 (Limited Color Gamut)***
   - *SDR标准通常绑定 sRGB 色彩空间。正如我们之前讨论的，sRGB的色彩范围相当小，无法显示许多自然界中存在的鲜艳颜色，例如法拉利的深邃红色、热带雨林的翠绿色或是霓虹灯的荧光色。*
3. ***较低的色深 (Lower Bit Depth)***
   - *SDR通常使用 8-bit 色深，这意味着每个颜色通道（红、绿、蓝）有256个色阶，总共约 1670万 种颜色。在显示平滑的颜色渐变时（如日落的天空），这往往会导致明显的色彩断层 (Banding)。*

## ***OETF & EOTF***

*OETF 指的是光电转换函数。 摄像机利用光电转换器将光信号转换为电信号*

*EOTF 与 OETF 相反，它指的是“电光传输函数”。 电视显示器通过 EOTF 来计算输出光的功率*

| *名称*                                         | *方向*        | *作用*                       | *常见例子*         |
| ---------------------------------------------- | ------------- | ---------------------------- | ------------------ |
| ***EOTF** (Electro-Optical Transfer Function)* | *数码值 → 光* | *显示设备响应*               | *PQ / HLG / Gamma* |
| ***OETF** (Opto-Electronic Transfer Function)* | *光 → 数码值* | *相机编码*                   | *sRGB / Rec.709*   |
| ***线性化***                                   | *反函数*      | *把非线性编码“解码”回线性光* |                    |

## ***色域 (Wide Color Gamut)***

*色域范围比传统的 sRGB 更宽的叫做宽色域*

### ***sRGB***

![sRGB](https://raw.githubusercontent.com/vlicecream/cloudImage/main/image-20251013233217806.png)

*sRGB的色域范围很窄*

### ***Adobe RGB***

*这是 Adobe RGB 色彩空间。*

*最流行的宽色域。这种色域仅在绿色方面比 sRGB 更宽。但有很多设备都支持这种色域。所以这种色域将是很好的第一步。*

![Adobe RGB](https://raw.githubusercontent.com/vlicecream/cloudImage/main/image-20251013233341045.png)

### ***BT.2020 (Rec.2020)***

*这是 BT.2020 色域。*

*一系列标准的高动态范围电视。 它有不同的名称，比如国际电信联盟无线电通信部门的推荐标准 BT.2020，或者简称为 Rec.2020，但其实意思是一样的。*

*所有原色都在色谱线上。 这意味着这种效果在实际的显示器上很难实现。 所以到了 2018 年，还没有任何电视显示器能够实现 100% 的这种色域覆盖范围。*

![BT.2020 (Rec.2020)](https://raw.githubusercontent.com/vlicecream/cloudImage/main/image-20251013233523175.png)

### ***DCI-P3***

*广泛用于电影分级，iphone一直在用的色域，现在有些显示器也在用*

![DCI-P3](https://raw.githubusercontent.com/vlicecream/cloudImage/main/image-20251013233739812.png)

### ***ACEScg***

*ACES是学院色彩编码系统，用于渲染与合成，所以游戏很多会用*

*ACEScg 又称 ACES AP1*

![ACEScg](https://raw.githubusercontent.com/vlicecream/cloudImage/main/image-20251013233815162.png)

### ***ACES2065-1***

*该色域设计与存储图像 覆盖了整个光谱，所以会存在色彩精度丢失情况*

*ACES2065-1又称ACES AP0*

![ACES2065-1](https://raw.githubusercontent.com/vlicecream/cloudImage/main/image-20251013233934646.png)

## ***Tone Mapping Variations***

### ***ACES RRT + ODT***

*他是一个基于富士胶片的胶片特性*

*RRT 就是 参考渲染变换，他将屏幕线性颜色转换成胶片颜色*

*ODT 就是 输出设备变换，他将屏幕颜色转换成设备信号*

*优点*

1. *专业设计*

*缺点*

1. *ODT只支持 1000/2000/4000尼特显示设备*

## ***CIE XYZ***

***CIE**（国际照明委员会）*

***CIE XYZ 是一个“设备无关”的“主”色彩空间，它用数学方式定义了普通人眼能看见的所有颜色。***

*它是所有色彩空间转换的中间人。当你想把一张P3色域的图片转换到sRGB色域时， 标准流程是：**P3 -> CIE XYZ -> sRGB***

## ***集中谈论各种"空间"***

### ***第一层：基础理论与通用标准***

*这一层是理解所有色彩管理的基础，它们是规则和度量衡。*

#### ***CIE 1931 XYZ 空间：色彩世界的“总目录”***

*   ***核心定义：*** *这是一个特殊的、设备无关的色彩空间，它使用数学方式定义了标准观察者（模拟普通人眼）能看见的所有颜色。*
*   ***关键特性：*** *XYZ 空间是所有现代色彩科学的基石。它本身不用于直接显示或创作，而是作为所有其他色彩空间进行转换时的“通用翻译官”或“绝对参考系”。*
*   ***工作流程：*** *当你需要精确地从一个色彩空间转换到另一个时（例如 Adobe RGB -> sRGB），标准流程就是通过XYZ作为中间站：Adobe RGB -> XYZ -> sRGB。这确保了转换的最高精度。*

#### ***线性工作流 (Linear Workflow)：符合物理的计算方式***

*   ***核心定义：*** *它不是一个“色彩空间”，而是一种*工作方式或数学状态*。在这种状态下，颜色数值与光的物理能量严格成正比*。
*   ***关键特性：*** *数值翻倍，光的物理能量也翻倍。例如，强度为 0.2 的光和强度为 0.5 的光混合，其物理结果就是 0.7。所有需要模拟真实世界光照的计算（如渲染、合成、光照混合）都必须在线性空间下进行，否则结果将是错误的。*
*   ***与人眼感知的关系：*** *我们的眼睛和显示器都是非线性的。为了高效地存储和显示图像（用更少的数据记录更多人眼敏感的暗部细节），图像通常会经过“伽马校正(Gamma Correction)”处理。因此，我们可以简单总结：*
    *   ***线性空间***：*为机器计算而生，追求物理正确。*
    *   ***伽马/感知空间 (非线性)**：为人眼观看和数据存储而生，追求视觉效率。*

---

### ***第二层：具体的色彩空间“产品”***

*这些是我们日常工作中实际接触到的“容器”，它们都定义了自己的色域范围和（通常是非线性的）编码方式。*

#### ***sRGB 家族：互联网的通用语***

*它们共享相同的色域，但有不同的工作方式。*

*   ***sRGB (标准)***
    *   ***定义：*** *一个非线性的色彩空间，是互联网、消费级电子产品（显示器、相机）和操作系统的通用标准。*
    *   ***特性：*** *它是最古老、最通用、但色域（能显示的颜色范围）也相对最小的标准。几乎所有未经色彩管理的图片和视频都默认为sRGB。*

*   ***sRGB 线性空间 (sRGB Linear)***
    *   ***定义：*** *拥有和 sRGB 完全相同的色域，但是移除了伽马校正，使其成为一个线性空间。*
    *   ***用途：*** *它是进行色彩计算的“预备步骤”。当你需要对一张sRGB图片进行正确的亮度调整或颜色混合时，必须先将它从标准的sRGB转换到sRGB线性空间，计算完成后，再转回标准sRGB进行显示或保存。*

*   ***scRGB***
    *   ***定义：*** *可以看作是 sRGB 线性空间的“HDR超级版”。它共享sRGB的色域，本身就是线性的，但最关键的特性是：允许颜色数值超出 [0, 1] 的范围。*
    *   ***用途：*** *它的设计目标是在操作系统层面（特别是Windows）无缝地混合SDR和HDR内容。*
        *   *SDR内容(如记事本) 在 scRGB 中值依然在 `[0, 1]` 范围内。*
        *   *HDR内容(如HDR视频中的太阳) 在 scRGB 中可以拥有 `10.0`, `100.0` 甚至更高的值。*
        *   *由于整个环境是线性的，操作系统可以简单地对这些不同亮度的内容进行物理正确的混合与叠加，最后再统一输出到显示器。*

#### ***广色域家族：更丰富的色彩世界***

*这些空间的色域都比sRGB更广，能显示更生动、更丰富的颜色。*

*   ***Adobe RGB***
    *   ***定义：*** *一个非线性色彩空间，主要扩展了sRGB在绿色和青色方向的范围*
    *   ***用途：*** *广泛应用于专业摄影和印刷出版领域。*
    *   ***线性版本 (Adobe RGB Linear)：*** *同样地，在需要对其进行计算时，需要先转换到其线性版本。*

*   ***DCI-P3***
    *   ***定义：*** *一个非线性色彩空间，是数字电影行业的标准。相比sRGB，它在红色和绿色方向有显著扩展。*
    *   ***用途：*** *广泛用于电影院、高端消费电子设备（特别是苹果的iPhone、iPad、Mac）的屏幕。*
    *   ***线性版本 (DCI-P3 Linear)：*** *在游戏引擎或渲染器中，当目标显示设备是P3屏幕时，常会使用其线性版本进行计算。*

*   ***Rec.2020 (或 BT.2020)***
    *   ***定义：*** *为超高清（4K/8K）和HDR视频制定的非线性色彩空间。它通常与 PQ 或 HLG 伽马曲线配合使用。*
    *   ***特性：*** *拥有极其宽广的色域，是目前消费级显示的终极目标，但绝大多数现有显示器都无法100%覆盖。*
    *   ***线性版本 (Rec.2020 Linear)：*** *在HDR渲染管线中，当需要处理广色域内容时，其线性版本是进行光照计算的核心工作空间之一。*

#### ***ACES 家族：工业级标准化流程***

*ACES不只是一个色彩空间，它是一整套用于影视和游戏行业的色彩管理框架。并且 ACES 本身就是线性空间*

*例如：Unreal 的色彩空间采用的则是 ACES*

*   ***ACEScg (AP1)***
    *   ***定义：*** *一个原生线性的色彩空间，拥有非常宽广的色域（AP1原色）*
    *   ***用途：*** *被设计为CG渲染和视觉特效合成的理想工作空间。它的色域足够大，可以容纳任何摄像机捕捉到的色彩，并为调色和特效处理提供充足的“运算空间”。*

*   ***ACES2065-1 (AP0)***
    *   ***定义：*** *ACES框架中色域最大的原生线性空间（AP0原色），其色域设计为完全包围人眼可见光谱。*
    *   ***用途：*** *作为项目的“数字母带”和“数据交换”的标准。当你需要将项目文件长期归档，或在不同公司之间传递时，使用此空间可以确保没有任何色彩信息会因转换而丢失。*

## ***示例：Rec.2020 -> sRGB***

```scss
Rec.2020 (非线性)
 → [解码 EOTF]
 → Linear Rec.2020
 → [乘以色域变换矩阵]
 → Linear XYZ
 → [乘以色域变换矩阵]
 → Linear sRGB
 → [应用 sRGB OETF]
 → sRGB (非线性)
```

| 步骤                          | 说明                                                         |
| ----------------------------- | ------------------------------------------------------------ |
| ***1️⃣ 解码 EOTF***             | *把 Rec.2020（可能是 Gamma2.4 / PQ / HLG）反线性化为真实的光强响应值。输出是 Linear Rec.2020。* |
| ***2️⃣ 转换到 XYZ***            | *使用固定的 3×3 原色矩阵，从 Rec.2020 转换到 CIE 1931 XYZ（标准视觉空间）。* |
| ***3️⃣ 从 XYZ 到 Linear sRGB*** | *使用另一个 3×3 矩阵，从 XYZ 转成 sRGB 原色定义的线性空间。* |
| ***4️⃣ 应用 sRGB OETF***        | *对 Linear sRGB 再套上 sRGB 的 gamma（ ≈ 2.2），得到最终非线性 sRGB。* |


