当初听到伽玛(Gamma),第一个念头是gamma一定是高科技时代的技术,没想到看了前辈写的文章后,才知道gamma是旧时代的产物。话说由于早期CRT萤幕输入单位电压并不会产生等量的亮度(所以是非线性),为了正确地显示画面颜色亮度,刻意制定一个曲线关系(x轴为输入与y轴为输出),让最终输出的影像为线性颜色亮度的影像。即使现代能够制造出线性反应的液晶萤幕,这种现象仍然深深地影响影像处理,不管是后制、合成、调色或是3D算图渲染都离不开gamma这个技术。
我们人接受外界的资讯,视觉占了所有感官一半以上,Gamma这个概念(技术)最好能够了解!无论是输入还是输出或是介于其中,Gamma已经深入在我们眼前,过去使用CRT萤幕,现在使用LCD萤幕,它们的差异为何?为什么Mac要使用Gamma 1.8,而PC要使用Gamma 2.2呢?为什么做设计的人比较偏好苹果系列电脑?
Gamma是一个描述阶调(tone)特性的对数。字典里定义Gamma为一个数,指示影像明暗的对比等级,它可以是一条直线。一个更好对Gamma的描述是非线性指数函式,这个函式是以两个变数来定义:f(x) = x^γ。在以上两者状况,Gamma描述一条线性曲线或是在对数尺度的一条直线。
伽玛校正(Gamma correction)是个常被误解的观念。简单来说,伽玛描述了相机或萤幕的非线性(nonlinear)反应的现象。当一个相机接收到两倍的光强时,相机并不会把这个资料存成两倍的RGB值。有很多原因是为什么相机的记录系统会有这种记录方式,这种现象称为伽玛(Gamma)。其中一个原因是显示器感光本身的问题,例如底片具有非线性的感光曲线,另外CRT萤幕也有同样问题:像素的光亮强度跟输入的电压强度并不是呈现线性关系。
现代液晶显示器(Thin film transistor liquid crystal display (TFT-LCD))本身虽然没有先天上的伽玛问题,但是为了要迎合传统的工作流程,TFT-LCD萤幕会刻意模拟出伽玛的效果。
伽玛的基本观念(GAMMA 101)
1、所有的萤幕都有非线性的输出和输入反应,这是故意的。
2、大多数的2D软件都会以线性的颜色模型来处理,所以它假定,255数值的亮度是128数值的两倍。但由于显示器对于讯号的输出输入是非线性的,所以产生的亮度会是不正确的。事实上,大多数萤幕(gamma=2.2),如果你想要显示出255数值亮度的50%亮度的话 那你就必须要输入(0.5 ^(1/2.2))* 255 = 186的数值。如果你不考虑gamma的问题 输入128数值 就只会产生大约(128/255)^ 2.2 = 22%的亮度。
3、数位相机基本上具有线性的输出入效果,但因为通常我们会在电脑萤幕上面看拍出来的照片,所以数位相机会故意在照片里面嵌入gamma。(所以。JPG格式是带有gamma的,但是RAW的格式是线性资料,当你把RAW档转成JPG格式时就会产生非线性的照片了)。
4、因此,如果你用2D软件去开你照片拍出的jpg图档时,您必须要把gamma补偿回来(去gamma)。
5、如果你的图片是在2D软件产生的(基本上这张图是线性的),当你把这张照片显示在带伽玛的萤幕 你也要做gamma补偿。
更多
1、Gamma不是bug,它是一个功能,因为人的眼睛对光线的亮度具有非线性的感光反应。如果你每个颜色只有8 bit来记录颜色资料,很重要地利用这8 bit正确地重现人眼的感光效果很重要,它必须要是非线性的编码方式。即使是新一点的萤幕仍然有伽玛:通常显示卡会用8 bit来处理每种颜色避免色带问题,这8 bit必须每个强度看起来间距是等距的。制造萤幕的厂商有能力生产线性反应曲线的萤幕,但如果你用8 bit来显示图片,效果会很糟糕。
2、现今大多数电脑萤幕都以sRGB (standard RGB)的标准来显示,也就是伽马2.2。
3、大多数的数位相机也以sRGB纪录相片。如果是扫描进来的图或是合成图像就不会带有伽马2.2。
4、几乎所有的浮点纪录HDR资料是线性的,即与伽玛为1.0。
5、对于图片而言,「伽马」代表了强度是如何被记录的。换句话说:图档的gamma是为了要让图片在萤幕上能正确地显示出来。
6、有些图片会带有gamma的标签,但这是不可靠的,因为很多绘图软件会忽略这个标签。因此,要正确知道图档的gamma数值并不容易。
如果您的萤幕有2.2的伽玛而显示的图片看起来有很正常,那该图片可能本身就带有伽玛2.2。