Video Coding / HDR

HDR — 更高的动态范围,更广的色域,更深的比特位。

将自然界中真实场景转换为屏幕上显示出来的图像,往往需要经过两个主要步骤:

  • 通过摄影设备,将外界光信息转换为图像信息存储为数字信号;
  • 通过显示设备,将图像信息转换为屏幕输出的光信息。

在整个过程中,信息流要经过两个重要的非线性映射,才能形成我们在显示设备上看到的图像。

  • 相机的非线性映射通常称为光电转换函数(OETF)
  • 显示端的显示器的非线性映射通常称为电光转换函数(EOTF)

通常,OETF和EOTF并不是互逆关系。显示端的EOTF往往还包括代表创作者渲染意图的光光转换函数(OOTF),其对观看者在较暗环境下通过显示器观看带来的心理视觉影响进行了修正。

SDR:Gamma校正

经过一系列实验的测定,人类能够感知到的连续亮度谱如上图所示。

也就是说,如果比上图更加精细,则没有必要,因为人眼无法识别;
如果比上图粗糙,则人眼能够感觉到间断。

接着,将最左边纯黑编号为“0.0”,最右端纯白编号为“1.0”,中间定义为中灰“0.5”。这就形成了人眼的亮度谱。

但是,上图中的亮度在自然界中并不是同样成比例的,例如图中的中灰,对应自然界中的亮度是纯白的20%。

将人眼亮度谱与自然界中实际亮度进行建模,就可以得到下面的图像:

在低亮度区域,人眼的敏感性较高,因此自然界中很小的亮度范围,都能够被人眼察觉;
在高亮度范围,人眼的敏感度较低,因此自然界中的大范围的亮度变化,在人眼感知上却并不大。
可以使用幂函数来拟合这种非线性的映射,用公式表示如下:

  • X是使用0-1之间的实数,表示输入亮度
  • Y是使用0-1之间实数表示的输出亮度
  • γ为人为设定的参数,不同的γ选择会产生不同的效果。

这种通过调整γ的取值,来调整输入输出亮度之间映射关系的方式,称之为gamma校正。根据γ取值的不同,能够发现gamma校正的不同效果:

当γ<1时,曲线上凸,输出值大于输入值。 当γ=1时,曲线为一条直线,输入与输出相等,不进行校正 当γ>1时,曲线下凸,输出值小于输入值

真实场景到屏幕显示

  • 首先,图像每个像素的取值在0-255之间,先进行归一化,将0-255这256个数线性映射到0-1之间。

  • 接着,在图像获取阶段,摄像机中会使用一种encoding gamma函数进行gamma校正,这里的gamma值小于1。

    • 自然界中的亮度,首先在摄像机中进行归一化,映射到0-1之间,接着,将这个经过归一化的值输入encoding gamma函数中。最后将encoding gamma函数的输出值与0-255的像素值归一化结果进行比较,就能得到这个像素点的像素值。
  • 显示阶段的gamma校正通常使用一种display gamma函数来完成,这里的gamma值大于1。

    • 显示设备读取像素值后,进行归一化,然后将归一化结果输入display gamma函数中。将输出的值对应的自然光线进行输出。

可逆过程?

理论上来说,上述两个阶段的gamma值乘积应该为1。因为两个gamma校正实际上做的是恰好相反的操作,一个是将自然光线存储为数字信息,另一个是将数字信息转换为光线。而为了使自然中的光线与显示设备产生的光线一致,显然这里的gamma值的乘积需要为1。

但是,在实际操作中,这两个gamma值的乘积并不为1,原因有以下两点:

  • 对于传统显示设备来说,屏幕能够显示的亮度范围与颜色范围与实际情况相差好几个数量级;
  • 在真实的场景中,原始的场景填充了观察者的所有视野,而显示设备的亮度往往只局限在一个被周围环境包围的屏幕上。

这两个差别使得感知对比度相较于原始场景明显下降了。

为了平衡这种现象,进而保证显示亮度在感知上和原始场景是一致,的两个gamma的乘积并不是1,而是经过试验得到的其他值。

在电影院这种漆黑的环境中,乘积为1.5
在明亮的室内,乘积为1.125
个人电脑使用的一个标准叫sRGB,它使用的encoding gamma大约是0.45(也就是1/2.2)。这个值是为了配合display gamma为2.5的设备工作的。这样,end-to-end gamma就是0.45 * 2.5 = 1.125了。

Gamma 校正的意义

按照上一节所说,两段gamma校正实际上是一对逆过程,一个将光信息转化为数字信息,一个将数字信息转化为光信息。
按照常理来说,并不需要复杂的非线性映射,只需要将归一化后的光信息记录下来,然后再让显示设备进行输出即可。
从这种角度来说,gamma校正是一个不必要的操作。

