从10bit heif照片,谈谈HDR和SDR的核心技术理解

您所在的位置:网站首页 cmyk和rgb区别打印 从10bit heif照片,谈谈HDR和SDR的核心技术理解

从10bit heif照片,谈谈HDR和SDR的核心技术理解

2023-04-17 17:42| 来源: 网络整理| 查看: 265

引言:名词的理解歧义

影像学是一个综合学科,其实艺术是一个外壳,驱使运作的内核其实是技术。但影像和摄影摄像由于特别直观,所以很多约定成俗的名词在艺术和技术的理解是完全不一样的。这就造成了解释和理解的困难(比如:RAW没有颜色)。但这在手机/相机ISP的码农和打印驱动的码农不存在这种,他们必须要精确理解,因为他们是操控CPU或者DSP来处理颜色的,对于CPU/DSP来说,对颜色的理解是唯一的,不能存在歧义的问题。否则出片要么不准偏色,要么不能还原市场对客户的汇总,或者产品部门对艺术家的工作汇总。

我刚刚完成了 Canon 10bit HDR PQ heif和Sony 10bit HDR HLG heif 对 SDR 8bit jpeg的转换,原以为很简单的问题,折腾了好久。其根源就是理解错误,或者说理解歧义。这里把我走过的一些弯路罗列一下,帮助码农们(无论是影像、手机还是游戏)能更好的理解那些影像的Magic Number到底什么意思。

佳能的10bit heif策略貌似“荒谬”?

首先我们看一下上面的那个回答和视频。我原先以为佳能的设计错误,我只需要heif,为何一定要强制HDR PQ打开才给用heif呢?粗看这个流程设计有以下几个看似“奇葩”:

佳能 heif 必须10bit,没有8bit的heif。佳能 heif 必须 HDR,而且是HDR PQ模式。没有sRGB的heif,也没有Rec 709的heif。佳能 heif 10bit HDR 解码H.265以后无法直接显示,不是颜色的问题,而是亮度的问题。直接解码显示亮度发灰。只有在HDR PQ的显示器硬件支持的前提下,才能预览。也就是说,佳能的HEIF文件在支持HDR的电视机上,颜色才是正确的。在PC显示器上,需要特别处理才能正确显示照片。而一般摄友打开佳能10bit heif文件,其颜色和亮度都是错的。

仔细看这的确添堵,很多人其实就要个heif编码减少文件体积,或者说有的需要10bit。因为相对于干巴巴的RAW直出,10bit的heif带有佳能独有的“佳能色”,况且10bit相对于直出jpg的8bit,用户还有2bit有一定后期调图宽容度。很多人抱怨RAW直出没有佳能色了,其实这个10bit heif恰恰能满足“带佳能色的高比特照片”的后期要求。但可惜此时的10bit heif是HDR PQ的,贸贸然直接打开颜色都发灰了,根本看不到“佳能色”。而如果用户是在HDR电视机上播放,却能看到HDR佳能色的10bit 照片,可远观而不可亵玩焉?

所以,这就是使得很多人不用佳能HEIF方案,连老外也这么说[1]。不过当我实际解码了这个流程,才发现佳能的这个流程真的太对了,就该如此!为什么有这个转变呢?原因就在于10bit

关于10bit,我前面铺垫了一个解释,

不过这里先放一下,铺垫一下SDR后,我们再谈这个10bit的核心问题。

亚当斯区域曝光法和SDR

亚当斯的区域曝光,一直被当作摄影的圣经。不论是胶片时代的摄影师,还是暗房操作师傅,他们都知道这个理论。而进入数码摄影时代,处理RAW-->JPG流程的数码相机厂商,手机ISP厂家他们都应用这个方法来处理“直出”。网上亚当斯的理论[2]介绍很多,大家自己找便是。这里简单介绍一下:

不管黑白彩色,照片总归存在亮度。根据亮度关系,亚当斯把亮度由暗到亮分为11档。

左上角罗马数字的亮度分区11档

