【一】造成这种现象教材有一定责任,但也不能全怪教材。通常教材在讲到 RGB 颜色的阶段,匠术的内容还比较浅显,而 RGB 颜色空间在这时除了讲三基色以外,还没有什么很具体的内容适合继续深入,再要讲下去就是基色通道,但讲解通道还不是时候。于是教材就采取了“偷奸耍滑”的办法,趁着读者对于颜色空间还没有完整的概念,带着你不知不觉中偷偷转向,把 RGB 空间“类比”到 HSB 颜色空间,转来讲述颜色的色相、饱和度和亮度属性。
从教学意义上可以说这个偷换概念的做法是成功的,有效的,在学习的初期用糊弄的办法避开难点,但也让你不知道受到了糊弄,以为一切顺理成章而且严谨周密(其实我们的小学课本、中学课本也都是这么编的)。这是“教学技巧”,无可厚非。但是如果教材能够在完成自己这一阶段后,把真相如实的告诉你,说清楚什么地方避重就轻的采取了愚民政策,并且指出存在问题那就更好了。如果能再对这些问题回过头来加以重新认识和讲述,那真是比好还好,功德圆满了。可惜好事难以成双,或许这种教学方法成了套路,传统教学培养的后代作者本身在这些地方也比较薄弱,所以就习惯性的回避这些难点。此外越难的东西感兴趣的读者越少,也是原因之一。
不过当我们学过了基础理论之后,就有了条件把以前被糊弄的地方搞清楚。当初是不得已,但现在有了适当的基础,如果愿意是不难做到的。那就言归正传从颜色空间说起。
【二】颜色通常用三个相对独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间。而颜色可以由不同的角度,用三个一组的不同属性加以描述,就产生了不同的颜色空间。但被描述的颜色对象本身是客观的,不同颜色空间只是从不同的角度去衡量同一个对象。
颜色空间按照基本结构可以分两大类,基色颜色空间和色、亮分离颜色空间。前者的典型是 RGB,还包括 CMY、CMYK、CIE XYZ 等。后者包括 YCC/YUV、Lab、以及一批“色相类颜色空间”。CIE XYZ 是定义一切颜色空间的基准,很奇妙的是,它即属于基色颜色空间,也属于色、亮分离颜色空间,是贯穿两者的枢纽。我们主要要讨论的是色、亮分离颜色空间中的子类型“色相类颜色空间”,它是把颜色分成一个表亮属性,和两个表色属性,其中有一个表色属性是色相。而色相以外的两个属性可以选用不同的变量来定义,而色相的概念不变,因此就构成一族共同使用色相属性,另加表亮属性和表色属性各一个组成的颜色空间。它们是颜色空间中的一个家族。暂且统称为 HSB 颜色空间(但后面要详细划分)。
因为不同颜色空间描述的相同的客观对象,所以它们之间必然存在数量的相互转换关系,但是需要十分明确,RGB 和 HSV 空间,虽然在教材中狐狸糊涂的把他们纠缠在一起,但它们实质上是概念完全不同的颜色空间,它们的共同点是比较常用,也比较容易直观理解,但这是表面的联系。
只有以 R、G、B 为变量的直角坐标空间才称为 RGB 颜色空间,在 RGB 空间中,三个独立属性变量性质对等,相互加减运算有意义,任何涉及色相、饱和度等等为基本颜色属性的,还有跟“色轮”一类概念直接关联的、用角度表示颜色的等等,都是 HSB 颜色空间,绝没有混淆的余地。在 HSB 颜色空间中,三个颜色属性性质不同,你不可能把色相和饱和度加在一起,就好比时间不能与面积相加,恐龙不能与蚂蚁杂交。
我们还记得传统教材是通过色轮上几个基色和二级色与色轮角度位置的对应关系在两个颜色空间之间偷换概念的,但存在对应关系与两者相等是完全不同的概念。有常识的人都知道,人民币和美圆有兑换关系,但人民币是中国人民银行发祥的,美刀是美国联邦储备银行发行的,各属各自的金融体系。能兑换并不等于人民币就是美刀。RGB 与 HSB 颜色空间与此同理。
zhangwei5009 朋友提的是个好问题,说明已经清楚的意识到 RGB 与 HSB 颜色空间实质上的区别,也明确了两者之间必然存在客观的转换规律,并思考和探询两者之间的定量转换关系。提出这样问题的学习者不太多(我记得 zhangwei5009 很早就在短消息里提过类似问题),传统 PhotoShop 教材中除了千篇一律的重复六个基色、补色点以外,很少有教材在这个问题上有明确说法。
【三】颜色空间中没一个坐标点对应一种颜色,颜色空间要求颜色与空间坐标一一对应,即不能某一个点对应多种颜色,也不应该一种颜色对应多个坐标点。不过在 PhotoShop 这样一个实用工具中,在特殊情况下存在多个坐标点对应实质上相同颜色的现象,这是因为某些颜色空间的形状十分离奇古怪,为使用方便性考虑,做了一些权宜让步,把奇异的颜色空间形状虚拟为规矩的形状。这是一种程序设计技巧,因为这里主要偏重颜色理论讨论,这种应用技巧搁置不谈(但我们点明有此一说,而不是假装它不存在)。
关于颜色空间的宏观概念暂且打住,还是具体来看主要讨论的“色相类颜色空间”。前面已经概述过,色相类颜色空间由色相属性、另一个表色属性(通常称为“饱和度”即颜色纯度)和一个表亮属性构成,基本上它的三个属性是通过 RGB 空间的属性,即三个基色色阶值来定义的。色相的定义总是恒定,而另两个属性则有多种定义方式。
也就是说,把颜色这样一个综合概念拆分成色相和非色相两部分独立属性,这是固定的步骤,再把非色相属性拆分成另外两个独立属性,——有各种各样的拆分方式,因此构成一个家族,每种方式都是这个家族中的一个成员。那么具体到 PhotoShop 中的 HSB 颜色模式,使用是色相和哪两种属性呢,如果问题能这么问,那就谢天谢地了。PhotoShop 中对于饱和度属性与表亮属性的使用,与“色相类颜色空间”家族的庞杂关系同样混乱不堪,涉及 PhotoShop 中表示饱和度的有三种(或者说“两种半”)不同的“饱和度”属性,而表亮属性则有至少有六种,其中一部分相互结合并与色相属性组合,——据我目前所知——构成了至少三种实质上不同的“HSB 模式”也就是“HSB 颜色空间”。
具体说,取色器和“信息”调板上的“HSB”属于理论上“色相类颜色空间”中称为“HSB/HSV”的颜色空间;
“色相/饱和度”命令中的,是另外一种通常称为“HSL/HLS”的颜色空间,它的饱和度与“亮”属性的定义与上面差别颇大;“色相”、“饱和度”等图层混合模式中涉及的,又是另一种“色相类颜色空间”,这种组合没有通用名字,可能是 Adobe 系列软件自行定义和专用的颜色空间。
因为“HSB”这个名称已经给了第一种专用,为区别期间,以后统称“色相类颜色空间”我们改用“HS*”来表示。理论上的 HS* 颜色空间还有更多种变化,比较大的差别产生在表亮属性的定义,这不仅是 PhotoShop 中令人头疼的概念,也是整个颜色理论中乱如一团麻的概念。不仅六种以上的“亮”概念没有固定的术语将它们严格区分,而且它们表示发亮的数值也相互出入很大,例如两种颜色在某种“亮度”意义下认为亮度相等,而换一种“亮度”概念来看,他们的亮度可能相差九倍。