HDR是一个复杂的概念,完全不同于SDR的理解,我走了一些弯路。这里面的一些概念理解必须精确,否则这个体系即便是码农能写代码,也不能理解。

  1. 何为“线性空间”?
    线性空间就是 CIE XYZ的三维体系。这个线性其实说的是在 CIE XYZ  三个维度上的线性。其实就是人眼三色视觉函数的横坐标必须是线性。这个线性就是“卢瑟观测条件”,这个线性决定了“混色”符合“卢瑟观测条件”,也就是不会偏色,确保颜色的准确性。

    但问题是,这个“线性”是确保混色成功的“线性”,符合“人眼”(CIE 1931的观测),但不符合“人脑”,比如麦克亚当的椭圆。我们可以通过数学工具炮制一种“色貌模型”,比如CIE LAB或者CIE CAM02。不过我们不可能用 CIE LAB/CIECAM02 去定义标准色彩空间(sRGB、Bt.709、DCI-P3、ProPhoto RGB、ACSE...)之类的。

    所以,这个“线性”说的是在 CIE XYZ空间内,划分的标准色域(sRGB、Bt.709、DCI-P3、ProPhoto RGB、ACSE...)在这个三维体内的混色是线性的,并不代表亮度、色度是线性的。后两者另外计算处理,比如各种曲线工具等等。这个线性,本质上是计算线性,而不是观看线性。这个搞游戏引擎的同学深有体会。其他的要记住理解这个抽象概念就行。

  2. 何为 EOTF、OETF、Gamma等等?
    有了以上的“线性”理解,这三者是等同的,我也是被 optical 光学的困扰了很久。感觉是一个“客观的物理概念”,其实不是。这里的Optical其实是perceptual,是一种人眼感觉。这个光不是灯光,而是人眼识别光的感觉,用数学工具来“人为约定”。因为人眼是对数关系,具体怎么对数,我们码农不用管,交给各种组织处理。我们只知道,E(Electrical)和O(Optical)的关系,E(Electrical电子的)就是线性的;而O(Optical光学的)就是非线性的、对数的、gamma的或者分段的(sRGB/HLG)。具体怎么非线性,根据各类标准套用即可。反正统一到线性就可以方便计算和转换了。
  3. 何为亮度,以及亮度转换?以及ToneMapping,以及曝光概念。
    这个也非常复杂混淆,各类概念复杂混淆。
    “曝光”其实用来记录原始摄影场景的光学信息,其实是一个“区分度”的概念。区分度分为“可视区分度”和“非可视区分度”。可视区分度就是前面提到的Optical人眼感觉的概念,比如JPG 8bit,HDR 10bit的概念。非可视区分度,主要用来保存和中间计算,最后得出“可视区分度”。

    简单来说,非可视区分度就是高考成绩或者考试成绩,可视区分度就是 5分制或者 985、211、一本、二本、三本、职高。曝光基本上是处理“非可视区分度”,而Tonemapping curve曲线就是连接不同区分度的工具。这个没啥“客观规律”,靠话语权,我们码农只关注公式,你说这个Tonemapping好,我无所谓。我只关注具体公式描述。

    所谓“HDR”,其实分为“HDR效果”和“HDR硬件”。HDR效果在SDR设备上(比如纸张印刷冲印、莫奈的绘画)也能表现电焊、阳光、日出、日落这些HDR场景,这就是叫“HDR效果”。而“HDR硬件”,则是具体的显示器硬件。比如高亮度的大屏幕电视。而HDR标准是指HDR硬件。

    所谓 HDR硬件,就是亮度更高的显示设备。比如iMAX屏幕就是HDR硬件,而展厅放置的大幅摄影照片就是SDR设备。那么更高亮度的设备HDR所表达“对比度”和SDR是不同的。这就是HDR/SDR的不同的表达关系。在“HDR HLG”的概念里,有一个优势叫“图像劣化比较小”。这句话的实际意思就是,如果把HLG当作SDR的内容直接“错误播放”,其错误偏差程度比较小,人眼觉得差不多就算了。而 HDR PQ当作 SDR的内容直接“错误播放”就不行了,图像发会,人眼不可接受。

    本质上,HDR / SDR 是两种不可兼容的对比度/亮度体系。必须通过ToneMap的转换。但具体算法,你们喜欢啥就是啥,你们爱用哪个就哪个。

  4. HDR硬件的亮度体系。比如HDR PQ/HDR HLG。
    其亮度体系大量使用 RGB-->YUV的转换,使用 Y分量来代表“亮度”。因为这个计算简单。也就是说,计算的时候,先获取像素的Y分量(一般这个时候是线性的ACSE、BT2020、DCP-P3)计算亮度,再返回RGB数据根据这个Y分量获取一个转换ToneMap算法,得出三个新的R'G'B'。这就是不同HDR亮度体系,或者HDR到SDR的转换方法。
  5. 由此得知,其实HDR/HLG标准不能完全算HDR,因为HLG标准可以根据目标显示亮度是一个不固定的曲线。不同显示设备的亮度,有着不同的实际转换曲线(取决于目标亮度),只不过HLG定义了实际转换曲线的生成统一标准。这个亮度可以就仅仅是SDR,也可以是HDR的高亮度。如果是前者,那么HDR hlg(sdr 100cd/m2)的实际转换曲线和Rec.709差别不大了,只不过色域是Bt.2020。而HDR PQ才是真HDR。
  6. 基于上一点,HDR-->SDR首先要HDR的归一化,归一化以后才能套用Tonemap的曲线,否则损失亮度或色彩的精度。