区域曝光的核心,是将被摄体所包含的各种不同的亮度范围分成11个区域。他们分别是从0(全黑)到10纯白区(罗马数字X)。这其中,最中间的5号区(V)叫中性灰,左侧5个区域是暗-->灰,右侧5个区域是灰-->亮。在摄影中,右侧四个区域(7--10,VII--X)叫“高光区”,左侧四个区域(0--3,0--III)叫“阴影”,中间3个叫“中间调”。同时最右侧10(X),就是照片相纸的本色(白色),用来表达照片最亮的地方;最左侧0就是全部是油墨、染料、冲印颜料,代表全黑,表达照片最黑的地方。而关键是中间5(V),这代表颜料的一半涂抹,这就是中性灰。我们用亚当斯的区域测光法,只是为了一个事情,确定照片的三个区域:高光、中间调和阴影(暗区)。

SDR:『中间调』就是在可显示灰度渐变色阶的中间区域

亚当斯这个划分,里面的重点就是“中性灰”。具体撸过代码的人都知道,这个其实是一个很抽象的数学解释,而且不确定[3]。这个不确定不是数学问题,而是“共识问题”。反正对码农来说,你们说啥就是啥,最后的共识是体现在公式上的,套用一个即可,这个复杂性这里不展开。

我们要了解的是:中性灰是怎么来的,怎么测的?知友 @韩世麟 有过一个“粉刷匠的故事[4]”非常生动贴切,大家可以具体参考这个具象的例子,就可以理解这个“中性灰”怎么来的,可以按照这个例子搞出渐变的样子。

这里敲一个黑板:在《粉刷匠的故事》里,中性灰不是物理的测光表光强读数,也不是粉刷颜料的50%覆盖密度,纯粹就是人眼的灰度色阶的色彩分辨率。注意,这个中性灰是人眼的识别,是人说了算,而不是机器。机器是用来标识的,人自己的眼睛才是这个实验的关键。这就是要理解这个《粉刷匠的故事》的核心问题。当然,柯达是做了大量的不同个人的人眼实验,根据数据汇总,最终制作了柯达的中性灰卡,但原理就是这个。

理解这个以后,我们撇开复杂的色彩科学数学公式,我们单单用亚当斯的区域曝光分析方法,来理解标准的色彩空间(sRGB、AdobeRGB、cmyk swop、CMYK Japan 2001uncoated这类色彩空间)。这里以sRGB做范例,我们不用去理会什么Gamma、18%灰、12%灰之类的烧脑概念,我们就按照上图亚当斯的方法去理解。亚当斯用0-10,11个分区去区别所谓“高光、中间调、阴影”。这里我们要注意,亚当斯的11个档灰度区域的划分,是非常概括的。但这没关系,我们要做的是确定不同灰度的分类,如下:

高光:灰度白区的25%——33%;中间调:灰度中部的33%——50%;阴影(暗区):灰度黑侧的25%——33%。

那么对于sRGB,我们RGB(0,0,0)表示亚当斯的11区纯黑,用RGB(255,255,255)去标识亚当斯的0区(纯白),剩下的9个区间均分sRGB 0-255,我们发现亚当斯的5区(V)中间灰应该大致113-142的范围。所以,不管sRGB怎么定义Gamma曲线,但大致上 sRGB 的理论中间灰度 127 是落在亚当斯11区域的中间范围(113-142)。我们把sRGB看作一个等效的显示器。

EIZO艺卓 CS2410 100% sRGB显示器

在这个显示器上,显示RGB(127,127,127)就是亚当斯的中间5区(V)的概念。如果我们在这个显示器上显示一个sRGB JPG照片。注意如下措辞:这个显示器提供的硬件中性灰RGB(127,127,127)是符合亚当斯的5区(V)定义的。同样,这个道理也符合AdobeRGB(比如一台EIZO CS2420显示器),也符合Display P3( Apple studio display 显示器),甚至符合CMYK SWOP,比如CMYK的Black 50%就是中间灰度,这和RGB 127一样。

也就是说,对于SDR无论是视频、照片、印刷(sRGB、AdobeRGB、Display P3、CMYK),SDR的绝对中间色是在整个色彩空间的中部,符合亚当斯的区域5(V)。而SDR的中间调,也是符合该SDR标准的硬件可显示灰阶区域的中部。通俗的说,对于SDR,中间调就是在中间。而这个“中间调”的由来,请参考前面的《粉刷匠的故事》,是源自人自己的视觉。

