当前位置:文档之家› 了解伽马(GAMMA、伽马值、光度、灰度系数)

了解伽马(GAMMA、伽马值、光度、灰度系数)

了解伽马(GAMMA、伽马值、光度、灰度系数)
了解伽马(GAMMA、伽马值、光度、灰度系数)

了解伽马(GAMMA、伽马值、光度、灰度系数)来源:pconline 日期:2007-08-26 00:05

一. 在哪见过、听说过Gamma?

* 还用说,Adobe Gamma

* 常听说MAC的默认Gamma是1.8,PC的是2.2

* 我的显卡驱动程序里有Gamma调节

* 我下载了一个软件,也可以调节显示器的Gamma

* WinDVD播放器带Gamma校正功能

* ACDSEE的曝光调节里可以调Gamma

* ACDSEE的选项中有Enable Gamma Correction

* XV Viewer 能以参数-gamma 2.2 启动(x window也可以)

* PNG文件里有Gamma校正

* Photoshop里当然也有

* ICC Profile也和Gamma有关?

* 摄像头、数码相机、扫描仪?胶片?……中也有提到Gamma的……

这些都是怎么回事?

图:显卡(驱动程序)上的Gamma设置

图:ACDSEE中的曝光调节

二. 什么是Gamma?

2.1. 显示器Gamma曲线

Gamma可能源于CRT(显示器/电视机)的响应曲线,即其亮度与输入电压的非线性关系。

图:一典型显示器的响应曲线,非常接近指数函数

(说明:上图中输入值为数字化的,即通常的RGB值,但可以理解数/模转换是线

性的,所以它和输入电压是等效的)

归一化后,我们通常可以用一简单的函数来表示:

output = input ^ gamma

gamma就是指数函数中的幂。

图:归一化的Gamma曲线

注意上图曲线的一些特性:

* 端点是不变的,即不管gamma值如何变化,0对应的输出始终是0,1的输出始终是1(这一特性会被用到)。这可能是gamma又被叫作“灰度”系数的原因吧。

* gamma > 1时,曲线在gamma=1斜线的下方;反之则在上方。

另外说明一下,虽然是以显示器作为例子,但可扩展到一般的图像相关的输入/输出设备。Gamma曲线应该是普遍存在的,即使它不是严格的指数关系,可能还是会这么通称。至少我知道的数码机机/摄像头里的sensor也存在gamma 曲线及gamma校正。

2.2. 检查显示系统的Gamma值

在PC上,好像还没有什么软件方法可以得到系统的Gamma值(4.1会说明这一点)。有人做了一些图片,可以粗略估计。其原理和Adobe Gamma类似。

图:Gamma对照图

使用方法:与Adobe Gamma类似,即眯着眼,或站远点,或近视眼取下眼镜,总之当左边糊成一片,而右边某栏的亮度和左边相当时。注意:如果您没有做任何Gamma校正(没有使用Adobe Gamma之类的软件,或虽使用了但校正系数设为1.0),测得的才是显示器的Gamma,否则只能称为系统Gamma(或复合Gamma)。如笔者的ACER AL1916W的GAMA值为2.0左右。

另外,通过显示器自带的ICC Profile是可以知道显示器的Gamma的,这个应该比较准。

三. 什么是Gamma校正?

从一个数字化的图片文件,到我们最终看到的图片,中间要经过许多环节。几乎在任何一个环节上,都可以加入一些变换,以改变最终输出和最初输入的关系(类似的,这种关系被称作系统Gamma或复合Gamma)。

比如,对gamma=2.5的显示器,在数据传递到显示器之前,将其做一个gamma=0.4的变换(比如对显卡缓存中的数据,d’ = d ^ 0.4),这样就能从总体上得到一个线性的关系。

注意这里有一点混乱。通常我们说做一个gamma=c的校正,意思是指做output = input ^ (1/c)的变换。有一个倒数关系。

图:Gamma校正示意图

对于PC,显示器的Gamma是2.2左右(可能以前更多的是2.5,现在好像趋向2.2了),一般没有内置的校正,所以我们说Adobe Gamma对Windows系统默认的校正系数2.2。对于MAC,显示器的Gamma是2.5,硬件内置了1.4的校正,

所以它还需要2.5/1.4~=1.8的校正才成为线性的。下文对各种系统下的gamma 校正过程有更详细的说明。

四. Gamma校正可能发生在哪里

4.1. 系统级(硬件、操作系统)

显示器内没有听说过有何补偿,即使有,它们也对外呈现一定的gamma值。

主要的补偿发生在显卡及其驱动程序类。如果显卡硬件不支持,则由驱动程序软件完成。在Windows中,上层通过调用驱动程序的一个接口函数(DrvIcmSetDeviceGammaRamp)向其传递Gamma校正表(LUT),这个表的大小是3*256项(每项16字节),对应于RGB三个通道,每个通道256级。

描述这一细节,可以对有些事情更有把握:

* 这种校正实际上可以是任意函数,而不限于gamma为幂的指数函数。

* 也是因为此,不能通过驱动程序得到系统的gamma值(因为最多只能得到那个表)。

* 这一设置对整个系统有效(任何程序,任意显示的图片都受它影响)。

以前我一直不明白Adobe Gamma和驱动程序的Gamma是什么关系,它们一起出现就不知所措。还有人说它们是共同作用的。现在我完全明白了,没有迭加关系,最后者的设置有效。而且,Adobe Gamma也不必是(实际上也不是)一个驻留程序,它仅在启动时将那个表传给驱动程序就完成了它的任务。

还可以用其它程序来校正/设置gamma,下面是一个方便的小工具:Gamma Panel。(查看本文中的图片,需要经常改变gamma,最好下一个,Free的。)

图:Gamma Panel,一个校正系统Gamma的小工具

4.2. 应用程序级

如前提到的,某些播放软件有Gamma校正功能,ACDSEE也有。这时,它们不是修改系统的Gamma校正表,而是在解码时对当前帧/图像作了实时的Gamma 变换。

图:ACDSEE浏览图片时可加载Gamma校正功能

相关主题
文本预览
相关文档 最新文档