专栏名称: 少数派
少数派帮你更好地运用数字产品,提升工作效率和生活品质。
目录
相关文章推荐
极客之家  ·  视频一键转图文,这款开源的 AI ... ·  2 天前  
老刘说NLP  ·  48个流行开源ML数据集及KG三元组抽取工具 ... ·  5 天前  
稀土掘金技术社区  ·  协程中使用 ... ·  4 天前  
51好读  ›  专栏  ›  少数派

如何做张让人眼前一「亮」的照片:增益图 HDR 与 HDR 工作流

少数派  · 公众号  ·  · 2024-12-20 12:21

正文

请到「今天看啥」查看全文


我们暂且不考虑问题 1 ,而问题 3 是钱就能解决的(买新硬件)。问题 2 是普及 HDR 照片的关键。
照片 HDR 的标准
回到 ISO HDR 上来,我们知道,每个像素点可用四个整型 (Int) 来表示,即 R、G、B 以及透明度 A。为方便其见,我们只考虑一个通道(即只考虑 R)。在 8 bit 下的照片中,最亮的亮度记为 255 (2^8−1),而最暗的像素记为 0。
从 0 到 255 的灰度图
我们把 255 对应的亮度记为 SDR 下的最大亮度,其标准为 200 nit。超过 200 nit 的部分就属于 HDR 的范畴了:
超过 200 nit 就进入到 HDR 的范围(此图片已转化为 SDR)
最简单的处理办法,就是声明该图片是 HDR 的。超过 SDR 范围的像素用大于 255 的数值去储存之。照片的位数也需要从 8 bit 增加到至少 10 bit。在 10 bit 下,亮度最大为 1023,相当于是 255 的  3.11 倍。
为什么不是 4 倍而是 3.11 倍?这涉及到伽马这个参数。简单来说就是人的眼睛对光的感受是对数的不是线性的。如果四个图像看起来的亮度依次为 1、2、3、4,那实际光强为10:43:106:200。一般来说显示器的伽马为 2.2,4^(1/2.2) = 3.11。
所以继续沿用 2.2 的伽马,10 bit 并不够用!对于一个亮度最高 6400 nit 的物体(相当于 SDR 的 32 倍),我们需要 8+14 = 22 bit 才能储存,这一开销(接近 3 倍的文件体积)是不合算的。PQ 和 HLG HDR 定义了一个映射方式,对高亮度数据占用的信息进行压缩。因为人眼对光的敏感性是指数的,比如说只有亮度差大于 2% 才能肉眼看出来。因此记录数据时,没必要从亮度 500 至 600 每隔 1 就记录一下,完全可以 500、510、520、531、541、552…… 大幅减少所需的数据量。选择合适的映射方式,使用 10 bit 就能在不丢失肉眼精度的情况下,将数据映射到最高 10,000 nit 的亮度。
伽马 2.2 的曲线(红)与某种 HLG 的曲线(蓝色)
我们把整型映射到 0-1 范围的浮点中。在 SDR 空间中,200 nit 的亮度以 1.00 储存。而在上图对应的 HLG 中,这一亮度大约以 0.55 进行储存。1000 nit 的亮度将以约 0.75 进行储存(横坐标 5),而 1.00 的数据会对应 2400 nit 的亮度。我们把这个照片最高支持的余量 (headroom) 称为 12,即表示 HDR 亮度最大为 SDR 的 12 倍。
现在来考虑该如何解码这一图像。如果软件知道你使用的是 PQ 或者 HLG ,那它将正确的把 0.55 映射到 200 nit、0.75 映射到 1000 nit、1.00 映射到 2400 nit。但如果软件并不知道,仍然以错误的伽马 2.2 对其进行处理,那么这些亮度将变成 110、150 以及 200nit,即出现了色调映射(好在 HLG HDR 考虑了这一问题,这种映射不能说是错误的,因为 SDR 部分得到了正确呈现,只不过亮度有所降低):
这是一个以 HLG 曲线储存的照片,如果你用浏览器查看能看到 HDR 效果
第二个问题在于,创作者可能使用的是最高 1600 nit 的显示器,并创作了在这个范围内的作品,但观众使用的是最高 400 nit 的显示器,其只能显示比 SDR 亮一倍的内容。这个时候,有两种办法进行处理。第一个称为滚降 (roll-off),第二个被称为硬切 (hard-clipping)。






请到「今天看啥」查看全文