此篇文章部分内容引用于: https://www.jianshu.com/p/facdbab5ac20
一、色彩是什么?
色彩主观来讲就是“光线给人的感觉”。不同颜色的光,其波长也不一样!
二、光
人眼的可见光波长范围大概在400-700nm左右。对于不同的波长,由于人眼的构造,能产生不同的神经信号,传到大脑“翻译”成不同的colors。这个波长范围以外的光线人类无法肉眼感知。
三、单色光 & 混合光
如果一束光,它所含有的光子都是同一波长的,那么就成为单色光,如果恰好波长还是visible的,那么称为光谱光。比如700nm一束光人眼看起来就是大红的光线。相对应的,不同波长的光合在一起就是混合光。
四、人眼原理
上图是眼睛识别光线色彩的构造图,主要分为两个阶段:通过视锥细胞的识别阶段和通过视神经的生产神经信号并传输的阶段。这两个阶段分别是三原色和四原色的生物学基础。
1、识别阶段
维基百科中颜色定义是:人眼对于“光的感受”通过“颜色分类”来表达出来的。这里所说的感受是通过不同波长不同频率的刺激值来表示的,而不是指人主观的感受。一束光线打在视网膜上,对人眼视锥细胞、视杆细胞产生一定刺激值,转化为神经信号。视锥细胞又分为三种:S-cones( cones:视锥细胞), M-cones and L-cones,分别对人眼可见范围内的短波、中波、长波敏感,这是由三种不同蛋白质决定的,色盲患者正是因为缺乏合成这些精细蛋白质的基因。下图中,横轴为波长,纵轴为S,M,L三种细胞对不同波长应激的刺激值。不过确实有人天赋异禀的,会有XS或者XL的视锥细胞,不做讨论。经过实验,可以用三种波长的光经过各种不同强度下混合刺激人眼,模拟出人眼所能感知到的其他的颜色,对人眼来讲与直接看到该中波长的光线相同,这就是三原色RGB原理的来源。比如,RGB基色全混合是白色。
人眼的retina(retina:视网膜)中有一大堆的Photoreceptor cell感光细胞,主要负责人眼的视觉成像,它又有三种细胞,视杆细胞,视锥细胞,神经节细胞:
视杆细胞: 对亮度敏感,低亮度环境中视杆细胞起主要作用,夜间视物,但是不负责color vision。
视锥细胞: 视锥细胞主要对颜色信息敏感,它的应激时间比rod cell短的多,对于细节和变化更敏感。
2、生产信号
如图一所示,人的视神经只有三个通道,两个色彩通道蓝-黄和绿-红和一个亮度通道,视神经的带宽是有上限的,两个色彩会争抢视神经,这是Lab色彩空间的理论依据。
五、颜色属性
1、色调Hue
又叫做色相,这是色彩的首要特征,也就是我们常说的色彩赤橙黄绿青蓝紫等,改变一个色相给人的感觉要远远大于亮度、饱和度。
2、饱和度Saturation
又被称为彩度、色彩浓度(Chroma),称为色彩浓度很好理解,从色彩最大浓度到无色彩(黑白或灰)的程度。再直白点理解就是,光子的纯净程度,越纯净饱和度越高,也就是越接近单色光,越分散饱和度越低,越接近黑白灰。
3、明度Brightness
从图中看到改变一个颜色的亮度,很可能会牵连到颜色光谱分布集中程度也就是饱和度。
亮度概括来说就只是颜色的明亮程度。
亮度:人对发光体或反光体光感受强度的程度;
以 RGB 色彩空间为标准, R(红)、G(绿)、B(蓝),max 为 RGB 中最大值,min 为RGB中最小值。其亮度/明度的定义方式常见的有:
平均值:取 RGB 三值的平均值, μ = (R + G + B)/3, 这最简单而又不常用的定义法,因为某些颜色人感知起来明显比另一些要更亮,所以最不准确。
跨度平均值:取 RGB 中最大值与最小值的平均值, μ = (max + min)/2, HSL 色彩空间的 L : Lightness/亮度 的定义就是跨度平均值。
最大值:取 RGB 中最大值, μ = max, HSB(也被称为 HSV)色彩空间里的 B : Brightness(HSV 的 V : Value)/明度 的定义就是 RGB 最大值
色觉校正值:由于人对色彩感知亮度有差异,所以除了以上比较简单的亮度定义法,还有用公式得到更接近人世界感受的定义方法。在使用色觉校正的场合,常常习惯把校正后的结果称为辉度(Luma),比如视频领域在ecoding的时候常做的gamma compression(使用encoding gamma,基本小于1,变亮)。
辉度(Luma)通常指经过色觉校正后的”亮度”,在一些日文和从日文翻译过来资料中常见这种称呼。
后面会在色彩空间部分对比HSL和HSV的LV,即亮度和明度……
六、CIE color spaces 色彩空间
1、加性模型
根据加性颜色模型(Additive color model),选定三种原色(primary color),一般来说是RGB,这三种原色根据一定强度IS、IM、IL进行混合,如果得到的结果和目标颜色给人的感觉相同(刺激相同),那么认为混合色与目标色是相同的。这其中的三原色如何选择,刺激值如何测量定义,国际照明委员会CIE有一套标准色度学系统。
CIE RGB color space根据Wright和Guild对一群人(好像就是17个人,10个人train,7个人test)在1920年的颜色匹配实验结果得到的,实验中发现并不是所有的人眼可见的单色光都能通过三原色比例混合得到,这种情况下,允许将目标色添加一些强度的一种原色,然后用剩下的两种原色混合进行匹配,这里将用来“污染”目标色的原色强度计为负值。下图color mathing functions给出了对于一个单色光,即横轴波长所表示的颜色,所需要的三原色的强度(纵轴)。这里Wirght使用的三原色是700 nm (red), 546.1 nm (green), 435.8 nm (blue),在435.8nm的时候,RG是0,在546.1nm时,RB是0,在700nm时,GB是0,在三个点也就代表了恰好目标色就是三原色。那个年代里435.8nm和546.1nm很容易产生,虽然700nm的单色光很难产生,但是大家觉得在那个波长范围内人眼已经不敏感了,所以标准定出来就算大家执行的时候有些偏差也无所谓了,所以R还是选择了700nm。
可能大家都会奇怪如果用不同的三原色或者不同的三原色强度,上面的结论还成立吗,再或者目标色不是单色光的情况。这里有一个Grassmann's law,这个规则说的是,如果一个颜色3是由另外的两个颜色12混合而成的,那么用三原色来混合得到3所各需要的值就等于用三原色分别得到12所需要的RGB的和。(这个规则是基于normalized RGB color matching functions中的微积分公式的)
CIE XYZ color space,CIE委员会觉得RGB值是有负值的,这样直接数字化用起来太麻烦了,他们决定搞一个新的好用的color space出来,就是的当前我们的色彩标准XYZ色度学系统。在上面讲的RGB三原色理论中,由于有三个变量,表示一个颜色就需要画一个三维图形,太麻烦了,那么假定RGB三原色的占比和是1,那么只有两个变量是独立分布的,这里就暂时丢掉了强度信息,比如我们保留G的值,作为强度信息,这样RGB中最终只包含了rg两个变量,这样就又了rg色度图,即最原始的马蹄图。1.图例的E点就是whitepoint,对应的坐标是(1/3,1/3) 2.马蹄形的一圈就是单色光光谱轨迹 3.(0,1)blue (1,0)red表示的r+g=1也就是这条线段上b都是0。
假定人对色彩的感知是线性的,那么对rg色域图线性变换到正数第一象限内,即把包含全域color的CrCgCb三角形线性变换,而且要求white point还在(1/3, 1/3, 1/3)点。变换到正数的XYZ空间以后,根上面一样,固定Y作为亮度值(上面固定G),即得到xyY色域图。所以XYZ color space并不是真实自然界的色彩空间。xyY色域图有一些有意思的特征,比如途中两点可以混合出连线上的任意颜色,三点可以表示三角形内任意颜色,全色域是一个马蹄形,所以不存任意三点能覆盖人眼全色域,也可以理解为不存在物理设备能完全还原自然色域。
七、Color Depth 色彩深度
Color Depth(色彩深度)是计算机图形学领域表示在点阵图或者视频帧缓冲区中储存1像素的颜色所用的位数,它也称为位/像素(bpp)。色彩深度越高,可用的颜色就越多。
色彩深度是用「n位元颜色」(n-bit colour)来说明的。若色彩深度是n位元,即有2n次幂种颜色选择,而储存每像素所用的位元数目就是n。
常见的有:
8位元灰阶:都是黑、灰、白色之间。
24位元彩色(真彩色):每种原色都有256个层次,它们的组合便有256*256*256种颜色。
32位元彩色:除了24位元彩色的颜色外,额外的8位元是储存重叠图层的图形资料(alpha频道)。