首先回答题主的问题:RGB三原色不是唯一的正交基,还可以有其他选择,只不过RGB能组合出来的颜色更为丰富。
人类的视觉是个很有意思的话题,即使在现在,仍然有一些没有搞清楚的地方。比如,为什么我们用RGB三原色就可以组合出几乎所有能看到的颜色呢?有一种说法认为,这是因为人眼只有三种感知颜色的细胞(锥细胞),在
@王赟 Maigo的答案里提到的那个曲线,就是人眼三种视觉细胞对不同波长光线的反应曲线。所以这种说法认为,既然只有三种感受颜色的细胞,那么色彩的原色就是三种。
这听起来是不是有点熟悉?是不是像一个线性空间表现出来的性质?
@经常检查节操的jc的答案说(色彩空间)根本不是一个线性空间,这还是有大大的误会的。在大量实验基础上,人们得到了格拉斯曼定律
Grassmann's law (optics)根据这个定律,颜色空间是满足线性性质的。幺元很简单就是数字1。那么构成线性空间还需要几个基本的条件:零元和加法逆元。
零元很简单就是全黑,加法逆元是不好理解的,因为光线只能叠加,不能相减。也就是说在色彩空间里面不存在“减法”。但是在实验中可以定义一个变相的“减法”。
实验中比较两个颜色是否相等,是用两个颜色的光分别照射两块用不透光隔板隔开的白色物体,如果人眼不能分辨差别,那么认为两个颜色相等。比如说一个颜色 C1 可以由 R1, G1, B1 三种颜色的光混合而成,是什么意思呢,意思是用 C1 颜色的光照射一个白板的左边,用 R1, G1, B1 三种颜色照射白板的右边,中间用不透光隔板隔开,结果人眼看不出中间的分界线,认为两边是一样的,于是我们认为 C1 = R1+G1+B1
在这个意义上,我们的“减法”,比如 C1-C2=C3 这样的形式,可以转化成 C1=C2+C3,也就是左边照射 C1 的光线,右边照射 C3 的光线,然后把 C2 的光线照射到右边去,这样就在实验意义上有了“减法”的手段。
王赟的答案中提到
以人类为例,人类感受到的三原色的强度,可以理解成光的能量谱(光谱的模方)与上面图中的敏感性曲线的内积。
实际上确实如此,上面的格拉斯曼定律就是这个所谓“内积”的具体表现。在 CIE 定义的色彩空间中,通过“色匹配函数”来表现纯光谱色的内积分量
CIE 1931 color space,在这个 wiki 页面中大家可以看到色匹配函数是有小于零的值的,这就是通过上面那样的“减法”定义出来的。
当然,为了在实际中使用,我们普通的 RGB 空间是将上述的 CIE 1973 色彩空间做了线性变换,得到一个所有分量都大于零的色彩空间。既然是线性变换,那么得到的 RGB 空间仍然是一个线性的。
我在另一个答案
为什么红色和紫色波长相差最大,但看起来却是相近的?里提到过
那么这些不同波长的光混合之后能呈现怎样的颜色呢?根据实验,我们假定人眼在颜色响应方面是线性的(Grassmann's law (optics)),所以这些光混合之后所能呈现的颜色,就是这条曲线「内部」所代表的空间(更严谨一点叫做「凸组合」)。所以就有了舌形图下部的那一条直线。也就是说,这条直线上的颜色,都不是单纯的光谱色,都是混合出来的。
而我们的显示器,则是在这个空间内部,选了三个点,来「围住」尽可能大的面积。在这个三角形内部的颜色都是显示器可以显示的,而这个三角形外部的颜色则是显示器显示不了的。
这里要强调一下是“凸组合”,因为光线没有办法相减,上面实验中的“减法”也不过是一种变通,因此只能是凸组合(也就是围出来的凸多边形,不能到达凸多边形以外的地方)
可见,只要在这个色度图里面任意取若干点,就能组成由这几个顶点组成的凸多边形内部所有的颜色了。之所以采用RGB三种颜色,从这张图上也可以看出来,由这三种颜色围出来的三角形能包含更多的颜色而已。
当然,为了实现更多的颜色,现在已经有很多四色的激光和OLED显示器了,色彩表现比三色的要丰富很多。