这是一个合理的质疑。问题的根源在存储位宽上,如果存储位宽足够大,显然可以使用上述归一化记录方式进行处理,但是,实际生产与应用中的位宽是有限的。

  • 在传统的图像存储与显示标准中,一个像素点有三个通道,而每个通道只有8位。
  • 这也就意味着,图像的灰阶有限,与真实世界相比,差了很多数量级。
  • 因此,想要在有限灰阶上表现出近似于自然界的亮度,就需要对灰阶分配进行设计

这也是Gamma校正的意义。

  • 由于人类感知的“中灰”,在实际的自然光线中对应于白光的20%的亮度。因此,如果完全按照自然光线的数值进行灰度处理,纯黑到中灰这一段在人类感知中占到一半的灰度,将只能由20%的灰阶进行表示,而剩下的一半会有80%的灰阶进行表示,这显然是不合理的。Gamma校正就可以解决这个问题。

  • 在实际操作中,中灰对应的自然光线,显然会被映射为0.5的取值,也就对应128这一灰阶。这样的结果就是高亮度与低亮度部分分别占有一半的灰阶,这就会使得显示的图像的直观感受更接近于现实。

因此,gamma校正实际上是用来解决显示设备亮度灰阶不足的问题的。

  • 如果将图像存储的编码位宽扩大到32位,也就是能完全包含自然界亮度范围的时候,自然就不再需要进行gamma校正了,这种情况下,只需要将自然光线的亮度值记录下来,然后对应输出即可。
  • 但是,使用32位位宽来存储图像过于“奢侈”,因此gamma校正在实际生活中起到了广泛而巨大的作用。

不足

传统的Gamma校正方式,是针对传统CRT显示设备与LDR图像设计的,对应的标准是BT.1886标准。而BT.1886标准规定的的峰值亮度仅为100nits,它与传统CRT设备的显示能力相一致。

目前大多数显示设备的显示能力早已突破100nits的限制,普通消费级显示器的亮度一般在200nits至500nits,商业级的监视器亮度可以达到1000nits至2000nits,实验室级别的监视器甚至可以高达4000nits至20000nits。

同时,现代数字运动图像传感器能够捕获动态范围到80dB或者比特深度达到14bit的线性视频信号。由于实践和历史原因,大多数专业视频制作系统都采用10比特,而消费者级别的视频和计算机图形学通常采用8比特。在HDR技术中,通常采用10比特或12比特。

显示设备亮度范围的提升、图像编码bit depth的提升,使得传统Gamma校正不适用于HDR的光电转换过程。如果强行使用Gamma校正进行转换,会在图像与视频中出现明显的分块与分环瑕疵。

针对上述问题,标准化组织规范了两种新型光电转换曲线:PQ曲线、HLG曲线。

由于8比特的位深限制了使用更宽广的动态范围,因此需要定义新的OETF曲线为视频制作和传输提供更高的动态范围。Dolby实验室提出了新的OETF曲线,称为PQ曲线,目前已经被标准化为SMPTE ST 2084。

Dolby提出的 PQ EOTF基于 Barten 的CSF模型。

HDR:PQ and HLG transfer functions

为了在屏幕上显示数字图像,显示设备需要将像素值转换成相应的光值。这个过程通常是非线性的,被称为EOTF(Electro-Optical Transfer Function,电光传输函数)。不同的显示设备支持不同类型的 “传输函数”。

常规的HDTV显示设备(SDR显示器)通常使用BT.709 Gamma transfer function来将视频信号转换为光。这些显示器主要用于显示亮度范围达100 Nits(cd/m2)的图像。

HDR定义了两个额外的传输函数来处理这个问题—感知量化器(Perceptual Quantizer,PQ)和混合对数伽马(Hybrid Log-Gamma,HLG)。

  • HDR PQ是一个绝对的、以显示为参考的信号,支持PQ的显示设备需要实现tone mapping来适应光照度。显示设备使用内容元数据来显示PQ编码的图像。这可以为整个视频流(静态)或每个单独的镜头(动态)来一次。

PQ

  • HDR HLG是一个相对的、以场景为参考的信号。这意味着支持HLG的显示设备会根据内容和自身的显示能力自动适应光照度。

HLG

预计在理想条件下,基于PQ的动态转换将达到最佳的质量效果,但代价是与现有显示系统的兼容性。

下图描述了各种传递函数的光照度的映射情况。垂直轴显示信号值的刻度为0-1,0为黑色,1为白色。这样做是为了使信号范围、比特深度不受影响。水平轴显示的是显示设备的尼特光照水平。

OETF - 光-电转移函数。描述光值将如何转换为数字值的数学传输函数,通常在相机内。
OOTF - 光-光传输函数。这个转移函数补偿了相机环境和显示器环境之间的色调感知差异。