所以,这里有一个潜在被忽视的前提,亚当斯的区域爆光法,是面向最终呈现方式的。而在亚当斯的那个年代,这个呈现方式就是照片本身,或者说是黑白纸质相片。那么这个黑就是冲印颜料的全部覆盖,而白就是相纸本身的颜色,所谓“灰度5区(V)”那自然是“中间色”了。同样道理,在电视机的发展,到了显示器的发展,到了需要统一大家显示器的色彩的时候。固然有韦伯定律的加持,但是在设计标准本身的时候,是没有SDR vs HDR的概念的。就像亚当斯一样,视觉中间调当然是“硬件可显示灰阶的中间调”,这难道不应该天然存在吗?所以,设计了sRGB、AdobeRGB、CMYK swop等等标准,甚至Rec 709.。不管是否是 Gamma 2.2 2.4啥的,我只知道这类SDR色彩空间本身的中位线(127、128或50%)都在亚当斯的5区(V)范围内即可。

但HDR不是的。

HDR的视觉中间调,在可显示的灰阶范围的“暗部”

HDR在色彩科学上,其实是一个非常抽象的概念,看文字字都认识,但无法理解。很多人不懂Windows HDR开启的条件,以及开启都的处理方法[5],这导致他们总觉HDR亮度不对。其实,在把HDR用作生产力后期处理的时候,无论是在HDR还是SDR的操作环境下,一定要记住一点。HDR的可显示中间色和视觉中间灰不匹配,而是在HDR可显示灰阶的暗部。

因为这些标准是从印刷、冲印、纸张、显示器、SDR、HDR....这么一步一步发展过来的。在SDR显示器和纸张的显示环境下,我们可以认为“中间灰”就是“中间灰”。但是在电影院的环境,或者高亮度HDR显示器下,这种高亮度的“中间灰”其实还是非常亮眼的。

我们举一个Adobe的官方例子[6]:

Adobe ACR的HDR界面

可以看到,不管是10bit 0-1024,16bit 0-65535,视觉的“中性灰”也就是亚当斯定义的5区(V)实际没有在中间位置,而在靠左侧的SDR中间位置。不同的HDR标准,可能视觉中性灰在左侧的位置不确定。这造成一个事实,不管是10bit 的 512,还是16bit的中间位置 32768 ,这些HDR可显示灰阶的“中间灰”不是视觉中间会,不是亚当斯的区域5。原因很简单,这个显示环境和相片和纸张不一样。在HDR环境下:

视觉中间灰(亚当斯的5区),在HDR可显示的低数值区域。而HDR可显示的中间区域,是视觉的亮区。

由此,HDR的高光、中间调、暗部阴影的定义和SDR完全不一样。

HDR的视觉高光:整个灰阶的大部分75%。比如上图的SDR亮度+HDR亮度,大概是35%——100%的样子;HDR的视觉中间调:整个灰阶区域的左侧20%的样子,大约是15%——35%的样子;HDR的视觉阴影(暗区):整个灰阶区域最左侧5%,0%——5%的大致范围。

这只是一个估算值,不同的HDR标准,其视觉高光、视觉中间调、视觉阴影(暗区)的范围也不同。看下图的灰阶图,竖直的中间就是中性灰。

左侧纯黑纯青,右侧纯白。中间是灰度50%

这个PNG图展现的是显示器表现的灰度,比如SDR显示器的50%都在中部竖条。想象一下,如果是在iMAX的播放这个图,用户也会发现垂直的中间区域也是“中间灰”(设备中间灰),但是这个“灰”太亮了,长期看人眼不适应,虽然是“中间灰”但人眼感觉太亮了。所以这个“HDR中间灰”实际太亮了,和SDR那种视觉舒服的中间灰不一样。

实际上,HDR大多是用在游戏、视频这类动态环境下,因为有一个时间维度。HDR“设备中间灰”虽然也是属于视觉高亮度,但是时间一般不长。大部分时间的视频色彩是工作在SDR的区域范围内,也就是人眼的舒适区。

所以,HDR就不能用原来的SDR的曝光方法和曲线了。这就又涉及以下几个问题:

曝光的理解;何为线性色彩空间;为何HDR需要10bit;Tonemap映射曲线。

而里面“曝光”的理解是关键。

曝光的本质是区分度

