色彩校正中的GAMMA

下文为转载摘抄

作者:韩世麟
链接:https://www.zhihu.com/question/27467127/answer/37555901
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

第一节:韦伯定律

韦伯定律,即感觉的差别阈限随原来刺激量的变化而变化,而且表现为一定的规律性,用公式来表示,就是△Φ/Φ=C,其中Φ为原刺激量,△Φ为此时的差别阈限,C为常数,又称为韦伯率。

解释成人人都懂的大白话就是:人对自然界刺激的感知,是非线性的,外界以一定的比例加强刺激,对人来说,这个刺激是均匀增长的

第二节:中灰

对于中灰的定义,中灰就是人眼能分辨的所有灰阶的中间点
在这里插入图片描述
中灰就是队伍的最中间那个颜色。我们继续定义比中灰暗叫暗区,比中灰亮叫亮区,那么(在低动态范围下,)人眼可分辨的暗区灰阶的数目和亮区灰阶的数目是一样多的。这样的一个连续的灰阶体系可谓完美,用来描述画面再好不过了。

第三节:物理反射率检测

面对这样一个完美的从黑到白过渡的油漆颜料体系,我们如果去检测一下中灰油漆的反射率,再把它和纯白油漆的反射率相比较。若我们定义白油漆的反射率是100%,黑油漆的反射率是0%,你会发现,中灰油漆的反射率不是直觉中的50%,而是一个在20%上下徘徊的数值。生活中早有这种类似的东西,比如摄影师的灰卡,反射率是18%:
在这里插入图片描述
人心目中看起来中灰的色块,其物理亮度值大约在白色块的20%左右。

根据韦伯定律,这件事是好理解的,下图是非常粗略的示意图:
在这里插入图片描述
此图原点是黑色,1,1点是白色,你可以这么理解此图:当整体环境较暗,微小的亮度增长也会在人的心目中是显著的明度提升,当物理亮度达到白色的20%左右的时候,人的心目中已经感受到中灰色的概念。而剩下的一半高光区的灰阶,需要用白色80%的物理能量才能照亮成白色。

视觉感受的中灰色是白色反射率的20%左右。(注:白色为低动态颜色1.0)

再换成更不精确但更好用的话就是:自然界的0.2,在心目中的地位是0.5。

第四节:“灰阶预算很紧张!”

现在如果生产一套畅销蜡笔,但是灰阶预算超紧张,只允许你放进去3支不同灰阶的蜡笔,你会选择哪几个有代表性的灰色进行生产呢?我想最合理选择的就是黑、白、中灰了吧,用它们可以尽可能多的描述画面的灰阶过渡,而这三支笔,借用之前的编号体系,他们的灰阶编号分别为:0.0、0.5、1.0。反射率分别约为:0%、20%、100%

现在放宽要求,这套蜡笔可以是4色一盒,那么编号0.0、0.33、0.66、1.0的四支蜡笔入选。反射率分别约为:0%、9%、40%、100%
在这里插入图片描述
如果是5色一盒呢?则编号0.0、0.25、0.5、0.75、1.0的蜡笔入选。反射率分别约为:0%、5%、20%、53%、100%
在这里插入图片描述
不同灰度蜡笔的物理反射率你是怎么知道的?

查这张曲线图啊,从纵坐标挑选蜡笔的颜色,横坐标上就是它相对于白色的反射率了,中灰是20%左右的情况下,其他的数据位置也都是可以推算的:
在这里插入图片描述
第五节:广义Gamma
上文这个0-1区间的曲线,就是所谓的Gamma曲线。我们若定义黑是0,白是1,那么在0-1区间,我们是可以用一个幂函数来描述客观自然数值和主观心理感知的对应关系的:
在这里插入图片描述
Gamma取值不同的时候,幂函数图像是如下规律:
在这里插入图片描述
Gamma等于1,斜45°直线,不校正,输出=输入;

Gamma大于1,曲线下压,输出值小于输入值;

Gamma小于1,曲线上拱,输出值大于输入值。

生产蜡笔的时候,我们输入一个主观概念:“我想要一支编号0.5的蜡笔”,输出了一支蜡笔,其反射率是20%左右。那这个Gamma是大于1的下压Gamma,它把0.5映射成了0.2。

