HDR的个人理解FAQ
HDR是一个复杂的概念,完全不同于SDR的理解,我走了一些弯路。这里面的一些概念理解必须精确,否则这个体系即便是码农能写代码,也不能理解。
- 何为“线性空间”?
线性空间就是 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...)在这个三维体内的混色是线性的,并不代表亮度、色度是线性的。后两者另外计算处理,比如各种曲线工具等等。这个线性,本质上是计算线性,而不是观看线性。这个搞游戏引擎的同学深有体会。其他的要记住理解这个抽象概念就行。
- 何为 EOTF、OETF、Gamma等等?
有了以上的“线性”理解,这三者是等同的,我也是被 optical 光学的困扰了很久。感觉是一个“客观的物理概念”,其实不是。这里的Optical其实是perceptual,是一种人眼感觉。这个光不是灯光,而是人眼识别光的感觉,用数学工具来“人为约定”。因为人眼是对数关系,具体怎么对数,我们码农不用管,交给各种组织处理。我们只知道,E(Electrical)和O(Optical)的关系,E(Electrical电子的)就是线性的;而O(Optical光学的)就是非线性的、对数的、gamma的或者分段的(sRGB/HLG)。具体怎么非线性,根据各类标准套用即可。反正统一到线性就可以方便计算和转换了。 - 何为亮度,以及亮度转换?以及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的转换。但具体算法,你们喜欢啥就是啥,你们爱用哪个就哪个。
- HDR硬件的亮度体系。比如HDR PQ/HDR HLG。
其亮度体系大量使用 RGB-->YUV的转换,使用 Y分量来代表“亮度”。因为这个计算简单。也就是说,计算的时候,先获取像素的Y分量(一般这个时候是线性的ACSE、BT2020、DCP-P3)计算亮度,再返回RGB数据根据这个Y分量获取一个转换ToneMap算法,得出三个新的R'G'B'。这就是不同HDR亮度体系,或者HDR到SDR的转换方法。 - 由此得知,其实HDR/HLG标准不能完全算HDR,因为HLG标准可以根据目标显示亮度是一个不固定的曲线。不同显示设备的亮度,有着不同的实际转换曲线(取决于目标亮度),只不过HLG定义了实际转换曲线的生成统一标准。这个亮度可以就仅仅是SDR,也可以是HDR的高亮度。如果是前者,那么HDR hlg(sdr 100cd/m2)的实际转换曲线和Rec.709差别不大了,只不过色域是Bt.2020。而HDR PQ才是真HDR。
- 基于上一点,HDR-->SDR首先要HDR的归一化,归一化以后才能套用Tonemap的曲线,否则损失亮度或色彩的精度。
先想这么多,想到再补充。其实读懂这些才能知道这些公式的含义,否则就陷入色彩管理的泥潭,不能自拔。
HDR的个人理解FAQ相关推荐
- GLSL实现HDR Rendering 【转】
http://blog.csdn.net/a3070173/archive/2008/11/29/3408573.aspx HDR - 全称High dynamic rang,是目前流行的3D特效技术 ...
- ISP PIPLINE HDR
在讲HDR之前先理解一些概念,要知道为什么进行HDR? 再去想如何进行HDR. 自然界的中光强度很宽,而人眼对高亮,极暗环境的细节分辨能力比较弱.而摄像头记录的范围更窄,真正的HDR技术就是记录视觉范 ...
- MediaCodec的使用和若干问题处理
### MediaCodec工作流程 MediaCodec类可用于访问Android底层的多媒体编解码器,例如,编码器/解码器组件. ### 对mediaCodec各种状态的理解 ### FAQ:处理 ...
- 理解Session State模式+FAQ [翻译]
作者:Patrick Y. Ng 原文地址:http://forums.asp.net/7504/ShowPost.aspx 译者:Tony Qu 译者Blog:tonyqus.cnblogs.com ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面HMI自锁按钮和自复位按钮如何理解(Toggle variable Tap variable)...
我分别创建两个按钮,自锁和自复位,绑定到主程序的两个布尔值上去 自锁按钮是指点击一下为TRUE,再点击一下为FALSE,自复位按钮是指按下的时候为TRUE,松开的时候为FALSE(也可以勾选Tap F ...
- C#.NET常见问题(FAQ)-命名空间namespace如何理解
Namespace就是定义一个对象是哪个门派的,比如你现在就在A门派下,A门派的所有功夫(属性和方法)都可以不加声明直接调用.如果你要用B门派的功夫,就要先声明是B门派的XXX对象的XXX实例的XXX ...
- 轻松理解LTE网规网优FAQ基本概念
1.问题描述:为什么要从3G向LTE演进? 问题答复: LTE(Long Term Evolution)是指3GPP组织推行的蜂窝技术在无线接入方面的最新演进,对应核心网的演进就是SAE(System ...
- 两种HDR格式(HLG, HDR10)的理解
1.HLG只在sps的vui中会携带信息,包括colour_primaries(=9),transfer_characteristics(=18),matrix_coefficients(=9) 2. ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
最新文章
- 基于图神经网络的聚类研究与应用
- 这两年:我的数据竞赛之路
- 牛人是怎样用函数实现本地化测试的
- Oracle bootstrap$ 详解
- Java 斐波那契数列
- python笔记(五) - 获取对象的引用
- mysql数据迁移到sqlserver_Oracle,SQL Server,Mysql 三种数据库两表联合更新的方法
- 逻辑函数的化简方法——数电第二章学习
- python实现小波降噪_15转载python实现小波分解【实测成功】
- 91卫图助手免费版发布啦
- ps+背景缩放+内容缩放
- 将博客搬至CSDN_wuli大世界_新浪博客
- Linux 常用命令参考手册, 非常适合入门, 基本能满足工作日常使用。
- python使用win32和flask实现接收请求发送QQ消息
- Windows装逼操作
- 本地测试dubbo远程调用找不到provider
- 论文阅读 Adaptive Consistency Regularization for Semi-Supervised Transfer Learning
- SCARA四轴机器人eye-to-hand手眼标定(九点标定)
- ISO/IEC 29134
- Matlab的基本使用方法