理解色彩与相机内图像处理流程——色彩2

本文来自ICCV 2019的tutorial:“Understanding color & the in-camera image processing pipeline for computer vision”,详细介绍请见这里。
算不上翻译,演绎了不少,希望大家能够结合原pdf甄别地看,欢迎提出疑问。

前面已经介绍了色彩空间相关的知识,这一篇将会介绍其他色彩方面的知识,包括【色彩适应与白平衡】和【sRGB与其他色彩空间】。

【色彩适应与白平衡】

之前说到,我们已经可以使用三个值(如CIE XYZ)来表示色彩了,但在现实场景中,我们看到的颜色是由物体的反射特性场景光照共同决定的,而在之前的例子中我们都默认是纯白光照或者干脆就是单色光,这会带来什么影响呢?我们来看下面这个例子。
在这里插入图片描述

图中的苹果在不同的光照环境下有着不同的SPD,也表现出不同的颜色,但对于在场景中的观察者来说,却能看到一样的红色
在这里插入图片描述
再举个例子,在这张图中,左右两边加上了不同的滤镜来模拟不同的光照,但虽然屋顶左右两部分的颜色有差别,我们却能感觉到屋顶应该是白色的(能吧?)

这个视觉系统适应场景光照的能力被称为色彩恒定或者色彩适应(Color constancy/chromatic adaptation)。这个能力并不完美,但用起来相当不错。

然而,图像传感器却没有这种能力,要想将场景光照的影响去除,必须经过一定的处理步骤,这就是白平衡

不过在那之前,我们需要找到一个描述光源的办法,于是引出了色温

色温的概念来自于黑体辐射理论。可以简单地将该理论理解为,对于一个理想的黑体,其发射出来的电磁辐射仅和它的温度相关

于是我们得到了一个映射,将温度(以开尔文为单位)映射到黑体辐射的电磁波谱,而这个电磁波谱在可见光的区域看起来的效果就可以用来描述光源
在这里插入图片描述
由于这里的温度指的是黑体的温度,而不是光源的,因此比起温度,我们实际上更应该说**相对色温(Correlated Color Temperature, CCT)**以表示区分。
在这里插入图片描述

上面这张图给出了色温和光源的对照表,可能有些反直觉的是色温越低反而看起来越暖,还是那句话,这里的温度指的是理想黑体的温度,并不是你心里的温度 \手动doge。
在这里插入图片描述
为了方便描述,CIE建立了几种合成的SPD来作为真实光源的代表,编号列举如下:

A 钨丝灯

B 正午的阳光

C 白天日光平均值

D 不同色温下具有代表性的自然日光(5000K,5500K,6500K),一般写作D50,D55,D65

E 理想的具有恒定SPD的等能量光源,并不代表任何真实光源,但和D55类似

F 系列:模拟了各种荧光台灯(一共12个)
在我们购买灯泡的时候可能会见到这些参数。

在色彩空间里,认为光源的SPD对应着白色的点,所以色彩适应的本质就是将不同光照下场景的白点变得相同。
在这里插入图片描述
这张图里,曲线上的这些颜色其实都是某种场景里的“白色”。

接下来看一个最简单的色彩恒定处理(Von Kries transform)。(LMS)1和(LMS)2分别指不同场景下三种视锥细胞的刺激值,而带下标W则指的是该场景下白点对应的刺激值
在这里插入图片描述

这样,我们就把场景1中的三刺激值转换到场景2中了,从而排除了光源的影响。来看一个实例。
在这里插入图片描述
可以看到,我们先定义场景中的白色,再将他们调整得一样,这样不同场景的颜色看起来和谐多了。

【sRGB与其他色彩空间】

好,那么到此为止我们是不是搞定颜色了呢?

快了快了(真的)。

尽管CIE XYZ是一个权威的色彩空间,但图像和设备却很少直接使用XYZ。这主要是因为XYZ本身并不代表颜色,所以留下了很多空,在工业上还是更愿意使用RGB空间,虽然无法表示所有颜色,但容易控制和理解。而为了让不同厂商的设备能够有个统一标准,于是sRGB诞生了。

1996年,微软和惠普定义了一系列RGB三原色:
R=CIE xyY (0.64, 0.33, 0.2126)
G=CIE xyY (0.30, 0.60, 0.7153)
B=CIE xyY (0.15, 0.06, 0.0721)

