Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2149389
  • 博文数量: 361
  • 博客积分: 10828
  • 博客等级: 上将
  • 技术积分: 4161
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-20 14:34
文章分类

全部博文(361)

文章存档

2011年(132)

2010年(229)

分类: LINUX

2011-05-05 16:34:06

数学公式可以深刻和精确的把握一个概念,却不能表达概念的物理意义和本质含义,本贴试图摆脱数学公式的陈述和推导,用言语来解释gamma的本质含义,献给无忌。

1什么是gamma?

对于CRT显示器,输入电压信号将在屏幕上产生亮度输出,但是显示器的亮度与输入的电压信号不成正比,存在一种失真,如果输入的是黑白图像信号,这种失真将使被显示的图像的中间调偏暗,从而使图像的整体比原始场景偏暗,如果输入的是彩色图像信号,这种失真除了使显示的图像偏暗以外,还会使显示的图像的色调发生偏移。gamma就是这种失真的度量参数。对于CRT显示器,无论什么品牌的,由于其物理原理的一致性,其gamma值几乎是一个常量,为2.5。(注意,gamma=1.0时不存在失真),由于存在gamma失真,输入电压信号所代表的图像,在屏幕上显示时比原始图像暗。如下图所示。

原始图像电压信号


屏幕输出图像(失真)



2 gamma概念的演化

gamma本来是显示器的输出图像对输入信号失真的度量参数。

2.1 gamma概念的第一演化(系统gamma和显示器gamma)

由于存在显示失真,这样的图像不能应用,所以需要校正这种失真。上文讲到,对于显示器来说,gamma值是常量,不可改变,所以校正过程就只能针对输入的图像电压信号了。这种校正就是将正常的图像电压信号向显示器失真的相反方向去调整,既然失真使图像的中间调变暗,那么在图像电压信号输入到显示器之前,先将该电压信号的中间调调亮,然后再输入到显示器,这样就可以抵消显示器的失真了,如图所示。

原始图像电压信号


校正后的图像电压信号


屏幕输出图像(不失真)
 

由于显示器的gamma值是常量,所以这种校正的幅度也是相对固定的,这种校正幅度的度量参数也叫gamma,这是gamma概念的第一次演化,为了区别这两种不同的概念,此处的gamma又叫做系统gamma(因为对图像电压信号的校正过程发生在电脑系统中),显示器的固有的gamma又叫做显示器gamma。

2.2 gamma概念的第二次演化

显示器gamma表示一种失真,系统gamma表示一种校正,这两者共同之处是都表示对原始信号的一种变换,所以gamma概念发展到这里,其一般性含义已经又两层含义,a表示对原始信号的一种变换, b表示这种变换的度量参数。

2.3 gamma概念的第三次演化(文件gamma)

既然gamma的一般性含义是对原始信号的一种变换,可想而知,文件gamma也一定表示一种变换,这是一种什么样的变换呢?

从宏观上讲,被照相机拍摄的物体的亮度是连续变化的,如果将亮度连续变化的被摄物体的图像转换成数字文件(计算机文件)时,无论用数码相机还是扫描仪,都要面临用离散的数值去近似表示连续的物理量的问题。具体来说,一个8位的二进制数字文件,如何编码才能比较精确的表示反差很大的一幅图像?

这要从人的视觉原理说起。人的眼睛感觉到亮度增加一级的时候,光强(光的能量)将增加一倍,同样,当人的眼睛感觉到亮度减小一级的时候,光强将减少一半。就是说,人的眼睛感觉到的亮度的成比例的线性变化,是由光强的倍数变化引起的。如果将一段连续变化的亮度从暗到亮等差分成a b c d e f g 七段,那么这七段亮度对应的光强不是1 2 3 4 5 6 7,而是1 2 4 8 16 32 64。打个数学比方,人眼感觉到的亮度是等差数列,而光强的物理实在是等比数列!为何如此,因为这样可以确保人眼即适应高亮度的阳光下的景物,又能在夜晚看清星光下的猎物,这是大自然的造化。

