首先要明确的一个概念是,世界上完全没有“颜色”这个物理概念。所谓的颜色,从某种意义上说只是我们大脑的一种幻觉。光是一种电磁波,既然是波,自然就有频率。对于动物来说,识别不同颜色的光波具有很重要的生存意义,比如说植物叶片和植物水果所反射的光波往往具有不同的频率,这种识别能力就有助于动物生存。那么既然要识别不同的光的频率,这就需要我们的神经系统对光的频率进行编码。
于是我们的神经系统建立了一种“三原色”编码系统,三种原色分别对应三种频率的光,可是可见光的频率是基本连续的,拥有无数种频率,三种原色是不够的。那怎么办呢?我们神经系统就用三种原色的叠加并且改变三种原色的比例来编码不同颜色的光波。
回到你的问题,阳光分解成的绿光与蓝黄色光混合而成的蓝光对我们的神经系统而言完全没有任何差别,他们在我们神经系统中的编码方式完全相同,但是他们的物理意义完全不同,阳光分解成的绿光可以认为是一种单频率的“纯光波”,而蓝黄色光混合而成的蓝光则是两种频率光波的叠加。
1,光是电磁波,可以是单一频率也可以是许多频率的组合,这一组合的模式叫做光谱功率分布(spectral power distribution,SPD)。自然界只有SPD。颜色只存在于生物的眼睛和大脑之中,所以任何名字里带“色”的术语都是人为的。2,仅仅单色光就有无数种,这还好,只是沿着“频率”这一个维度进行变化。
但这无数种单色光还能以无数种形式进行任意组合,这就成了一个无穷维的数据,处理它太困难了。当然我们可以进行压缩处理。比如从380到700nm里,每1nm设一个传感器,只管自己不管别人,这样就把无穷维的数据化简成了一个320维的数据,用320个数字就能唯一表达。
或者还可以进一步简化,每10nm设一个传感器,那就压缩成了32维的数据,甚至每100nm设一个传感器,那就成了3维的数据……这样做当然是有代价的,本来两种不同的光,被你这么一简化,可能就变得一样了。不同的简化方式各有所长,各有所短。
3,而人类的眼睛,就是这样一种简化装置。人眼有3种感光细胞,因此是3维的,用3个数字可以唯一确定。
4,因此,可以有两种完全不同的光,打在人眼睛上经过大脑处理得到了完全一样的刺激,这时人就会认为这是“同一种颜色”。比如,你窗外的彩虹的黄色一条,这是接近于纯色的黄光;你显示器上的“彩虹”的黄条,实际上就只是红光和绿光的混合。但是在你看来,这是一样的。5,因为人眼有3种感光细胞,所以人使用的显示器,用3种光就可以模拟大部分颜色。6,但是,没人规定这3种光一定是红绿蓝,红绿蓝并没有什么本质的特殊地位。
看看上图,人的感光细胞并不是真的落在红绿蓝三档。
7,其实所谓的三原色/三基色是这么回事儿:外面的曲线是绝大部分人能看到的全部颜色。你可以选择任意的三个点作为你的“三原色”——但是,你用它们混合出来的颜色,只能存在于它们形成的三角形的内部(除非你搞出了“负”的光,这在现实中不可能)。所以,出于实用角度,我们会尽可能设法让自己的三原色覆盖尽量大的范围。
这就意味着通常都是某种“红”、某种“绿”和某种“蓝”。但我也完全可以选择别的三原色,只不过代价是三角形覆盖的面积变小了,很多颜色做不出来了。8,另外,这也就是为什么彩虹的颜色不“全”的原因。彩虹全是单色光,不混合,自然有些颜色产生不出来。