本文整理了 Apple Developer 中一个 6 分钟的 Tech-Talk 《An Introduction to HDR Video》 所涉及的知识点。
颜色
色彩空间
通过一组维度的坐标来定义颜色,坐标系统定义的色彩范围为色彩空间,比如 RGB 色彩空间(通过 RGB 三维的强度值来定义)。
色域
在某种色彩空间下定义的颜色范围,是数据交换时颜色定义和表示的通用协议,x 红,y 绿,1 - x - y 蓝
色彩深度
色域内可以细分的色彩数量,输出强度无法线性过渡,所以只能固定分位值。以每个通道输出强度可以映射成 n 个二进制 bit 的状态,n 位即可以表示成 2 的 n 次方个状态。
HD 视频
高清视频,使用的参考值是 BT.709。
- 色深:8 bit(256 的 3 次方,1600w 颜色)
- 色域:基本等同于 sRGB
HDR 视频
高动态范围视频,使用的参考值是 BT.2020。
- 色深:10 bit(1024 的 3 次放,10 亿颜色)
- 色域:P3/Rec 2020
ITU-R Recommendation BT.xxx
- ITU:国际电信联盟 (International Telecommunication Union)
- R:无线电通信部门(Radiocommunication)
- BT:广播电视类别业务(Broadcasting/Television)
是电联发布的 国际通用电视节目的参数建议书,简称 Rec.xxx or BT.xxx。里面定义了视频作品的参数的参考值,比如像素,比例,帧率,色域等等。
亮度
在同样的颜色下,不同的亮度也会看起来不一样。
动态范围表示显示最亮和最暗的亮度对比度。
SDR(Strandard Dyanamic Range):假设目标显示设备峰值亮度 100nit
HDR(High Dynamic Range):假设目标显示器峰值亮度 10000nit
颜色深度和亮度
在高动态范围情况下,颜色精度需要更细致,否则还原出来暗部/亮部没有细节。HDR 不代表亮度需要高,而是给人看的 HDR 必须在 SDR 的精度之外,还有更高的亮度。也就是通过超过部分的亮度来拓展信息,而不是压缩原有范围的信息的精度(因为 SDR 规定的最黑已经是显示技术能达到到最小黑色,所以只能往明亮方向拓展,并不能改善阴影细节)。
所以在实现上有两种思路:
- 提高颜色深度,让颜色的精度更高,增加的颜色来还原高光细节
- 非线性分配颜色深度,暗部精度高,亮部精度低
实际上会两种方法一起使用。
影像是一套面向人的系统,对于一个作品被呈现到观看者眼中,会经历三个步骤,成像-编码-显示。
HDR 成像
对于相机来说,CMOS 已经可以记录 14bit 的原始信息,所以可以直接记录的动态范围很大。手机上一般通过拍摄多个曝光量的照片后进行算法分区域合成。
HDR 编码
前提:人眼对于亮度的感知并不是线性的(相同的亮度差,人眼对暗部变化感受更明显)。
拓展:大脑对于亮度的感知是相对的(绝对的亮度,在不同场景中的人脑的感知会受到周围物体的亮度影响),所以不可能存在全局且保序的操作能保持人对亮度的主观感受。
对于动态范围大的原始信息,不经压缩直接记录效率比较低。
Gamma
Gamma 函数是 SDR 时代的产物。Gamma 值越小,曲线上突越大,Gamma 值越大,曲线下凹越大,为 1 恰是正比例函数。
- 人眼对于在较小的动态范围内对于亮度的感受,大致符合 Gamma 值为 0.45 的 Gamma 函数曲线。
- 上古时代的 CRT(cathode-ray tube,阴极射线管)的显示特性对输出呈 Gamma 值 2.5 的矫正。
巧合之下,如果采用 Gamma 0.45 的曲线对输出强度做矫正,人眼的感受和电压变化就能线性对应起来,物理线性就变成了感知上的线性关系。因此 sRGB 就沿用 Gamma 1/2.2(0.45)的编码。在 SDR 时代,Gamma 完全够用,但到了 HDR 时代,人眼的感受 Gamma 没法很好的表达,容易出现色阶断裂等问题(包括 Gamma 3.0)。
Perceptual Quantizer(感官量化曲线)
PQ 是 SMPTE ST 2084 标准中用于 HDR 的编码方案里的 EOTF(Electro-Optical Transfer Function,电光转换函数)。方案是增加亮度范围,漫反射白(参考白色)和 SDR 一致,为 100nit,高于 100nit 部分仅用于高光范围。这个函数和人眼的感受的模型匹配程度很高,但是缺点是必须让显示器根据本身峰值亮度截取超出编码端的信息,所以 PQ 要求有元数据,易变带上亮度最小和最大的等信息。
HDR10
元数据是静态的,所有时间是相同的,包含创建时的显示器信息(色域,白点,亮度范围),内容信息,峰值亮度和平均亮度(用于目标显示器做色调映射)。
Dolby Vision
元数据是动态的,可以更细粒度控制,可以以场景或者帧为单位应用。
HLG(Hybrid Log-Gamma)
在摄像机内直接完成 HDR 编码,漫反射白为信号 75% 而不固定,所以是相对的,用于广播电视领域。
HDR 显示
色调映射(Tone Mapping)
将某一动态范围的数据映射到另一动态范围的显示设备上。
全局方法
-
像素单独映射,相同颜色映射后还是相同颜色
-
速度快
-
一般在游戏中使用
局部方法
分离压缩思想
- 先对整体映射出一个 HDR 的 Base Layer
- 原图减去 Base Layer 得出 LDR 的 Detail Layer
- 压缩 Base Layer 得出 LDR 的 Base Layer
- 将 LDR 的 Base Layer 和 LDR 的 Detail Layer 处理合成