在RGB色域中,三原色能不能混合所有的颜色?
不能
三刺激理论
可见光的范围大致在390nm到700nm,剩下的光谱人类看不到,也许灵魂存在于某些未知的光谱中.
对于一种纯色光,人类大概只能识别100种.
比较权威的三刺激理论认为:人眼中含有三种不同的光感受体,后来这种猜想被证实,确实存在三种不同的视锥细胞,分别能感应红,绿,蓝三种刺激光.
下图是三种细胞对不同波长的响应曲线,分别在420nm,534nm,564nm达到高峰,注意,这些波长对应的颜色并不是纯正的红,绿,蓝.
在RGB域中,标准的红绿蓝波长为:
- 红色 : 700nm
- 绿色 : 546.1nm
- 蓝色 : 435.8nm
一个经典试验,左侧是白板,在上方发射单一波长的光,下方可以发射三种不同波长的光,并可以调整它们的强度,观察者通过狭缝观察上下两块板颜色是否相同.
通过是三种光的混合来模拟单一波长的颜色,得到的结论是:
看到红色光有出现负值,这是因为无论如何调整三色光,都无法匹配过于饱和的单色光,只好将红色光与待匹配的单色光混合,也就是将红色光转移到上面,以降低单色光的饱和度.
上图的纵轴表示光的强度,可以看到在435.8nm~546.1nm之间,r为负值,因此可以认为,在这段光谱区间,是三原色混合无法合成的.
R,G,B是色彩匹配函数r(),g(),b()的值,按如下公式定义r,g,b:
显然,r+g+b=1.其实相当与归一化一下,知道两个值,就可以确定第三个值.
根据上图,画出rg色度图:
因为在RGB域中会出现负值,不方便计算,因此CIE引入XYZ空间,换算关系为:
同时也得到了X,Y,Z
注意x有两个峰顶.
可以设 :
x = X/(X+Y+Z)
y = Y/(X+Y+Z)
z = Z/(X+Y+Z)
则 x+y+z = 1
同理,我们得到了xy色度图
图中的R,G,B三个点就是三原色.
中央区C是等能白光,由三原色各1/3组成,坐标为x,y,z=(0.333,0.333,0.333),其相当于中午阳光的色温6774K.
连接这三点得出的三角形即为由三原色混合所得的颜色范围,三角形外的颜色均不能由三原色混合产生.
而普通显示器的技术原因,不能发出纯正的单色光,因此颜色显示范围更小.
想要确定马蹄形内任意一点的光谱值,可以将该点与C连线,延长线与马蹄弧形的交点即为对应的光谱值,越靠近边缘,饱和度越高,越靠近C点,饱和度越低.
色域空间
色域 color gamut
相机里会自带一些色域:sRGB,Adobe RGB.还有部分厂家会有自己特有的色彩空间,如索尼的S-Gamut3,松下的V-Gamut,富士的F-Log-Gamut,以及国际标准的色彩空间:
ProtPhoto RGB,P3,Rec709,Rec.2020等等.
这些色域都可以在色彩空间色度图中表现出来,严格来讲这些色域都是颜色空间CIEXYZ的子集,可以通过线性变化来表示.
上图为各个色域在 CIEXYZ 色度图上的映射,三角形三个顶点分别是对应 RGB 的颜色.Rec.709 与 sRGB 的范围相同。
确定RGB三点以及白点的值,就可以表达一个色域,色域中的RGB值可以通过线性变化得到XYZ的值:
颜色差异问题
sRGB 与 Adobe RGB 仅在青绿色上的显示有差异是因为人眼分辨颜色的能力是有限的,人眼对色彩的辨别能力也随颜色的变化而变化.在青绿色范围内,人眼区别颜色的能力最弱.
如果人眼分辨不出某一色彩与周边色彩的区别,则这块区域为等色差域,下图为 CIE xy 色度图中的等色差域:
可以看出,等色差域在色度图中呈现椭圆形,人眼认为每个区域内的各点的颜色都是相同的.值得一提的是,等色差域是椭圆形而不是圆形,说明 CIE xy 色度图在人眼中并不是均匀的,通过椭圆大小可以分析人眼对各种颜色的分辨力,从图中可以看出,人眼对蓝色的变化比较敏感,对绿色变化较为迟钝,这也是 sRGB 色域牺牲一部分绿色的原因.