HDR 浅谈


  最近 HDR(高动态范围) 是一个很流行的词,但是,大部分人对 HDR 都是知其然而不知其所以然,本人对 HDR 在之前也有一些困惑之处,经过一些询问和研究便有了这篇文章。

照片 HDR

  HDR 这个词最开始就是摄影用词,由于人眼看到的图像会经过大脑的处理,所以我们“看到”的景象并不是真实的(定性而不是定量),譬如下面两个图

2020-07-12_185135

永远“不直”的线

2020-07-12_185246

永远“数不完”的点

  人眼会自动对亮度高的区域做暗化处理,而对亮度低的区域提高亮度。

  但是,对于相机的感光元件来说,得到的是准确的信息,所以我们经常会遇到拍出来的相片过曝或者暗部细节丢失,即使拍摄对象看着没问题。

  有没有方法解决呢?有。

  简单的说,现在我们拍两张照片,一张过曝,一张过暗,再运用算法将两张照片合称为亮度均匀的一张,这样就不会有亮度问题了,这就是相机上的 HDR。

  因为所得到的图片既有低亮度部分,也有 高亮度部分,所以称为高动态范围(HDR)。

  具体的算法比较复杂,包括对图像内容的识别,渲染,色调映射等,可以参考以下内容。

色调映射

Sampling

泛光

显示器 HDR

  显示器 HDR 和非 HDR 主要区别就在于三点,色彩空间,位深度和亮度。

色彩空间

  简单的说,色彩空间就是颜色的范围,对于显示器来说,色彩空间越大,表现的颜色越多。如果拍摄的照片中有的颜色显示器不能显示,就会发生偏色。

  而 HDR 就要求使用较高的色彩空间,这样显示器可以显示更多更精准的颜色。

  常用于显示器的色彩空间有 sRGB 和 DCI-P3。

  色彩空间的数学原理请看这个 色彩空间基础

亮度

  显示器需要亮度标准,才可以尽量的模拟现实世界,比如有一个手电筒向你照来,你会觉得刺眼。显示器想要达到这种效果,就必须足够亮。

位深

  我们知道,红绿蓝是对于人眼的光学中的三原色,依靠红绿蓝三种颜色可以任意组合成我们看见的真实的颜色。

  显示器如果想要精确组合颜色,就需要让每一个颜色强弱有更多的级别,于是 10bit 这个概念就诞生了,10bit 指三原色中每种颜色都有 210 个级别(10 位;10bit 指位深),三种颜色共能组合出 1024×1024×1024=10.7 亿 种颜色,而市面上常见的 8bit 显示器只能表示 256×256×256=16.7 百万 种颜色。

颜色和色彩空间的关系

  由于显示器的显示能力有限,所以不能 100% 表现出真实的颜色。纵使 10bit 能表示 10.7 亿 种颜色,但是这些颜色也必须在色彩空间规定的范围里。(10bit 和 8bit 的区别就像做功方式不同,且无论哪种方式效率都不能是 100%)。

  有关色彩空间和颜色转换请看这个色彩管理知多少

  而显示器能显示的亮度的范围高,能显示的颜色多,就是高动态范围。

视频 HDR

  现在我们知道了色彩空间的基本概念,那么现在我们就来下定义:使用了 BT.2020 色彩空间的视频就是 HDR 视频。

  从前大部分视频,都是采用了 BT.709 色彩空间的,它在 1990 年便产生,限于当时的条件,这个色彩空间放到今天已经不够使用了,所以诞生了范围更广的 BT.2020(注意,BT.709 和 BT.2020 是用于电视的标准, sRGB 和 DCI-P3 一般用于衡量显示器表示颜色的能力)。

  其次是位深,虽然上面定义了 视频的 HDR 只与色彩空间有关,但是亮度变高的同时,颜色细微的差别也会被放大,导致颜色过渡不自然,那么我们自然也需要更高的位深才能得到更好的效果。

  能显示的颜色丰富,就是高动态范围。

  有关 HDR 视频编码和组成上的规范,请参阅这里 HDR视频的编码参数

其他

  由于 JPEG 和大多数的视频都采用 YCbCr 颜色系统,这套系统通过一个单独的 Y(明度)确定亮度,所以天生就比 RGB 颜色系统具有 HDR 转换上的优势。关于 YCbCr 的内容请看下一篇。

  对于 HDR 资源和非 HDR 资源来说,即使是一个“颜色”(即具有一个相同的 RGB 值),他们所代表的颜色也不一样,因为色彩空间不一样。所以在使用者需要进行一些转换,这也导致了一些问题。