“曝光”本来是传统摄影的领域,但是在数码时代,曝光的意义就不一样了。本质上,由于在亚当斯的年代,暗房是一个禁地,一般人无法涉入。所以普通用户只能处理“胶卷曝光”,而无法处理“定影/显影曝光”。所以,曝光便仅仅是用在“胶卷曝光”。但这在数码时代是有局限的,数码时代可以“向右曝光”、计算摄影可以“堆栈多次曝光”。这都脱离了原有传统胶卷曝光的意义,因为数码时代一方面可以后期ISP内部机器自动处理,一方面可人可以处理RAW解码器。

所以,我们要理解曝光的本质是什么?曝光的本质其实是区分度[7]

所以,对于摄影的整个流程来说,存在输入(拍摄)、中间处理(编辑后期)、输出(冲印或者显示屏的色彩标准)这三类的区分度。上面问题所谓的“相机宽容度暗部远高于亮部”这个是不成立的,因为对于机器来说是无所谓“亮部”和“暗部”的。从前面亚当斯11分区曝光法以及《粉刷匠的故事》我们知道,亮部和暗部一则是面向最终输出的,二来这是人眼的生物感觉量。如果我们能看实时的CMOS传感器的RGB三个通道的直方图,只要相机直方图最右侧不要溢出就可以了。但可惜的是,目前没有相机可以做到实时看RAW直方图,尽管对相机厂商来说是是举手之劳[8]。因为目前的直方图都是“输出曝光直方图”,而RAW直方图是“输入曝光直方图”。这两个概念是不同的。最早意识到这一点的,就是ACR/PS的作者,也就是“向右曝光”的作者。不是因为他们摄影技术、理论水平比传统胶片摄影的要高,而是他们实际撸代码。一下子就发现了这个宝藏[9],这是大神 Thomas Knoll(PS作者)[10]提出“向右曝光”的概念。“向右曝光”的“曝光”特指“输入曝光”的概念。也就是只要RAW RGB的光强数据不要溢出,用户可以增加进光量,尽量的铺满整个CMOS RGB的色阶分布(更好的输入区分度),已获得更好的信噪比和宽容度。因为一切都后期可调。

但这个问题的核心就是,“曝光”的定义早已被亚当斯理论占据了。RAW直方图所表达是“输入区分度”,而JPG直方图是“输出区分度”。如果提供了,那么整个曝光的意义就变了,大量摄影师就不习惯了,以至于错误曝光。所以,目前没有专业相机可以做到,目前的直方图是最后输出JPG的直方图,不是RAW直方图。目前看RAW直方图只能后期软件自己看,比如FastRawViewer[11]。

对于区分度的理解,我们把每个像素理解为每个学生。RAW曝光的区分度就是每个学生的高考成绩。总分越大,越能区分学生。所以,RAW是高比特(10bit、12bit、14bit、16bit)。而考生的投档,就是高光、中间调、暗部阴影的分类。而每个学校、每个专业的入取分数线,则是最终呈现的SDR、HDR的像素值。中间处理的流程就是Tonemap映射曲线。最终根据SDR/HDR对于暗部、亮部的不同理解,生成调整不同的映射曲线,以达到最优效果的显示。

这就是为何当用户选择HDR模式的时候,佳能的对于HDR要调整不同的曝光参数和后期参数,以最大利用HDR的现实特性。

线性空间的理解:RAW、线性空间、log、Gamma、HDR、SDR

很多同学对为何HDR的中间灰不在中间在暗部而不理解。觉得是否可以通过Gamma的设置,强行把HDR的中间灰位置放在中间。其实这个想法数学上是错误的。想象一下在影院的暗室中,播放高亮度的HDR片子,如果用播放一个HDR灰度,一个纯黑、一个纯白。您会发现,这个50%中间灰度就是50%。只不过您还是觉得太亮而已。所以实际上HDR已经用了韦伯定律做了Gamma的变换。而任何反Gamma的变换就是所谓“线性空间”。

而线性空间,其实就是CIE XYZ的人眼视觉函数。这里的线性,不是说人眼对于“亮度”的感觉线性,这个恰恰是非线性的,而是这里的线性是对于人眼三色混色的计算是线性的。只要任何在CIE XYZ划分的标准色彩空间,无论是sRGB、AdobeRGB、达芬奇ACSE、ProPhoto RGB,只要是在CIE XYZ划分的,都是线性的。

