V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1317333270
V2EX  ›  Apple

有些关于 HDR 映射的问题

  •  
  •   1317333270 · 2022-05-09 00:09:06 +08:00 · 1960 次点击
    这是一个创建于 717 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天好奇看了一下我下载的那些 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 更亮吗?

    10 条回复    2022-05-09 16:50:21 +08:00
    billlee
        1
    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
        2
    ynyounuo  
       2022-05-09 03:33:29 +08:00 via iPhone
    EDR 会根据你的 UI brightness level 以其为标准 1.0 进行映射;支持 EDR 的播放器会以 UI brightness 的 1.0 再根据 HDR10 或者 Dolby Vision 的 metadata 进行映射
    1317333270
        3
    1317333270  
    OP
       2022-05-09 08:57:21 +08:00
    @ynyounuo 显示器打开 HDR 后亮度是不可调状态,那这样我就没办法自己设定 UI brightness level ,同时系统也并不知道显示器的实际亮度,如果不是 Display XDR 的话映射亮度又如何决定
    1317333270
        4
    1317333270  
    OP
       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
        5
    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
        6
    sylarchang  
       2022-05-09 13:06:18 +08:00
    HDR 的目的是「能够显示更亮的东西」而不是「把东西显示得更亮」。SDR 因为范围太小,需要把不重要的高光压缩,HDR 一般不需要这样压缩,单纯等比放大 SDR 是错误的,HDR1400 最高 1400nit 不代表要用满 1400nit
    1317333270
        7
    1317333270  
    OP
       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
        8
    1317333270  
    OP
       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
        9
    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
        10
    1317333270  
    OP
       2022-05-09 16:50:21 +08:00
    @ynyounuo 真的是太感谢了老哥,我也了解到了许多新东西,我自己再研究研究👌
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4239 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:29 · PVG 13:29 · LAX 22:29 · JFK 01:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.