数值是如何工作的
我们暂且中断一下我们的讨论,转而考察一下我们在计算机里如何以数字的形式来描述颜色,或更精确地说,是编码的方法。我们将利用这个机会澄清一些经常使人们犯糊涂的问题。这些问题是数字化颜色的基础,不弄清这些问题就有可能将这些糊涂观念传递给色彩管理的使用,造成进一步的混淆。即使你非常熟悉有关二进制单位、字节、阶调和颜色这一些基本概念,这一节也值得回顾一下。因为我们将要提出几个关键性问题,是有关用数字表示的颜色与“真实世界”中的颜色,地者之间差别方面的体验。
计算机用数字将颜色进行编码的体系实际上非常简单:颜色值由几个通道的数据组成,而每一个通道又被分割为不同的阶调等级。就是这么简单!我们从一个简单的颜色感觉模型开始。事实上,所有颜色都是由红、绿、蓝色的光以不同强度混合而成的,我们按这样一个颜色模型进行编码,使之可以有效地存储、计算和传输颜色。在我们的编码系统中,通道数一般为三个,基本与我们感知颜色时使用的三原色方式相对应。编码系统中的阶调等级通常是256,对应于能够使我们产生连续调感觉所需要的最少阶调数量,也就是为了避免产生诸如条杠或阶调跳跃等赝像,不使观察者从图像中看出从一个阶调到下一个阶调之间出现明显不连续过渡感觉所需要的阶调等级数量。
为什么是256级
256这个数字在某些人看起来似乎是很武断和不可理解的。但是,这个数字在计算机和颜色的讨论中出现得太频繁了,因此值得将它的意义搞清楚。它并非那么神秘。我们只是期望能够表现出足够的阶调等级,保证观察者不会看出两个相邻阶调等级之间的阶调差别。研究表明,对于多数人来说,能够产租平滑渐变效果的阶调等级数量大约需要200级左右。那么,为什么不就只编码成200级呢?为什么是256级呢?这里有两个原因。
留出余量。在实际应用中,让数据留有额外的阶调等级余量是非常有用的,这是因为在复制过程的每一阶段(扫描、显示、编辑、转换、计算、打印),都不可避免地会发生阶调损失,阶调等级余量可以保证不会因为阶调损失而出现条杠,这一点对色彩管理来说是非常关键的。
二进制位。第二个原因就是我们使用数字位(比特)来表示这些阶调等级的值。7位二进制数字位仅能编码出128个阶调等级(27),肯定会使图像中的天空出现条杠,在时装模特的面颊上出现斑点。8位编码能有256个阶调等级(28),不仅可以满足阶调等级的需要,而且还有小小的余量。第三个采用8位的理由是,计算机是以字节能单位进行存储的,8个二进制位正好是一个字节。由8位构成的数量已经有很多用途了。例如,它非常适合存储一种字体的外形,可以容纳256个不同的字符形状,包括所有西文字母、数字和标点符号。一个字节的存储量对于编码阶调等级也是非常优秀的,这个数量与人类视觉系统对阶调的分辨等级正好吻合,这看起来似乎是一种不可思议的巧合,可工程师们太喜欢这种不可思议了。
数百万种颜色
于是,用8位编码,可以形成每个颜色通道256个阶调等级,这睚好符使用们希望在每个通道内存储的最小阶调等级数量。就RGB图像而言,三个通道的每一个都用8位存储,合起来就是24位(这正是为何许多人交替使用“8位颜色”和“24位颜色”两种术语来表示这同一件事情的原因)。如果三个通道的每一个通道都是256个阶调等级的话,则颜色编码的总数就是256×256×256,或者(拿出你的计算器)大约是1680万种颜色!我们用24位存储量(或小小的三个字节)就能编码出这么多种不同的颜色啊!
尽管这种基于3个通道、每通道8位的编码方式是常用的方法,因为它是以人类感知颜色的方式为基础的,但我们在需要的时候也可以很轻易地将它进行扩展。为能够比人眼识别更多颜色的设备提供颜色编码,这种扩展可以通过增加通道数量或增加每一通道内的存储字节来实现。例如,当我们为一台CMYK打印机准备一幅图像时,我们将通道由三个增加为四个通道编码,这并不是因为我们需要得到更多的可编码颜色数(实际上,我们需要的会更少),而是因为要为四色油墨的每一色分配一个通道,这是很自然的事情。
类似地,当要存储由一台颜色识别能力超过256级的RGB扫描仪所采集的图像时,我们经常将8位编码扩展,更高为16位编码(即所谓的“10位”、“12位”和“14位”扫描仪。尽管如此,因为我们都用整数字节来存储文件,所以实际上并不存在“10位”、“12位”和“14位”的文件格式,而只有8位和16位的文件格式)。
一人需要记住的关键问题是,我们这里谈论的所有内容都是关于编码的,也就是使用一系列可以利用的数值来对颜色进行定义的方法。然而,计算机可编码的颜色数量远远超出了实际可复制的颜色数量。实际上,它也远远远地超出了可感知颜色的数量。类似高端扫描仪这样的设备,能够比人类眼睛“感知”到更多的阶调等级,我们通常就可以通过扩展编码位数来解决编码问题。编码要解决的所有问题在于,每一种颜色都必须具有惟一的编码,因而可编码的数量总要多于我们实际所需要的颜色数量,就像电话公司必须保证每部电话有惟一的号码,于是就要准备多于实际使用电话数量的号码一样。
我们之所以要讨论这个问题,是因为它是理解用抽象的数字所表示的颜色,与用“真实世界”的复制设备,如打印机、显示器、扫描仪等,将这些数值能再现的相应颜色感觉之间的差别。要是你考察一下在实际中那些颜色数值是如何被设备翻译成“真实世界”颜色感觉的话,你就会发现,颜色值与所再现的颜色感觉二者的差别是非常大的。
正由于这些内容有助于理解颜色数值是如何工作,解释为什么我们到处都可见到像256或1680万这样的数字。但请不要忘记,直到它们被彩色设备翻译成真正的颜色感觉以前,它们只不过是一些纯粹的数字而已。
颜色定义与颜色
许多人都将定义颜色的数值与颜色的数值搞混淆。例如,我们说发送给CMYK打印机的颜色自然要编码为四个通道的数据,那么,8位编码的CMYK颜色真能达到256×256×256或43亿个不同颜色吗?理论上是的。任意四个通道都能产生43亿个编码,但当我们为这四个通道赋予C、M、Y和K数值的时候,我们并不能通过第四个通道(K)增加更多的实际颜色。事实上,许多CMYK编码表示的是相同的颜色。例如,50C、50M、50Y、0K组成的颜色,在理论上与0C、0M、0Y、50K产生的是同样的暗灰色。因此颜色编码有许多是多余的。这样一来,可能就会有人争论,是否增加了额外的K值就真能够比使用CMY三个颜色通道得到更多的阶调层次。但是这样会使我们现在要讨论的问题更复杂化了,还是让我们只简单地说,8位CMYK编码的实际颜色总数远远要少于43亿吧。
另一个例子是,我们曾经说到,有的扫描仪声称能够识别出远远多于8位编码的256个阶调层次。他们声称能够达到10位、12位,甚至14位的分辨能力。许多人都将这个颜色编码与扫描仪的密度动态范围弄混。密度动态范围是指扫描仪从能够可靠分辨层次的最亮白色,到能够可靠分辨层次的最暗黑色所构成的阶调范围。很多扫描仪制造厂家都声称这些“高比特”扫描仪能够提供比8位更大的密度动态范围,这种说法都是在混淆视听。密度动态范围是图像采集设备能获取模拟信号的界限范围,无论如何与编码位深度没有任何关系。高比特仅仅将设备的密度动态范围划分为更多的不连续梯级,使我们在编辑图像时具有更大的选择余地。你可以将密度动态范围理解为楼层的高度,而颜色位深则是楼梯所包含的台阶数量。显然,如果我们想要梯级尽可能小(这样做是为了避免阶调的跳变或条杠),密度动态范围大的要比密度动态范围小的需要更多的梯级,但密度动态范围与梯级这两者之间并没有直接和必然的关系。