标准色彩空间的反Gamma,都是线性

这里要注意一个数学的理解,这里“线性”,不是说亮度标识的线性,而是亮度计算的线性。这个线性空间就是 CIE XYZ的三维体系。这个线性其实说的是在 CIE XYZ 三个维度上的线性。其实就是人眼三色视觉函数的横坐标必须是线性。这个线性就是“卢瑟观测条件”,这个线性决定了“混色”符合“卢瑟观测条件”,也就是不会偏色,确保颜色的准确性。这个“线性”说的是在 CIE XYZ空间内,划分的标准色域(sRGB、Bt.709、DCI-P3、ProPhoto RGB、ACSE...)在这个三维体内的混色是线性的,并不代表亮度、色度是线性的。这个线性,本质上是计算线性,而不是观看线性。这个搞游戏引擎的同学深有体会。

所谓“线性”其实就是这个横坐标是线性的所谓“宽容度”的理解

影像的所谓“宽容度”是一个数学概念,其实表达的是对于输入数据的“不可视”。也就是说,我们无法直接看到定影前的胶片、无法直接看到RAW数据。对于这个概念,绝大多数人是不理解的。大家看下面这个视频,说的就是中画幅相机的的“宽容度”。其实现在拜科技发展、工艺提升所赐,其实现在全画幅、残幅甚至手机CMOS也有超乎大家想象的宽容度。

“宽容度”的理解https://www.zhihu.com/video/1630565185030184960

大家注意右上侧的ACR的直方图,这是同一个RAW文件,如果直方图是表示RAW RGB数据的,那么这个直方图不应该发生改变。而这个视频内,随着曝光滚动条的拖动,这个直方图也发生了变化。所以,我们看到的是“输出曝光”量。

我们实际获得的曝光结果,是“输入曝光(拍摄曝光)”和“后期曝光(暗房二次曝光或者运算)”叠加的结果。

实际上,当在拖动“曝光”的滚动条时候,改变的是一个输入到输出的曲线,改变只有一个参数。而在数码时代,可以任意改变曝光曲线了。

调整后期曲线和曝光蒙版,可以使得所有暗部/亮部都出现细节

只要输入RAW有区分度,摄影师愿意可以用ACR的曝光蒙版,以及曝光曲线分别调整,使得所有细节都显示出来,不管事高光、阴影暗部都可以显示出来。包括视频的风光。

HDR/SDR都是针对输出的,和输入无关

HDR转SDR的流程

理解了曝光、线性空间,我们可以知道HDR转SDR的流程了。

根据HDR的不同,把HDR转入HDR 线性色彩空间(一般都是BT.2020)选择一条Tonemap[12]映射策略曲线,使之成为BT2020.sdr图像保存Bt2020图像

如果用户直接打开HDR在普通的SDR显示器上,不仅颜色偏差Bt2020 vs Bt709,而且亮度的不同使得影像和视频发白。所以,对于佳能、索尼的10bit heif照片文件,必须要转换后才能使用,不能直接打开。

参考^JPEG vs HEIF - How CANON deploys future format https://www.bilibili.com/video/BV1AJ411H78q/^亚当斯区域曝光法解析 https://mp.weixin.qq.com/s/qaLrUnPaiOvNOIUS8DaENg^中性灰不确定性的详解 https://www.acfun.cn/v/ac4405540^中性灰:粉刷匠的例子 https://www.zhihu.com/question/27467127/answer/37555901^Windows HDR官方支持 https://support.microsoft.com/zh-cn/windows/hdr-settings-in-windows-2d767185-38ec-7fdc-6f97-bbc6c5ef24e6^Adobe官方: HDR https://helpx.adobe.com/cn/camera-raw/using/hdr-output.html^曝光的本质其实是区分度 https://www.zhihu.com/question/319316891/answer/2561287467^无法实时看RAW直方图 https://roamwonder.tuchong.com/t/16142710/^2002/2003向右曝光 https://luminous-landscape.com/expose-right/^Thomas Knoll,PS作者 https://zhuanlan.zhihu.com/p/130954999^RAW 三通道RGB直方图,FastRawViewer https://www.fastrawviewer.com/blog/how-to-use-the-full-dynamic-range-of-your-camera^Tonemap进化论 https://zhuanlan.zhihu.com/p/21983679


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3