先想这么多,想到再补充。其实读懂这些才能知道这些公式的含义,否则就陷入色彩管理的泥潭,不能自拔。

HDR的个人理解FAQ相关推荐

  1. GLSL实现HDR Rendering 【转】

    http://blog.csdn.net/a3070173/archive/2008/11/29/3408573.aspx HDR - 全称High dynamic rang,是目前流行的3D特效技术 ...

  2. ISP PIPLINE HDR

    在讲HDR之前先理解一些概念,要知道为什么进行HDR? 再去想如何进行HDR. 自然界的中光强度很宽,而人眼对高亮,极暗环境的细节分辨能力比较弱.而摄像头记录的范围更窄,真正的HDR技术就是记录视觉范 ...

  3. MediaCodec的使用和若干问题处理

    ### MediaCodec工作流程 MediaCodec类可用于访问Android底层的多媒体编解码器,例如,编码器/解码器组件. ### 对mediaCodec各种状态的理解 ### FAQ:处理 ...

  4. 理解Session State模式+FAQ [翻译]

    作者:Patrick Y. Ng 原文地址:http://forums.asp.net/7504/ShowPost.aspx 译者:Tony Qu 译者Blog:tonyqus.cnblogs.com ...

  5. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面HMI自锁按钮和自复位按钮如何理解(Toggle variable Tap variable)...

    我分别创建两个按钮,自锁和自复位,绑定到主程序的两个布尔值上去 自锁按钮是指点击一下为TRUE,再点击一下为FALSE,自复位按钮是指按下的时候为TRUE,松开的时候为FALSE(也可以勾选Tap F ...

  6. C#.NET常见问题(FAQ)-命名空间namespace如何理解

    Namespace就是定义一个对象是哪个门派的,比如你现在就在A门派下,A门派的所有功夫(属性和方法)都可以不加声明直接调用.如果你要用B门派的功夫,就要先声明是B门派的XXX对象的XXX实例的XXX ...

  7. 轻松理解LTE网规网优FAQ基本概念

    1.问题描述:为什么要从3G向LTE演进? 问题答复: LTE(Long Term Evolution)是指3GPP组织推行的蜂窝技术在无线接入方面的最新演进,对应核心网的演进就是SAE(System ...

  8. 两种HDR格式(HLG, HDR10)的理解

    1.HLG只在sps的vui中会携带信息,包括colour_primaries(=9),transfer_characteristics(=18),matrix_coefficients(=9) 2. ...

  9. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

最新文章

  1. 基于图神经网络的聚类研究与应用
  2. 这两年:我的数据竞赛之路
  3. 牛人是怎样用函数实现本地化测试的
  4. Oracle bootstrap$ 详解
  5. Java 斐波那契数列
  6. python笔记(五) - 获取对象的引用
  7. mysql数据迁移到sqlserver_Oracle,SQL Server,Mysql 三种数据库两表联合更新的方法
  8. 逻辑函数的化简方法——数电第二章学习
  9. python实现小波降噪_15转载python实现小波分解【实测成功】
  10. 91卫图助手免费版发布啦
  11. ps+背景缩放+内容缩放
  12. 将博客搬至CSDN_wuli大世界_新浪博客
  13. Linux 常用命令参考手册, 非常适合入门, 基本能满足工作日常使用。
  14. python使用win32和flask实现接收请求发送QQ消息
  15. Windows装逼操作
  16. 本地测试dubbo远程调用找不到provider
  17. 论文阅读 Adaptive Consistency Regularization for Semi-Supervised Transfer Learning
  18. SCARA四轴机器人eye-to-hand手眼标定(九点标定)
  19. ISO/IEC 29134
  20. Matlab的基本使用方法

热门文章

  1. 有理数加法 (15 分)
  2. 百度谷歌搜索引擎常用搜索技巧
  3. 四、html字体样式,外观属性
  4. 中层管理者如何脱颍而出?
  5. 怎样设定绩效考核指标
  6. Calendar计算两个日期之间的天数和周数
  7. 一个计算数独的小程序
  8. Linux下U盘自动识别和挂载
  9. qt中颜色对话框弹出时应用程序输出栏出现setGeometry: Unable to set geometry 152x30+682+300 on QWidgetWindow/‘QColorDialo
  10. _.chunk的用法