他们认为这是当时大多数设备能够达到的RGB空间。

而白色点被设定为D65光源。

注意,指定白点是一件重要的事,这意味着sRGB是在假设了观看条件的前提下建立的(6500K 日光)。每当我们把CIE XYZ映射到一个色彩空间时,都需要指定白点
在这里插入图片描述

上图是sRGB映射在CIE xy色度图上的效果(不过之前说过,不建议在CIE xy上看…)。
在这里插入图片描述

上图就是CIE XYZ到线性sRGB的转换矩阵(这个过程中舍弃负值)。

为什么这里要说线性?因为到了这一步还不够,从线性sRGBsRGB还有一步伽马矫正
什么是伽马矫正呢?

可以看这样一个例子:
在这里插入图片描述
这有两张图,每张图上有两个色块,你们感觉哪张图中上色块是下色块亮度的一半?

这个例子来自https://www.cambridgeincolour.com/tutorials/gamma-correction.htm,网页上有对伽马矫正详细的介绍,简单来说,之所以会有伽马变换,是因为人眼对于光亮度变化的感知是非线性的。和相机(感光器)相比,我们对于暗光中的变化要比亮光中更加敏感,这让我们能够在遇到户外强光时得到一定的保护。而显示的目的是为了再现人的感受,因此要进行调节。
在这里插入图片描述
在这里插入图片描述
刚才的A图就是经过伽马矫正的后的,因此A图展现的是人眼中亮度的一半,而B图展示的是物理上强度的一半。(和你的感受一致吗?)
在这里插入图片描述
上式名为Stevens’ power law,就是用于描述这一现象的模型。I就是输入图像的刺激值,S就是经过处理后,符合人感受图像的刺激值。当a取小于1的正数,就是由相机的色彩空间人的感受转换(编码),当a取大于1时,就是其逆变换(解码)。不同的模型会对系数采用不同的值,在sRGB中,a取2.2。

除了sRGB,还有NTSC、Adobe RGB等各种各样的标准色彩空间,他们的范围各不相同,但他们都来自CIE XYZ空间。
在这里插入图片描述
注意,这里面的“Y”不尽相同。

这之后又出现了其他各种各样的色彩空间,他们为了不同的目的而设计。

CIE LAB 色彩空间

这个色彩空间是为了得到一个感知均匀的色彩空间。虽然CIE XYZ空间提供了一种辐射SPD和色彩感知之间的映射,但在CIE XYZ空间中均匀的变化并不是感知上均匀的变化。如图,图中每个椭圆展示了人眼感受类似的区域(椭圆进行了放大)。
 
 
 
 
 
 
 
 

在这里插入图片描述

CIE Lab 将CIE转化成了一个色彩和亮度变化更加均匀的色彩空间,L表示亮度,a和b张成的平面表示色相。下图展示了ab平面上的颜色。
在这里插入图片描述
Y’UV Y’IQ Y’CrCb 色彩空间

这些空间是将RGB空间分解成 “类亮度”组成和色度组成,注意,这些色彩空间里的Y并不是在linear-sRGB或者linear-NTSC里定义的,他们定义在伽马编码sRGBNTSC色彩空间里。按理说应该写成Y’以避免误会,但一般会写成Y。(把YUV、YIQ、YCrCb中的Y当成CIE XYZ中的Y是计算机视觉会议中一个常见的错误)。这样的空间下可以直接丢弃U和V来得到灰度级别的图像,可以用于黑白和彩色电视共用的信号。

最后再来介绍一下色差

CIE在2000年基于CIE LAB定义了色彩误差矩阵,它返回一个在0-100的色彩误差。也会被称为CIE DE2000、CIE DE、ΔE、Delta E、DE。误差的参考量表如下:
在这里插入图片描述
一般来说 2或者更小的色差是比较好的,它意味着除非一个标准观测者非常近距离地观察,否则无法区分出两个颜色。

好!

色彩速成班到此结束,接下来可以正式地研究相机了!

发布了2 篇原创文章 · 获赞 0 · 访问量 27

猜你喜欢

转载自blog.csdn.net/weixin_42028449/article/details/105343533
今日推荐