memetao


颜色

颜色只是人的主观感受,不是物体的客观属性。我们把感受到的不同频率的电磁波映射成不同的颜色。遇到过高或过低频率的电磁波(红外线等等)眼睛处理不了,所以就看不见,所谓的不同的颜色就是可见光电磁波的不同波长。

可见光

色彩空间

色彩有三个方面,色相,亮度,饱和度。

因此,光谱只是表示了我们说的色相。

混和颜色可以代替单一颜色(频率的光)吗? 这个问题很好啊,我也纠结过。如上所述,不同的色相对应着不同的频率,而任何两个频率相加是无法合成另一个频率的。所以说红光和绿光混合,得到包含两种频率的“黄光”只是人眼的感觉,和单一频率的黄光本质不同,只是人眼无法区分。

为什么说色光三原色(红绿蓝)可以混合出所有的“颜色”,主要是因为大部分人类的视网膜上有三种感知颜色的感光细胞,叫做视锥细胞。分别对不同波长的光线敏感,称为 L/M/S 型细胞。三种视锥细胞最敏感的波长分别是橙红色(长波,Long),绿色(中波,Medium),蓝色(短波,Short)

可见光

总之,大自然的这千千万万种颜色,在人类的眼里看到,最后传送到大脑里的信号,就只有这三种视锥细胞的电信号而已。根据这三种电信号的强弱,大脑解读成了不同的颜色。这就是三原色理论的生物学依据。

比如说,眼睛接收到红光,那么蓝色锥状细胞没感觉,绿色锥状细胞基本没感觉,红色锥状细胞感觉很强烈,那么大脑认为 ——这是红光咯。又来一个纯黄光(单一频率),红色和绿色锥状细胞都有一定的感觉,但是不太强烈,那么大脑觉得,这是黄光。再然后,红光和绿光合起来射向眼睛,这次感觉和上次一样,还是红色和绿色锥状细胞都有一定感觉,那么大脑依然觉得这是黄光。所以说,混和频率光在人的感觉上是可以代替单一频率的光的。这只是人的感受。实质上多个频率的光相加是不能合成另一个频率的光的 。夜视动物(老鼠等)基本没有锥状细胞,那么他们无法分辨色相(光的频率),只能分辨亮度(光的强度),所以看到的是黑白世界。又比如,据说螳螂虾有12种锥状细胞,那么它们大概就可以区分红绿合成的“黄色”和单一频率的黄色。它们可以看见更丰富的颜色。这个真是难以想象啊。(转自 https://www.zhihu.com/question/24860046)。

理论上可以根据三种颜色的光任意的混合出自然界中任何一种颜色出来,科学家们做了个实验得出一个色匹配函数:

C = rR + gG + bB;(小写的rgb代表光强)

也就是说,只要按照 (r,g,b) 的分量来混合 (R,G,B) 三种颜色的光,就可以得到 C 这个颜色的光。

CIE-RGB

在这个基准下定义出一个颜色空间:CIE-1931-RGB色彩空间

CIE1931

为什么会出现负值:

如果碰到一种情况,右边三色光无论如何调节比例,都不能混合出左边的颜色,比如某种颜色的光强度已经减小为 0 了,然而看趋势还需要继续减小才能与左边的光色相匹配,怎么办?这时候需要往左边的光色中混入三色光中的一种或者几种,继续调节,直到两边的颜色匹配。在左边(被测试)的色光中添加,那就是相当于在右边的混合光中减去,这就导致了色匹配函数曲线上出现了负数。实际上,这相当于就是光线的「减法」了。比如,对于 555nm 的黄色光,色匹配函数的值是 (1.30, 0.97, -0.01),意味着将 1.30 份的红光与 0.97 份的绿光混合放在右边,左边放上 1 份的 555nm 的黄光,以及 0.01 份的蓝光,这样左右两边的光色看上去就一样了。

由于出现了负数不方便计算,CIE又弄出一个转化矩阵将CIE-RGB转成了CIE-XYZ(忽略不表)。

CIE-XYZ

三维在平面上不好表示,但忽略亮度(B)后的R和G组成的图(色度图)可以在平面上表示因此被广泛利用。色度图是将三维RGB值投影到一个R+G+B=常数、以原点为中心、然后进行变换:

色度图

由于r的值从绿色到蓝色变为负值,可以看到这部分明显延伸到了 g 轴的左侧。此外,波长为 700 nm 的光对应r = 1、g = 0,546.1 nm 对应r = 0、g = 1,435.8 nm对应r = 0、g = 0 。图上的E点是E光源发出的白光,其能量分布均匀(平坦),其中r = g = b =1/3 。

又出现了负数是不是?又需要做变换了(不懂)。

首先,颜色匹配实验表明,当CIE-RGB三原色以1:4.5907:0.0601的反比混合时,三种颜色恰好平衡,看起来与白色(光源E的颜色,如下所述)相同。换句话说,人们认为 R、G 和 B 按照这种比例混合可以影响眼锥细胞的敏感度。因此,我们设定Y = 1R + 4.5907G + 0.0601B,并让Y成为代表亮度的量。上图中的x轴是Y值正好为0的线。此外,上图中中的1=y+x被选择为与色度图红端的切线重合。剩余的y轴由以下事实决定:对于E光源,x = y = z = 1/3,并且蓝绿色周围的单色光曲线正好落在该线的右侧。因此,CIE定义的从RGB到XYZ的线性变换为:

XYZ转换矩阵

使用该公式转换RGB配色函数,我们就得到了众所周知的XYZ配色函数:

sss

X、Y、Z并不代表眼睛中三种视锥细胞(L、M、S)的敏感度。(具体来说,Y 并不代表 M 视锥细胞(绿色)的敏感度,而是对应于全彩色视觉中的亮度)然而,后续研究表明,视锥色素的吸收曲线与这个 XYZ 颜色匹配函数非常相似。将 XYZ 颜色匹配函数理解为模拟人类视锥细胞的敏感度曲线并不完全错误。

此外,如果我们为所有颜色绘制色度图,我们会得到像下图所示的xy色度图:

色度图2

### SRGB 和 Rec.709 (HDTV)的区别

### 伽马矫正

https://zhuanlan.zhihu.com/p/142377883

### ICC 文件

所以我们在描述一个 RGB 颜色的时候,不仅需要描述它的 RGB 三个分量,还要说明是在哪个空间,这就是 ICC 文件的作用。

色域马蹄图的产生

HDR

HDR 元数据

https://zhuanlan.zhihu.com/p/524890604

HDR设置和传输元数据metadata的目的,是想告诉视频使用者额外一些该视频的特性和信息,比如说画面的峰值亮度是多少。当某个显示器不支持这么高的峰值亮度时(比如HDR内容在SDR显示器上显示),就需要考虑该如何合理恰当的做tone mapping色调映射,从而使不同内容的画面可以正常显示,而不至于出现过曝或其他画面问题。

OETF 和 EOTF

摄像头感应自然场景中光的变化用电信号存储下来,显示器把电信号转换成屏幕光信号展示出来,这个传递光的过程就叫传递函数。传递函数包含三个变换,相机采集线性光信号压缩成暗部细节更多的非线性电信号叫做光电转换(OETF),屏幕显示时解压缩的过程叫做电光转换(EOTF),修正相机环境和屏幕环境的亮度差异叫做光光转换(OOTF)。OETF、EOTF、OOTF中O是光optical的缩写、E是电electro的缩写、TF是传递函数transfer funciton的缩写。

待解问题

Tips

终极实践: 画出CIE 1931色度图

https://zhajiman.github.io/post/chromaticity_diagram/