人类对较暗区域的变化比对较亮区域的变化更敏感。这一特性在HDR系统中也得到了利用,与明亮区域相比,黑暗区域的颗粒度更大。

上图显示,与明亮区域相比,黑暗区域的光照度范围由更大的信号值表示—这意味着黑暗区域的颗粒度更高。虽然这在基于BT.709的显示器中分布更均匀,但在明亮区域的HDR显示器中,它的颗粒度变得更小。

  • 在HLG的情况下,一半以上的信号值在0-60尼特之间的光照度中被表示,其余的信号值在60-1000尼特范围内被表示。
  • 在基于PQ ST2084的显示器中,大约有一半的信号值在0-40尼特之间的光照度中表示,其余一半的信号值在60-1000尼特范围内表示。

根据该图,HDR HLG在低亮度区域与BT.709相似,因此与现有的SDR显示设备有更好的兼容性。
然而,HDR PQ与BT.709有很大不同。如果我们试图在SDR显示器上显示PQ HDR图像,由PQ代表的较暗区域将无一例外地变得更亮,从而降低了图像的对比度水平,其结果是一个水洗的图像。

虽然基于PQ的转换提供了在支持HDR的显示器上显示最佳质量结果的承诺,但与HLG相比,它需要显示设备的适当 Tone mapping。

HDR Tone Mapping

  • Tone Mapping是在HDR元数据的基础上将数字信号适应适当的光照水平的过程。
  • 这个过程不是简单地在图像数据上应用EOTF(电光传输函数),而是试图使用元数据信息图像数据与显示设备的能力进行映射
  • 由于市场上有广泛的HDR显示设备,每个设备都有自己的Nits(即 “亮度”)范围,正确的色调映射对于良好的用户体验是必要的。由于色调映射是根据视频流中的元数据完成的,因此正确的元数据的存在是必要的。

源素材可以用最好的相机以HDR拍摄,然后在高端HDR母版系统上进行母版处理,但它仍然需要在市场上可用的HDR电视上以最佳方式显示。色调映射将内容与设备进行适当的亮度映射,不会出现明显的退化。

比如,一个图像是以2000尼特的峰值亮度拍摄的。如果它显示在0-2000尼特范围的电视上,亮度范围将与拍摄的原始画面完全一致。然而,在其他设备上的结果将是不同的。

由于 Tone Mapping 是在 HDR 显示设备上显示基于 PQ 的 HDR 内容的必要操作,电视需要知道内容的原始属性,即所使用的亮度范围和母版系统参数。这些信息是以 HDR 元数据的形式传达的。
读取 HDR 元数据后,显示设备可以决定 Tone Mapping 参数,使转换后的视频在显示设备的显示范围内处于最佳状态。

HDR元数据

HDR 元数据是显示设备以最佳方式显示内容的一种辅助手段。它包含 HDR 内容和母版设备属性,显示设备根据其自身的色域和峰值亮度来映射内容。有两种类型的元数据 - 静态和动态。

  • 静态元数据:静态元数据包含适用于整个内容的元数据信息。它由SMPTE ST 2086标准化。
    • 在一个典型的内容中,亮度和色彩范围因镜头而异。静态元数据的挑战在于,如果根据静态元数据进行 Tone Mapping,它将只基于整个内容中最亮的那一帧。
    • 因此,大部分内容的动态范围和色域的压缩程度将超过需要。
    • 这将导致在能力较差的HDR显示设备上出现糟糕的观看体验。
  • 动态元数据:动态元数据允许在每个场景的基础上进行 Tone Mapping。动态元数据已经被SMPTE ST 2094标准化,它定义了与内容相关的元数据。
    • 当内容在能力较弱的 HDR 显示设备上显示时,这将导致用户的观看体验明显改善。
  • 将动态元数据与静态元数据一起使用,可以克服只使用静态元数据进行 Tone Mapping 所带来的问题。

Dolby Vision

  • Dolby Vision使用动态元数据,是当今最常用的HDR技术。
  • 主要的OTT服务提供商,如Netflix和亚马逊,以及主要的电影公司和许多著名的电视制造商都采用了这种技术。
  • Dolby Vision在SMPTE ST 2094-10中得到了标准化。除了支持动态元数据外,杜比视界还允许为特定设备描述多种修饰,从而在这些设备上实现更精细的显示。

Defination

cd/m2 - 坎德拉(cd)是国际单位制(SI)中发光强度的基本单位;即一个点光源在特定方向上发出的每单位实体角度的发光功率。一支普通的蜡烛发出的光,其发光强度大约为1坎德拉。

Nits — 一种用于描述亮度的非SI单位。1Nits=1cd/m2。

WCG - Wide Color Gamut,宽色域。提供比BT.709更广泛的颜色范围的色域。DCI-P3和BT.2020是WCG的例子,在显示设备上提供更真实的图像表现。

参考:
https://www.veneratech.com/hdr/