欣赏蜡笔画的时候,输入眼睛的亮度正比于颜料在画纸上实际的物理反射率,“输出值”就是我们心目中主观感受的灰阶。此时的Gamma上拱,小于1,可以把自然界的0.2的反射率,映射成心目中的0.5灰阶。

看懂了吗?广义Gamma实际上描述的就是自然现实的物理量和主观视觉灰阶的映射关系。这个关系是非线性映射。

从这个观点看的话,广义Gamma无处不在,而且极具启发性:我们最熟悉的铅笔素描,使用黑色铅笔涂抹暗部,白色是由白纸留白形成,那么其画面上的中灰部,铅笔覆盖率是多少?答案是80%,留下20%的纸面,这20%的反光,在我们心目中看起来是中灰色的概念。

此时灰阶和谁形成了Gamma关系?“心目中的灰阶”对应“铅笔涂抹的工作量”。

也就是说,人们只凭目测,天生就可以把自然界的画面,映射成正确的颜料覆盖率,在这个过程中,全凭视觉的主观判断。视觉感受主导了一切。说白了,媒介上的灰阶分布,人是通过目测来调的

第六节:数字摄影和屏幕

第四节中,3色一套、5色一套的蜡笔我们如果想得明白,那么推广到我们生产一盒256色的灰阶蜡笔,它们的反射率和蜡笔编号的映射关系,我们也是能想明白的:

蜡笔反射率=蜡笔编号^Gamma

256色的蜡笔想得明白的话,这256个灰阶和电脑屏幕的像素有区别吗?没有任何区别。纸张是画面媒介,屏幕也是画面媒介,区别只是反射率变成了像素的光强。

屏幕光强=灰阶编号^Gamma

我们先把8位每通道图像的数值,换算到0-1区间。8位图上0是黑,255是白,中灰色是128。换算以后,黑是0,白是1,中灰是0.5。

要注意,8位每通道图像,灰阶预算极其有限,仅有256个,如同一盒256色的灰阶蜡笔。

当我们在用数字相机拍照的时候,相当于对自然界采样,并把数据编码到图像文件中。

假设光照适宜的场景中有一个中灰色的物体,反射率是白纸的0.2,我们采样到它的时候,应当把0.2的物理能量用0.454的Gamma放大到0.5的灰阶地位记录下来,这样一来,暗部区域就分配到128个灰阶了。我们充分地利用了存储空间。

如果在拍照的时候不进行Gamma校正,那么中灰物体会被映射为0.2记录下来,那么此时,暗部仅分配到50个灰阶,暗部采样严重不足,高光采样冗余。

来到屏幕上,也就是文件解码端,此时屏幕从计算机中读到一个0-1的渐变,也就是从黑到白的均匀过渡,图片如下:
在这里插入图片描述
其中左端的色彩值是0,中间的色彩值是128(0.5),右边是1.0的纯白。解码后,屏幕要以什么样的亮度显示这些像素呢?最左边像素关灯不显示,是黑色,中间以白色21.8%的亮度显示,右边像素全开,显示100%白色。这样的一个图片,在我们心目中看起来是均匀的灰度渐变。

此时屏幕的解码Gamma是2.2,这个Gamma,会把0.5映射成0.218。

从这个角度来看。其实眼睛跟“照相机”真的挺像,我们看见自然界0.2的东西,就把它映射成0.5的地位,记到脑子里了。

总结:

Gamma=2.2怎么来的?

是实践中目测调整出来并最终确定的,其实说良心话,只要是0.5中灰对应白色的20%左右,画面看起来都是靠谱的,所以当年的Gamma特别多种多样,在2.2上下浮动(1.8-2.5)。

1996年微软和惠普在特定的光照条件下测试人观看显示器的感受,他们认为,把8位图像中128号灰(0.5灰)这个抽象的、代表心目中中灰色的数值,对应以白像素21.8%的亮度显示出来,由黑到白的渐变过渡看起来会比较均匀。最终对应的Gamma就是2.2。

那么他们定了这个标准,后世的硬件也就都往上面靠了,包括拍照的时候,编码Gamma也就取了1/2.2=0.454。这样能保证整个编码解码系统总Gamma是1,高保真,自然界中的色值能在屏幕上相对完好的再现。

凡是说Gamma 2.2来自于老式CRT显示器物理特性的解释,都是误解。

