很多回答都偏了,没有回答关键的地方——为什么不能用红蓝混合。
关键在于印刷色和发光色的混合模式是不一样的。
发光色是发射光,可以做加法。
你有一个波峰在红色的光,和一个波峰在蓝色的光,合在一起就是一个在红蓝各有一个峰的新光谱。
人眼中存在分别对蓝、绿、红三种颜色敏感的视锥细胞,所以这种光会同时刺激到红、蓝两种细胞。
而“真正的紫色光”对视细胞的刺激与之类似,所以会对人脑统一将其处理为了近似的颜色。
所以红加蓝等于紫,这也正是 RGB 模式的原理。
故此,RGB 模式多为显示器等,能够主动发光的设备所采用。
但是,对于波长小于 570mm 的单色光,是不能靠有限的单色光源模拟的。
具体原因请看如何知道人类看见的紫光是 400nm 的可见光,还是红光和蓝光合成的紫光?这两种光人眼能区别吗?
也可以看一看文末的加笔。
而印刷色是反射光,不能做加法,而要做减法。
红色颜料会吸收掉红色以外的光,蓝颜料会吸收掉蓝色以外的光,合在一起并不是会反射红色和蓝色,而是红颜料把蓝色也吸收掉了,蓝颜料把红色也吸收掉了。
比如,一个蓝颜料,蓝色反射率 90%,其他颜色 20%;红颜料,同理。
那么,这两种颜料混合,只会反射大概 18%的蓝色和红色(实际不是这样,这就是大概举个例子)。
最后的结果就是一种非常暗沉的紫色。
当然,你可以稀释它们,但是得到的颜色不是变亮,而是变灰(饱和度下降)。
因此,印刷业多采用 CMYK 模式,并使用减色法配色,和显示器完全不同。
但是,由于物理限制,不管你选什么作为基色,无论是 RGB 还是 CMY,都不可能调出所有颜色的染料,色域会非常有限。
所以印刷业加了个黑色 K,因为单纯的 CMY 连黑灰都表现不好。
如图所示,最外侧拇指状的 Lab 色域是人类的理论色域,sRGB 是普通显示器最多采用的色域,而 CMYK 是印刷最多采用的色域。可见 sRGB 并不能显示所有颜色,只有 35%左右,而 CMYK 则更少。
1.图中 RGB 实为 sRBG。
2.图片中颜色为假彩,和坐标并不对应。因为无论是图片格式还是显示设备都不支持真正的 Lab 色域。
3.上文提到的<570mm 的单色光在这个图片里表现为左上部的弧线。显然,它们全部超过了 sRGB 色域。
4.其实哪怕是基于 RGB 模式的显示器,也并不能完美的还原紫色……只是比 CYMK 颜料搭配出来的好而已……
图中可见,CMYK 并不支持那些“大红大紫”的高饱和度颜色。
时至今日,如果你想要非常非常鲜艳的紫色印染制品,比如下图这种紫罗兰色(Violet),也只能用真正的紫色颜料进行专色印染,而不能靠基本的 CMYK,成本也会高一些。(当然,现代贵的不是紫色油墨,而是使用专色所需的人工和设备……)
如果你使用 PS 等软件,使用 RGB 模式调出了高饱和度颜色,也会弹出这样的警告。
这都是在告诉你 CMYK 显色的局限性。
专色也需要调,但是高饱和的专色需要以高饱和度的颜料为基色调制。
比如你需要非常艳的紫色,那么就需要用高饱和度的紫,搭配一点点别的颜色。
而古人恰恰就是缺乏高饱和度的紫。
当然,也有一些很有追求的公司觉得“区区紫色”也得这么费事?于是搞了更复杂的色系。
比如潘通就搞了个七色系统:CMYKOGV。在 CMYK 基础上追加了橙、绿、紫三种颜色。这样就可以直接印刷出更多颜色了(当然,还是远远做不到 100%,金属色、荧光色照样得用专色)。
总而言之,古代不是调不出来紫色,而是缺乏艳紫色(也就是高饱和度紫色染料),这是调不出来的。
比如西方昂贵的“骨螺紫”,就非常艳。
这玩意的饱和度非常离谱,有 0.98,非常接近 1,几乎就是纯色了。
类似的,中国的紫草色也一个道理。虽然颜色没有这么夸张,但是也是红蓝染料配不出来的。
另外,还一个就是色彩稳定性问题。
有一个朋友谈到了糯米饭可以是紫色。这种紫色一般是用花青素类色素调出来的。
但是花青素的特点类似于中学用的石蕊试剂,会随着 PH 值变化而变化,酸红碱蓝中性紫。
其最大的问题是不稳定。
一方面,它在阳光下会分解,另一方面,人身上的分泌物会改变它的颜色……
没想到看的人还挺多,最后再补充一点点吧。
关于色觉这个问题,其实可能有人想过另外一个问题:
既然人类是三色色觉,但是为什么 RGB 还是不能表示整个色域呢?
这涉及另一个问题:人类到底是怎么形成色觉的。
人类的色觉可以抽象为入射光和三种刺激函数作内积之后得到的三元组。
这个描述可能比较难懂,我可以举个例子:
我们要网淘一部手机,那么每个人会有不同的评分标准。
比如:
那么,如果有一台手机是这样的:
那么,三个人的评分就会是这样的:
简而言之,就是个加权相乘再求和的过程。
人眼的三种细胞在可见光范围内的权重大概是这样的:
我们的眼睛就是经历了这样的一个运算,把一个光谱的各个波段的强度和对应的权重相乘,再求和,压缩成了 144-186-150 这样的三个数值。
那么问题就来了,如果有另一个手机是这样的:
评分则会是这样:
可见,虽然细节不太一样,但是最终的得分结果是一样的,都是 144-186-150。
眼睛也存在类似的问题——不同光谱的光,最终得出了相同的内积结果。这自然也会在人类的大脑中形成相同的色觉。
这被称为“同色异谱”现象——不同的光谱却对应了同一种颜色。
所以说,我们可以靠 RGB 三种颜色“仿冒”出相当多的颜色。相当于我们用了人眼的这个漏洞,将“花花世界”的复杂光谱转换成了看起来完全一样的,但是相对简单的 RGB 组合光谱。
这时候有人就说了:那不对啊!这样的话我们用三原色肯定能还原所有颜色的啊!
因为数学上我们可以证明,任意三个不共面的向量都可以构成一个三维空间基底。
看不懂没关系,我可以给出结论:
单纯从数学上讲,对于任意两两混合不得出第三者的三色光,确实可以混合出任意颜色的。
但是,上文却说了——“sRGB 并不能显示所有颜色,只有 35%左右”。
这是为什么呢?
这是因为,如果要表示整个色彩空间,需要某些颜色向量可以取负值。
但是由于现实中不存在负能量的光,所以取负值是不可能。
因此这张图里,sRGB 也只能表示三角框之内的颜色。
故此,虽然理论上 RGB 可以取负值的话,确实可以覆盖整个色域。
但实际上,
所以说,虽然人类是三色视觉,但是我们没有办法靠三种(甚至是任意有限多种)单色光光源模拟所有颜色的。
但是,假如有一天,脑机接口成熟了,可以直接刺激视神经,那么就可以真的在大脑中“播放”真·100%色域的图像了。
那个时候应该就会直接用 XYZ 色系了——直接对应红绿蓝三种视锥细胞的刺激值。
这种方式得到的色域甚至可以超过人类平时的色觉。
理论上 XYZ 坐标可以覆盖整个 Y=1-X 和正半轴围成的三角形的。
但是实际上各位也看见了,左上、左下和右下都是空的。因为现实中是不存在只刺激一种细胞,而另外两种细胞几乎完全不受刺激的光谱的。
但是如果我们跳过光谱,直接刺激细胞,是可以得到这种信号的。
不知道人类大脑会怎么处理这种“异常”的情况。