数码相机或扫描仪的感光元件,将会把光强变成电信号,然后由模-数转换器件转换成数字信号,继而再存储为数字文件。为了便于讨论,以黑白图像为例,一个黑白图片数字文件中每个象素用一个8位二进制编码表示,8位二进制编码只有256个量级,从0到255。就是说,一幅图片,最亮的地方用255表示,最暗的地方用0表示。这里有一个问题需要我们思考一下:比最亮处(编码255)暗一级的象素的编码值是多少?

答案是128,因为人眼感觉暗一级,光强将减小一半,这样感光元件的输出电压值将减小一半,从而模-数转换器件得到的数字值也是255的一半,即128。

依此类推,比最亮的象素(编码255)暗两级的象素的编码值是64,暗三级是32,暗四级是16,暗五级是8,暗六级是4,暗七级是2,暗八级是1。于是矛盾就出现了,第一问题是,亚当斯将曝光区分为11个等级,这种8位二进制编码方法无法表示11个分区,只表示了9个分区,分别对应的二进制编码值是0-1,1-2,2-4,4-8,8-16,16-32,32-64,64-128,128-255。更严重的是第二个问题,最亮的分区(128-255)占有8位二进制编码256个量级的一半量级资源,即占有128个量级,分别是128,129,130,……,253,254,255。而最暗的分区只占有8位二进制编码256个量级中的两个量级,分别是0和1,比最亮分区暗四级的分区只占有8位二进制编码256个量级中的8个量级,分别是8,9,……,15,16。这表明这种编码方法在最亮的分区中,表达的亮度细节非常的丰富,超过人眼的识别能力(人眼在亮处可以识别1%的亮度变化),可是在较暗的分区中,表达的亮度细节就少的可怜了,会出现马赛克!

所以需要对感光元件的输出的电压值在模-数转换时做一种变换,使得较暗的分区占有的二进制编码量级多一些,较亮的分区占有的二进制编码量级少一些,从而不至于使图像暗处出现马赛克,也使亮部占有的量级刚好满足人眼的最大识别能力。这样编码的数字文件可以较好的表示反差很大的一幅图像。文件gamma是表示这种变换的度量参数。Windows系统,WWW和sRGB规定文件gamma值为2.2。

2.4 gamma概念的第四次演化

a表示对原始信号的一种变换,泛指显示器gamma,系统gamma,文件gamma。
b表示这种变换的度量参数。
c 在不同的上下文环境中,会特指显示器gamma,系统gamma,文件gamma三个概念中的某个具体概念,注意领会。

2.5 概念总结(四种gamma)

2.5.1 gamma 

gamma在不同的上下文环境中,有不同的含义,一个意思是表示对原始信号的一种变换,另一个意思是表示这种变换的度量参数,还可能表示显示器gamma,系统gamma,文件gamma三个概念中的某个具体概念。

2.5.2 显示器gamma

是显示器的物理属性,固定的,不变的,不可校正的。显示器gamma在不同的上下文环境中,有不同的含义,一个意思是指显示器的输出图像对输入信号的失真,另一个意思是指这种失真的具体数值。

2.5.3 文件gamma

对一个给定的数码相片文件,按照相关标准规范, 这个gamma是一个定值,所以无需对其校正。如果出于某种特殊需要,一定要改变某数码相片文件的gamma值,这种改变也不能称作“校正”,而是称作“变换”。

2.5.4 系统gamma

系统gamma所表示的变换,是计算机系统在读取了照片数字文件之后,在输出到显示器之前的一种变换,对于windows系统它存在于显卡中,是可调节的,可校正的。

3在使用计算机处理数码相片时总要提到gamma校正,这里的gamma校正过程校正什么?

由于显示器gamma和文件gamma是固定不变的,gamma校正过程是校正计算机的系统gamma!,使得显示器gamma、系统gamma、文件gamma三个变换的叠加为1.0,从而使最终显示器的图像和原始场景一样,不存在失真。

这就好比密码通信,文件gamma是加密过程,系统gamma和显示器gamma是文件gamma的一种反作用,是解密过程,最后看到的结果和原始信息一样。
阅读(1345) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~