色彩管理中的Gamma值的理解
目录
- 广义的Gamma值
- 为什么要将输出和输入做Gamma运算?
- 显示器的Gamma值
- 什么是Gamma值为1.0线性响应?
- 显示器的Gamma值标准是多少?
- 为什么sRGB在Gamma0.45空间?
- 打印机、印刷机Gamma值?
- 印刷机Gamma与显示器的Gamma的比较
- 参考文章
广义的Gamma值
Gamma值的广义定义就是输入值和输出值的Gamma幂指数关系,用来补偿人眼对自然亮度的非线性感知。输入与输出关系如下图所示:
输入和输出的关系可表达为:输出 = 输入gamma
Gamma=1,斜45°直线,不校正,输出=输入;Gamma大于1,曲线下压,输出值小于输入值;Gamma小于1,曲线上拱,输出值大于输入值。
为什么要将输出和输入做Gamma运算?
上面提到,Gamma为了解决人眼对自然亮度非线性感知的问题,其二是因为记录存储的有限性。举个栗子:一间黑屋子中,点亮了一只灯泡A,人眼会感觉照亮整间屋子,持续点亮第2个、第2个…灯泡后,人眼会感觉屋子逐渐变得明亮,此时再点亮第N+1个灯泡,其实人眼没有什么感觉甚至微乎其微,为什么?
- 亮度对人眼的刺激是非线性的,第1个和最后一个灯泡点亮对人眼的刺激感觉是不同的;
- 人眼感觉黑->白范围“有限”,灯泡可以无限,但感觉会趋于一个有限制值;
分析:此时输入是灯泡的强度,输出是人眼的感觉,大自然中,感觉的差别阈限随原来刺激量的变化而变化,这是著名的韦伯定律,下图显示了自然界的线性增长的亮度和人心里感觉的灰介关系图:
当物理亮度达到白色的20%左右的时候,人的心目中已经感受到中灰色(即0.5处)的概念。而剩下的一半高光区的灰阶,需要用白色80%的物理能量才能照亮成白色。根据输入和输出的关系,可确定此时的Gamma大约在1.8~2.5,而现在大多数用2.2。
所以,GAMMA值的应用非常多,如图像的拍摄中的相机的GAMMA、图像显示中的显示器的GAMMA、图像输出中的打印机、印刷机等GAMMA等,不同设备的GAMMA描述的都是此设备的信号值对应的亮暗关系,而且,这些关系都是非线性的。
显示器的Gamma值
显示器的Gamma值表示了输入信号的颜色值以及发光的亮度之间的关系,也就是输出时从黑到白的亮度过渡。同样,其也是非线性关系的。使用不同的Gamma值:1.0(线性响应),1.8~2.2(较暗的图像),3.0(过暗的图像)显示同一幅图像:
可见,较低的Gamma值(1.0)有一个较亮,较平稳的显示;而较高的Gamma值(2.2)有更高对比度的较暗的显示。现在显示器一般用8位深的RGB来记录数字图像,所以最大的数据存储量就是28 * 28 * 28 = 16,777,216,如果使用线性的方式进行存储自然中的亮度,那可能根本不够用。所以拍摄的图像先用GAMMA进行压缩,保留了大部分的中间和暗调细节,再通过GAMMA释放(校正)并显示,展示给人眼看见,保证了人眼在显示器上感觉和自然中相同。
什么是Gamma值为1.0线性响应?
对于采集设备,如相机或者扫描仪,Gamma为1.0的时候,图像不存在压缩和释放,直接将原自然高动态亮度1:1输出为高动态显示信号,如果不对图像进行GAMMA校正,整体图像会显得更亮,会失去更多的中间调和暗调,同时图像文件的大小也会更大。如我们熟知的RAW工作流程就是一种线性GAMMA流程。
显示器的Gamma值标准是多少?
GAMMA值没有标准,如果要正确的找到GAMMA的标准,只能通过每台显示器的调整GAMMA更适合人眼的感觉,即感觉白-黑之间的渐变平滑,而且中间灰处于0.5中间的位置,如下图(8位深的RGB编码模式下):
一般而言,显示器的GAMMA值会在1.8~2.5之间。由于最初的CRT显示器的GAMMA采用2.2,所以现在大部分显示器还是沿用2.2作为推荐的GAMMA值,但Mac中使用1.8。没有对与错,最正确的方法则是通过灰介自己找到最佳的GAMMA值。
未使用GAMMA校正和使用1.8GAMMA校正的图像对比
为什么sRGB在Gamma0.45空间?
假设你用数码相机拍一张照片,你看了看照相机屏幕上显示的结果和物理世界是一样的。可是照相机要怎么保存这张图片,使得它在所有显示器上都一样呢? 可别忘了所有显示器都带Gamma2.2。反推一下,那照片只能保存在Gamma0.45空间,经过显示器的Gamma2.2调整后,才和你现在看到的一样。换句话说,sRGB格式相当于对物理空间的颜色做了一次伽马校正。
还有另外一种解释,和人眼对暗的感知更加敏感的事实有关。
如图,在真实世界中(下方),如果光的强度从0.0逐步增加到1.0,那么亮度应该是线性增加的。但是对于人眼来说(上方),感知到的亮度变化却不是线性的,而是在暗的地方有更多的细节。换句话说,**我们应该用更大的数据范围来存暗色,用较小的数据范围来存亮色。**这就是sRGB格式做的,定义在Gamma0.45空间。而且还有一个好处就是,由于显示器自带Gamma2.2,所以我们不需要额外操作显示器就能显示回正确的颜色。
打印机、印刷机Gamma值?
流程中的所有设备都有它们自己独有的Gamma特性,这也是为什么用Gamma查找表(LUTs)来生成显示器的Gamma以匹配其它设备的Gamma。如专业的扫描仪的Gamma值一直都是1.0,这样可以在扫描过程中得到最大的线性响应,而便宜的扫描仪则使用较高的Gamma值来避免多余的暗调噪声。
对于胶印,GAMMA是CMYK比例和人眼的亮度刺激关系,也就是密度值大小,所以我们通常使用“网点扩大”或者“TVI”,而不是“Gamma”,但是两者同理。它是设备的阶调响应以及中间调的主要影响因素,这点与Gamma类似。印刷机的网点扩大有点像1.7,1.8的Gamma。但是实际的值取决于印刷机、纸张、油墨等。相关的因素比显示器的GAMMA校正多很多。
印刷机Gamma与显示器的Gamma的比较
事实上,如果观察一幅印刷图像,你实际会看到低亮度和高光部分的压缩,因此,在曲线图上,印刷图像的色调曲线或Gamma曲线会呈现S形。
显示器的Gamma曲线在端点只会沿着一个方向伸展,这取决于显示器的模拟状况。这就是为什么显示器上的图像一直比印刷图像呈现出更大的对比度的原因。
参考文章
色彩管理中的Gamma值的理解
伽玛(Gamma)2.2和5个预设Gamma值
Gamma、Linear、sRGB 和Unity Color Space,你真懂了吗?