有些关于 HDR 映射的问题

2022-05-09 00:09:06 +08:00
 1317333270

这两天好奇看了一下我下载的那些 HDR 电影的 PQ 曲线,发现大部分场景的亮度都不超过 200nit ,甚至 10nit 左右的部分居多。某个画面的 PQ 曲线如图 https://i.postimg.cc/G3TxVvPW/QQ20220508-232409-2x.png

从 PQ 曲线看出该场景大部分画面没有超过 10nit ,那么显示器开启 HDR 后(亮度不可调)显示的画面是严格按照 PQ 曲线来映射的亮度吗?所以我看到的画面也不超过 10nit 吗?

手头没有亮度计可以测量,可是我感觉上并不是真正显示 10nit 左右的亮度,看起来像是在 100nit 左右。如果真的是在映射时候拉高了 PQ 曲线,又是根据什么来调整的呢? 800nit 的太阳在 HDR1400 的显示器上又是否会以 1400nit 来显示呢?

如果两端亮度的做了极端化,正常在 100nit 左右的画面也会被处理吗? https://i.postimg.cc/k4bR1vrw/6.png

甚至突然想出一个问题,HDR1000 的 MiniLED 和 HDR TureBlack400 的 OLED 显示器,在看同一个画面(PQ 曲线在 0-200 之间,亮度都在两者可显示的范围内)的时候,MiniLED 也会比 OLED 更亮吗?

2259 次点击
所在节点    Apple
10 条回复
billlee
2022-05-09 03:08:36 +08:00
注意一下亮度单位 nit, cd/m^2, 是单位面积发光强度,是要按像素点算的。100 cd/m^2 是 HDR 的白点亮度了,第一张猫咪的画面是昏暗场景,显然是要远低于有 100 cd/m^2.

定量计算,在 < 100 cd/m^2 部分,HDR 的曲线和 sRGB 基本没区别,中间灰大概就是 21 cd/m^2, 猫咪那张图片,显然大部分像素是比中间灰暗的,所以亮度在 10 cd/m^2 左右完全符合预期。

HDR 高动态范围,是要提高高光的亮度,让天空、灯光、火焰、太阳这些光源能以高亮度显示,而绝对不希望猫咪、树叶闪瞎观众,多数物体的亮度和 SDR 是没有什么区别的。
ynyounuo
2022-05-09 03:33:29 +08:00
EDR 会根据你的 UI brightness level 以其为标准 1.0 进行映射;支持 EDR 的播放器会以 UI brightness 的 1.0 再根据 HDR10 或者 Dolby Vision 的 metadata 进行映射
1317333270
2022-05-09 08:57:21 +08:00
@ynyounuo 显示器打开 HDR 后亮度是不可调状态,那这样我就没办法自己设定 UI brightness level ,同时系统也并不知道显示器的实际亮度,如果不是 Display XDR 的话映射亮度又如何决定
1317333270
2022-05-09 09:22:08 +08:00
@billlee https://i.postimg.cc/NF8WFZng/IMG-0449.jpg
左侧显示器是 HDR1400 的 MiniLED ,右侧内置屏幕亮度拉到了 53%(大概在 150nit )左右,右侧显示的是把那一帧转化为 SDR 格式的图片,实际观感左侧更亮,那这样的话说明显示的并不是 10nit ,而是远远高出 10nit ,MacBook 亮度在 20%的时候是接近 10nit 的,这样的话我觉得画面根本看不清啊。又尝试了 100 ~ 200nit 的部分,也是以 mbp 屏幕为参照,发现左侧显示器更接近 300nit ,也被提亮了。
mbp 亮度参考的是小雪人实测数据,25%为 18nit ,50%为 141nit ,75%为 265nit ,100%为 508nit ( SDR )
ynyounuo
2022-05-09 11:06:33 +08:00
@1317333270
你可以用这个脚本测试你的屏幕是否支持 EDR
https://gist.github.com/Akemi/185d83afbef47c0c8e0add2a3c99b6d2

支持的话就是一样的原理,比如说你的 UI White 是 1.0 的话,它会根据你 opticalOutputScale 的设定来定义这个 1.0 的值,比如说是你设定 opticalOutputScale 为 100 则 1.0 就是 100 nits

对于视频具体亮度的处理来自于使用 AVPlayer 的播放器对于不同 HDR 视频获取到的 HDRMode 来分别处理,一般来说就是区别 hdr10/dolbyVision/hlg 等并且对这类食品的 HDR metadata 进行解析转换成 EDR metadata 并且通过 EDR 的 value 来反馈到支持的屏幕上;

要解决你的疑惑,你首先得确定你的屏幕和播放器是支持 EDR 的,其次你得区分你视频的 HDR 用了什么规范,HDR10 和 HLG 比较容易处理,HDR10+ 和 Dolby Vision 是 dynamic metadata 会更难处理,且 Dolby Vision 会有 5/8.1/8.2 等 Profile 分别进行支持,其中 dvhe5 是 Dolby Vision ,dvhe8.1 同时支持 HDR10+ 和 Dolby Vision ,dvhe8.2 亦可支持 SDR

其次就是具体「 800nit 的太阳在 HDR1400 的显示器上又是否会以 1400nit 来显示呢?」
这个问题没有那么简单,一幅画面的显示需要画面整体的 integrity ,所以说系统和播放器会根据 HDR10/DoVi-L6 的 MaxFALL/MaxCLL 以及 DoVi 的 L1/2/3/8/9 的 metadata 信息来定义具体需要以多高的亮度来显示,并不是说每个像素的亮度都被定义并且完全和 reference master monitor 上的效果 1:1 的给你传递了