这个误解一般会这么讲解Gamma的来龙去脉:当年老式的CRT显示器内置Gamma 2.35左右,解码的时候会把输入信号压暗,所以我们呢,为了保证总Gamma接近1,就要预先在编码的时候把输入文件的信号提亮,而且这样一来呢,刚好顺应了人眼对暗部感兴趣的特点,把暗部的信息多多记录了下来,充分利用了文件的空间,真是美妙的巧合啊。

讲起来顺畅,听起来也很美妙,我也曾经这么给别人讲,但是我发现我没法说服我自己,人类就被一个老式硬件的物理特性决定了后世的工业标准?这逻辑不对。

为啥错,比如当年要是没有先发明CRT显示器呢?假设我们先发明了一个物理Gamma为1的显示器。

当输入8位图像0.5的数值的时候,它还是要乖乖的把这个0.5映射成白像素的20%输出出来。否则看起来就不是中灰,8位每通道的显示器Gamma必须在2.2左右,跟显示器发展史没关系,完全是视觉效果决定的。一切都因为韦伯定律。

为什么一直强调低动态图像?

这个其实涉及到“自然景象再现成画面”这样一个复杂的事情,自然界是高动态的,亮度可以非常亮,也可以有一些明亮的光源,所以我在描述中灰的物理量的时候,我不可能描述成场景中最亮的物体亮度的20%,这个最亮的概念会非常不好确定。

同一个明亮的场景中,中灰纸张应该是白纸反射率的20%而不是灯泡能量的20%。我如果把高亮物体牵涉仅来,事情就乱了。

但是我可以用绘画举例子,画布的动态范围是有限的,最亮不过是画布上的留白,屏幕的动态范围也是有限的,最亮不过是白像素。所以在低动态范围的语境下,我可以安全的定义,中灰蜡笔的反射率是白色蜡笔的20%左右,中灰像素的亮度是白像素亮度的20%左右,而不是现实场景中最亮物体的20%。这一点是很关键的。

灰阶预算很紧张

只有灰阶有限,我们才需要考虑中灰映射给谁的问题,如果灰阶足足的够用,硬盘不要钱了,网线足够粗,我们主流不再使用8位每通道图片记录亮度信息的话,Gamma是没必要的,我们直接把自然界的0.2记录在文件上,显示器读取到0.2,也直接显示就好了——32位每通道的hdr格式就是这样的

32位格式中,中灰就被记作0.218,所以在32位环境中拉一个0-1的渐变是这样的,很明显暗部被压缩了,高光区很多:
在这里插入图片描述
这张图怎么理解?它还是0-1的均匀渐变,中间那个颜色还是0.5,只不过32位图中的数值就是自然界的物理量,所以这个色带对应的其实是现实中的反射率。

左边五分之一20%处是中灰色,中间的像素表现的是反射率为白色50%的物体看起来的灰度,这个灰度是0.5^0.454=73%灰。也就是8位下的186灰

具象的说,如果我有一支蜡笔反射率是50%,看起来就是中间这个灰度。

疾风齿轮:

简而言之,gamma值就是对动态范围内亮度的非线性存储/还原算法

1 - gamma值的存在,归根到底,是一个解决方案,用于化解“无限的自然存在,与有限的存储容量/传输带宽”之间的矛盾。

2 - 人类对于外界刺激变化程度的感受,是指数形式的

3 - 综合1、2两点,非线性存储方案就是很自然的结论,gamma=2.2就成了影视业的业界标准,并进而成为电脑、IT界的事实标准

4 - gamma值的变换分为两个部分:

实际亮度→内部存储(或信号传输):存储数值≒物理亮度的1/2.2次方。
这个环节对应于摄像、sRGB图片存储过程。·

内部存储(或信号传输)→显示还原:显示物理亮度≒存储数值的2.2次方。
这个环节对应于摄像、sRGB图片的显示(还原)过程。

在这里插入图片描述
Gamma值是灰阶亮度值与灰阶等级之间的数学关系。

灰阶从暗到亮分为256级的话,把亮度也分为256级,

假设最暗的亮度为1,最亮的亮度为201,gamma值为2.2,

那么第5阶的亮度=(201-1)*(5 / 256)^2.2 + 1

在这里插入图片描述

Lux(grey) = (Lmax - Lmin) * ((grey+1) / 256)^2.2 + Lmin

grey: 0 ~ 255灰阶

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值