现在的 HDR 还是比较起步的阶段,如果想有比较好的体验就买足够好的电视配那些支持 Dolby Vision HDR10+ 的流媒服务是最简单的解决方案,费事儿的部分都让厂家替你搞定了,当然也需要看看 HDTVtest 之类的频道对你本身的设备的缺省设置进行一些调整

电脑播放 HDR ,尤其是播放 Dolby Vision 的「盗版」 encodes 就是自找麻烦,一方面 remaster 实际上也都粗制滥造,一方面大部分人的播放链路总有一两个环节掉链子导致其实看到的效果远非制作者的本意;其实很多人对着那些调教不准确的 HDR 播放效果自以为接触到了比别人好的体验,实际上还不如看 SDR
sylarchang
2022-05-09 13:06:18 +08:00
HDR 的目的是「能够显示更亮的东西」而不是「把东西显示得更亮」。SDR 因为范围太小,需要把不重要的高光压缩,HDR 一般不需要这样压缩,单纯等比放大 SDR 是错误的,HDR1400 最高 1400nit 不代表要用满 1400nit
1317333270
2022-05-09 15:03:23 +08:00
@ynyounuo 通过弹出的窗口和运行结果来看,外接显示器是可以开启的 EDR 的
但是无法通过系统的亮度条来设定 UI 亮度(可以理解为 UI 亮度由显示器强制指定吗),用 QuickTime 或 Movist 播放 HDR10 视频,在超过显示器可显示的亮度范围部分出现过曝,高光细节丢失的问题。例如飞利浦的 OLED 显示器峰值亮度 540nit ,那么视频中超过 540nit 的部分全部用 540nit 显示,没有做 tonemapping 的柔性滚降压缩,而是硬性裁切。
所以目前来讲,在 Mac 上是不存在像 windows 那边的 MadVR 一样的 roll 映射的软件吗?或者我如何在无法更改显示器亮度的情况下设定 opticalOutputScale ,是否这样降低 opticalOutputScale 的值可以等效成柔性亮度压缩
1317333270
2022-05-09 15:04:05 +08:00
@ynyounuo ----------------------------- BEFORE EDR REQUEST ------------------------------
PHL 27B1U7903
maximumPotentialExtendedDynamicRangeColorComponentValue: 7.025008678436279
maximumReferenceExtendedDynamicRangeColorComponentValue: 0.0
maximumExtendedDynamicRangeColorComponentValue: 1.0
Color LCD
maximumPotentialExtendedDynamicRangeColorComponentValue: 2.0
maximumReferenceExtendedDynamicRangeColorComponentValue: 0.0
maximumExtendedDynamicRangeColorComponentValue: 1.0
-------------------------------------------------------------------------------
--------- Layer with EDR: false ---------
--------- View with EDR: false ---------
Created CGL pixel format with attributes: kCGLPFAOpenGLProfile, kCGLOGLPVersion_3_2_Core, kCGLPFAAccelerated, kCGLPFADoubleBuffer, kCGLPFAColorSize, 64, kCGLPFAColorFloat, kCGLPFABackingStore, kCGLPFAAllowOfflineRenderers, kCGLPFASupportsAutomaticGraphicsSwitching, 0
--------- Layer with EDR: true ---------
--------- View with EDR: true ---------
Created CGL pixel format with attributes: kCGLPFAOpenGLProfile, kCGLOGLPVersion_3_2_Core, kCGLPFAAccelerated, kCGLPFADoubleBuffer, kCGLPFAColorSize, 64, kCGLPFAColorFloat, kCGLPFABackingStore, kCGLPFAAllowOfflineRenderers, kCGLPFASupportsAutomaticGraphicsSwitching, 0
------------------------------ AFTER EDR REQUEST ------------------------------
PHL 27B1U7903
maximumPotentialExtendedDynamicRangeColorComponentValue: 7.025008678436279
maximumReferenceExtendedDynamicRangeColorComponentValue: 0.0
maximumExtendedDynamicRangeColorComponentValue: 7.025008678436279
Color LCD
maximumPotentialExtendedDynamicRangeColorComponentValue: 2.0
maximumReferenceExtendedDynamicRangeColorComponentValue: 0.0
maximumExtendedDynamicRangeColorComponentValue: 1.296505093574524

运行结果如此
ynyounuo
2022-05-09 15:38:57 +08:00
@1317333270
你的显示器是不支持 DDC 吗?可以试试 https://github.com/MonitorControl/MonitorControl 是否能控制亮度
opticalOutputScale 是由播放软件获取的并定义的,过曝说明可能你的片源有问题或你的系统设定或软件设定有问题,看起来你显示器的 UI White 在当前设置下应该是 200nits

先试试 toggle 系统设定里的 HDR mode 有没有用;另外用 mediainfo 看看你片源里的 HDR format 是什么;

然后就做变量实验,比较好的参照是 macOS 12 后的 Safari 开 Netflix 等流媒是完全支持 HDR 和 Dolby Vision Playback 的; YouTube 则一直以来都有些问题,Chrome 可能会过曝 Safari 则可能欠曝;最好的 reference 就是 TV 里的 HDR 内容或者 Safari 上 Netflix 的 HDR 内容,这些都是厂家互相合作联合做了良好的 HDR -> EDR 播放链路的东西
1317333270
2022-05-09 16:50:21 +08:00
@ynyounuo 真的是太感谢了老哥,我也了解到了许多新东西,我自己再研究研究👌

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/851621

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX