PBRT学习笔记2 -- 辐射度量学,光谱和颜色

Radiometry, Spectra, and Color(辐射度量学,光谱和颜色)

Radiometry(辐射度量学)

辐射测量学提供了一套描述光的传播和反射的思想和数学工具,它的诞生并不是来自于光的物理原理,而是建立在光的抽象基础上,基于粒子在空间中流动。因此,像光的偏振这样的效应并不自然地符合这个框架,尽管后来在辐射测量学和麦克斯韦方程之间建立了联系,使辐射测量学在物理学中有了坚实的基础。

辐射传递(Radiative transfer)是对辐射能传递的现象学研究,它基于辐射测量原理,在几何光学(geometric optics)水平上运作,它足以在宏观上描述光与物体的相互作用,可以模拟色散和干涉等效应。在更精细的层面上,需要量子力学来描述光与原子的相互作用,幸运的是,直接模拟量子力学原理对于解决计算机图形学中的渲染问题是不必要的。

我们在将几何光学作为描述光和光散射的适当模型时,需要基于一些关于光的行为的基本假设:

  • 线性(Linearity):光学系统的两个输入的综合效应总是等于每个单独输入的效应之和。非线性散射行为只在涉及极高能量的物理实验中观察到,因此这通常是一个合理的假设。
  • 能量守恒(Energy conservation):当光从表面或参与介质散射时,散射事件永远不会产生比开始时更多的能量。
  • 无偏振(No polarization):包括可见光在内的电磁辐射是偏振光。对偏振的一个很好的类比是沿着拉紧的弦传播的振动。摇动弦的一端会产生垂直的波,并向另一端传播。然而,除了简单的直线运动外,绷紧的弦还可以进行其他类型的振荡,例如:运动可以是顺时针或逆时针的,可以是圆形或椭圆形的,所有这些可能性都类似地存在于光的情况中。但是,如果没有专门的相机或偏光太阳镜等辅助设备,人类基本上无法察觉光的这种额外偏振状态。简而言之,我们将因此做出一个普遍的假设,即光是非偏振的——也就是说,光是具有许多不同偏振的波的叠加,因此只有它们的平均行为才能被感知。因此,光的唯一相关性质是它按波长(或频率)的分布。
  • 无荧光或磷光(No fluorescence or phosphorescence):某个波长下的光和其他波长下的光的行为是完全独立的。与偏振一样,如果需要的话,将这些现象包括在内并不太难。
  • 稳定状态(Steady state):假定环境中的光已达到平衡,因此其辐射分布不会随时间变化。在现实场景中,这几乎是瞬间发生的,所以在实践中它不是一个限制。注意,磷光也违反了稳态假设。

几何光学模型无法用于表示衍射(diffraction)和干涉(interference),但有专门的研究用于表示这些现象。

Basic Quantities

有四个辐射量是渲染的核心:flux, irradiance, intensity, radiance。这些辐射量每一个都可以通过连续地取时间、面积和方向上的极限从能量中得到。所有这些辐射量通常都与波长有关。

Energy

描述辐射量的出发点是能量(energy),以焦耳(J)为单位进行测量。光源(Sources of illumination)发射光子(photons),每个光子具有特定的波长并携带特定数量的能量。所有的基本辐射量都是有效地测量光子的不同方法。一个波长为 λ \lambda λ的光子携带的能量为:

Q = h c λ \begin{equation} Q=\frac{hc}{\lambda} \end{equation} Q=λhc

其中, c c c表示光速, c = 299 , 472 , 458 m / s c=299,472,458m/s c=299,472,458m/s h h h是普朗克常量(Planck’s constant), h ≈ 6.626 × 1 0 − 34 m 2 k g / s h\approx{}6.626\times{10^{-34}}{m^2kg/s} h6.626×1034m2kg/s

Flux

能量描述的是在一段时间累计的物理量,尽管 rendering 通常基于稳态假设,但我们最感兴趣的还是测量光在一瞬间的物理量。Radiant flux,也被称为功率(power),表示的是单位时间穿过空间表面或区域的能量的总和,我们可以通过微分能量和时间来找到 radiant flux:

Φ = lim ⁡ Δ t → 0 Δ Q Δ t = d Q d t \begin{equation} \Phi=\lim_{\Delta{}t\to0}\frac{\Delta{}Q}{\Delta{}t}=\frac{\mathrm{d}Q}{\mathrm{d}t} \end{equation} Φ=Δt0limΔtΔQ=dtdQ

它的单位是焦耳/秒(J/s)或瓦特(W)。

例如,一盏灯在一小时发出 Q = 200 , 000 J Q=200,000J Q=200,000J的能量,则光源的 flux 为 Φ = 200 , 000 J / 3600 s ≈ 55.6 W \Phi=200,000J/3600s\approx55.6W Φ=200,000J/3600s55.6W。反之,给定 flux 和时间的函数,我们则可以计算出一段时间发出的能量为 Q = ∫ t 0 t 1 Φ ( t )   d t Q=\int_{t_0}^{t_1}\Phi(t)\,\mathrm{d}t Q=t0t1Φ(t)dt

光源的总发射量一般通过 flux 进行描述,如图所示,这个点光源在两个球面上的总 flux 是相同的,但大球面的局部区域的能量会小于小球面。
在这里插入图片描述

Irradiance

Flux 的度量需要我们划定一块区域,用于度量有多少光子在单位时间内穿过了这片区域。给定一个有限的区域 A A A,那么这片区域的功率的平均密度可表示成 E = Φ / A E=\Phi/A E=Φ/A,这个物理量即为 irradiance (E),它表示到达或离开表面的 flux 的密度(有时也将离开表面的物理量称为 radiant exitance,M),它的单位为 W / m 2 W/m^2 W/m2

以上图的点光源为例,由于外球的表面积更大,外球上某一点的辐照度小于内球上某一点的辐照度。特别地,如果点源在所有方向上发出相同的照度,那么对于具有半径 r r r的球面,有 E = Φ 4 π r 2 E=\frac{\Phi}{4\pi{}r^2} E=4πr2Φ

这解释了为什么某一点上接收到的光的能量随着与光源的距离平方衰减。

更一般的,我们可以把在点 p p p上的 irradiance 写作关于 flux 和表面积的微分形式:

E ( p ) = lim ⁡ Δ A → 0 Δ Φ ( p ) Δ A = d Φ ( p ) d A \begin{equation} E(p)=\lim_{\Delta{}A\to0}\frac{\Delta{}\Phi(p)}{\Delta{}A}=\frac{\mathrm{d}\Phi(p)}{\mathrm{d}A} \end{equation} E(p)=ΔA0limΔAΔΦ(p)=dAdΦ(p)

也可以写成积分形式 Φ = ∫ A E ( p )   d A \Phi=\int_AE(p)\,\mathrm{d}A Φ=AE(p)dA

Irradiance 方程还可帮助我们理解 Lambert’s law,即到达表面的光能量与光方向与表面法线之间夹角的余弦成正比,如下图所示,考虑面积为 A A A,flux 为 Φ \Phi Φ的光源照射表面,有 E 1 = Φ A E_1=\frac{\Phi}{A} E1=AΦ E 2 = Φ cos ⁡ θ A E_2=\frac{\Phi\cos\theta}{A} E2=AΦcosθ

在这里插入图片描述

Intensity

考虑一个发射光子的无限小光源,如果我们把这个光源放在单位球内,我们就可以计算出发射功率的角密度。我们将这个物理量称为 Intensity, I I I,它的单位是 W / s r W/sr W/sr,若光源向球面上的所有方向发射光子,则有 I = Φ 4 π I=\frac{\Phi}{4\pi} I=4πΦ

更一般的,我们感兴趣的是求微分立体角(solid angle)的极限:

I = lim ⁡ Δ ω → 0 Δ Φ Δ ω = d Φ d ω \begin{equation} I=\lim_{\Delta{}\omega\to0}\frac{\Delta{}\Phi}{\Delta{}\omega}=\frac{\mathrm{d}\Phi}{\mathrm{d}\omega} \end{equation} I=Δω0limΔωΔΦ=dωdΦ

写为积分形式有 Φ = ∫ Ω I ( ω )   d ω \Phi=\int_\Omega{}I(\omega)\,\mathrm{d}\omega Φ=ΩI(ω)dω,其中 I ( ω ) I(\omega) I(ω)是 intensity 关于立体角的函数, Ω \Omega Ω是用于积分的立体角区域。

Intensity 描述了光的方向分布,但它只对点光源有意义。

Radiance

最后,最重要的物理量为 radiance L L L。irradiance 给了我们点 p 周围的微分区域的微分功率,但不能区分功率和方向上的分布。radiance 是最后一步,测量的是相对于立体角的 irradiance,它被定义为:

L ( p , ω ) = lim ⁡ Δ ω → 0 Δ E ω ( p ) Δ ω = d E ω ( p ) d ω \begin{equation} L(p,\omega)=\lim_{\Delta{}\omega\to0}\frac{\Delta{}E_\omega(p)}{\Delta{}\omega}=\frac{\mathrm{d}E_{\omega}(p)}{\mathrm{d}\omega} \end{equation} L(p,ω)=Δω0limΔωΔEω(p)=dωdEω(p)

其中, E ω E_\omega Eω表示的是垂直于方向 ω \omega ω的表面 irradiance,换句话说,radiance 不是由入射到点 p 的 irradiance 来度量的,这种度量方式可以用于消除 Lambert’s law 的 cos ⁡ θ \cos\theta cosθ项,特别的,对于一个表面来说,有 E ω = E / cos ⁡ θ E_\omega=E/\cos\theta Eω=E/cosθ

radiance 是单位面积,单位立体角的 flux 密度。用 flux 的形式可以表示为:

L = d Φ d ω d A ⊥ \begin{equation} L=\frac{\mathrm{d}\Phi}{\mathrm{d}\omega\mathrm{d}A^\perp} \end{equation} L=dωdAdΦ

其中, d A ⊥ \mathrm{d}A^\perp dA d A \mathrm{d}A dA在垂直于立体角 ω \omega ω上的映射
在这里插入图片描述
Radiance 是在 rendering 中最常用的量,使用 radiance,我们可以通过积分计算出其他所有的量,同时,radiance 在光线穿过真空时保持恒定,因此,它是用光线追踪计算的自然量。

Incident and Exitant Radiance Functions(入射和出射 radiance 函数)

当光域场景中的表面相互作用时,通常 radiance function L L L在表面的边界(boundaries,即表面内外或上下)上是不连续的,因此我们可将表面上下的 radiance 函数区分出来:

L + ( p , ω ) = lim ⁡ t → 0 + L ( p + t n p , ω ) L^+(p,\omega)=\lim_{t\to0^+}L(p+t\bold{n}_p,\omega) L+(p,ω)=limt0+L(p+tnp,ω) L − ( p , ω ) = lim ⁡ t → 0 − L ( p + t n p , ω ) L^-(p,\omega)=\lim_{t\to0^-}L(p+t\bold{n}_p,\omega) L(p,ω)=limt0L(p+tnp,ω)

同时,我们还会区分到达点 p 上的 radiance 和离开点 p 的 radiance 的函数:到达点 p 的 radiance 函数表示为 L i ( p , ω ) L_i(p,\omega) Li(p,ω),离开点 p 的表示为 L o ( p , ω ) L_o(p,\omega) Lo(p,ω),如下图所示:
在这里插入图片描述

需要注意的是,入射和出射 radiance 函数的立体角都是从 p 点出发的,从 − ω -\omega ω方向射来的 radiance 会被表示成 L i ( p , ω ) L_i(p,\omega) Li(p,ω)(需要注意在其他文章中可能会将其表示为 L i ( p , − ω ) L_i(p,-\omega) Li(p,ω))。

L i L_i Li L o L_o Lo的存在将用于解决边界 radiance 函数的不确定性。

此外,当点 p 用于表示真空中的一点时, L L L是连续的,有 L + = L − L^+=L^- L+=L,即 L o ( p , ω ) = L i ( p , − ω ) = L ( p , ω ) L_o(p,\omega)=L_i(p,-\omega)=L(p,\omega) Lo(p,ω)=Li(p,ω)=L(p,ω)

Radiometric Spectral Distributions(辐射光谱分布)

到目前为止,所有辐射量的定义都没有考虑它们在波长上分布的变化,实际上,这些辐射量是某种与波长相关的量在我们感兴趣的范围内的积分,我们将这种与波长相关的量称为辐射量的光谱变体(spectral variants),我们可以通过极限的方式来定义这些光谱变体。

例如,我们定义 spectral radiance L λ L_\lambda Lλ为一段极小波长间隔内的 radiance 的极限,即:

L λ = lim ⁡ Δ λ → 0 Δ L Δ λ = d L d λ \begin{equation} L_\lambda=\lim_{\Delta\lambda\to0}\frac{\Delta{}L}{\Delta\lambda}=\frac{\mathrm{d}L}{\mathrm{d}\lambda} \end{equation} Lλ=Δλ0limΔλΔL=dλdL

写成积分形式有: L = ∫ λ 0 λ 1 L λ   d λ L=\int_{\lambda_0{}}^{\lambda_1{}}L_\lambda\,\mathrm{d}\lambda L=λ0λ1Lλdλ,其他光谱变体的定义与之类似,需要注意的是,辐射量光谱变体的单位需要附加一个 1 / m 1/m 1/m 的系数。

Luminance and Photometry

所有的辐射量在光度学(Photometry)上都有与之对应的光度量,光度学用于研究人类视觉系统对可见电磁辐射的感知。通过对描述人眼对不同波长的相对灵敏度的光谱响应曲线(spectral response curve) V ( λ ) V(\lambda) V(λ)的积分,可以将每个光谱辐射量转换为相应的光度量。

Luminance 度量的是在人类观察者看来光谱功率分布的亮度。例如,Luminance 解释了这样一个事实,在相同能量下,绿色波长的光谱分布比蓝色波长的光谱分布在人类看来更亮。

我们将 luminance 表示为 Y Y Y,与之对应的光谱 radiance 为:

Y = ∫ λ L λ ( λ ) V ( λ )   d λ \begin{equation} Y=\int_{\lambda}L_\lambda(\lambda){}V(\lambda)\,\mathrm{d}\lambda \end{equation} Y=λLλ(λ)V(λ)dλ

Luminance 和光谱响应曲线与颜色的 XYZ 值密切相关。

下表为若干照明条件下的代表性亮度值:
在这里插入图片描述
下表为辐射量和光度量的对照
在这里插入图片描述

Light

原子的温度高于绝对零度后就会进行运动,由麦克斯韦方程可知,携带电荷的基本粒子的运动导致物体在一定波长范围内发射电磁辐射。而在室温下,大部分物体发射的电磁辐射都是在红外频率上,只有当物体温度非常高时,才能在可见频率上发射出大量的电磁辐射。

人类发明了非常多类型的光源(light source),用于将能量转换成发射的电磁辐射。发光物体被称为灯(lamp)或发光体(illuminant),发光体的概念一般会用于描述发射的光谱分布。

为对渲染中的光源进行合理建模,我们需要深入理解发光的物理过程,现代常见的灯有:

  • 白炽灯:白炽灯内有一根小钨丝,我们使用通过灯丝的电流加热它,这反过来又使它发射出取决于温度的电磁辐射。同时白炽灯的磨砂玻璃外壳将电磁辐射扩散到比更大的区域上,并吸收一些波长,以便按波长实现所需的发射分布。但白炽灯大部分发射的能量都在红外波段,这意味着大部分能量都转化为热能。
  • 卤素灯:相比白炽灯,卤素灯在钨丝的周围充满卤素气体,在钨丝蒸发后卤素气体使蒸发的钨返回灯丝,从而延长了灯的寿命。
  • 气体放电灯:使电流通过氢气、氖气、氩气或汽化的金属气体,使光以特定波长发射,波长取决于气体中的特定原子。同时荧光涂层将发射波长转换为更宽的范围。
  • LED 灯:基于电致发光,它们使用的材料由于电流通过而发射光子。

这些光源产生的潜在物理过程是电子与原子碰撞,将它们的外层电子推到更高的能级。当这样的电子返回到较低的能级时,就会发射出光子。

光效(Luminous efficacy)度量了光源将能量转化为可见照明的效率,因为对人类观察者来说,非可见波长的辐射几乎没有价值。这个量通常是光度量(luminous flux)和辐射量(在所有波长上发射的总功率 flux)的比值:

∫ Φ e ( λ ) V ( λ )   d λ ∫ Φ i ( λ )   d λ \begin{equation} \frac{\int\Phi_e(\lambda)V(\lambda)\,\mathrm{d}\lambda}{\int\Phi_i(\lambda)\,\mathrm{d}\lambda} \end{equation} Φi(λ)dλΦe(λ)V(λ)dλ

V ( λ ) V(\lambda) V(λ)即为光谱响应曲线。光效的单位是 lumen/watt,如果 Φ i \Phi_i Φi使用光源消耗的功率(而不是发射的功率),则光效还包括光源将功率有效地转换为电磁辐射的度量。同时,光效也可以看做在某个带你上 Illuminance 和 irradiance 的比值。

白炽灯的光效大约是 15 lm/W,光效可能的最大值是 683,这需要光谱响应曲线的峰值集中在电磁波的波长 λ = 555 n m \lambda=555 nm λ=555nm

Blackbody Emitters(黑体发射器)

黑体发射器是一个完美的发射器,它尽最大可能地将能量转化为电磁辐射。黑体虽然在物理上无法实现,但黑体的发射有一个有用的随波长随温度变化的封闭表达式,这对非黑体发射体的建模很有用。

黑体能完全吸收所有入射光,而不反射任何入射光,也因此得名。黑体是完美的吸收体,而完美的吸收体也是完美的发射体的原因是吸收是发射的反向操作。

普朗克定律(Planck’s law)给出了黑体发出的辐射是波长和温度 T T T(测量单位是开尔文 kelvins)的函数,:

L e ( λ , T ) = 2 h c 2 λ 5 ( e h c / λ k b T − 1 ) \begin{equation} L_e(\lambda,T)=\frac{2hc^2}{\lambda^5(e^{hc/\lambda{}k_bT}-1)} \end{equation} Le(λ,T)=λ5(ehc/λkbT1)2hc2

其中, c c c表示光速, c = 299 , 472 , 458 m / s c=299,472,458m/s c=299,472,458m/s h h h是普朗克常量(Planck’s constant), h = 6.62606957 × 1 0 − 34 J s h=6.62606957\times{10^{-34}}{Js} h=6.62606957×1034Js k b k_b kb是玻尔兹曼常数(Boltzmann constant), k b = 1.3806488 × 1 0 − 23 J / K k_b=1.3806488\times{}10^{-23}J/K kb=1.3806488×1023J/K;同时,黑体发射体是完全漫射的;它们向各个方向均匀地发光。

下图是黑体在若干温度下的发射的 radiance 的分布图。

在这里插入图片描述
随着温度的升高,更多的发射光处于可见频率(大约 380 纳米至 780 纳米),光谱分布从红色变为蓝色。随着温度的升高,发射的总能量迅速增长,正如公式中的斯蒂芬-玻尔兹曼定律(Stefan–Boltzmann law)描述的一样。

非黑体发射器可以由基尔霍夫定律(Kirchhoff’s law)描述。基尔霍夫定律给出在任何频率上发射的辐射分布等于一个完美黑体在该频率上发射的辐射乘以该频率上被物体吸收的入射辐射的分数(这个关系是从假定物体处于热平衡状态得出的)。吸收的辐射的比例等于 1 减去反射的量,所以发射的辐射是:

L e ′ ( λ , ω , T ) = L e ( λ , T ) ( 1 − ρ h d ( ω ) ) \begin{equation} L_e'(\lambda,\omega,T)=L_e(\lambda,T)(1-\rho_{hd}(\omega)) \end{equation} Le(λ,ω,T)=Le(λ,T)(1ρhd(ω))

ρ h d \rho_{hd} ρhd即半球定向反射率。

斯特凡-玻尔兹曼定律(Stefan–Boltzmann law)还给出了黑体发射器上一个点 p 的出射 irradiance 值:

M ( p ) = σ T 4 \begin{equation} M(p)=\sigma{}T^4 \end{equation} M(p)=σT4

σ \sigma σ是斯特凡-玻尔兹曼常数,有 σ = 5.67032 × 1 0 − 8 W m − 2 K − 4 \sigma=5.67032\times{}10^{-8}Wm^{-2}K^{-4} σ=5.67032×108Wm2K4。由这个公式可见所有频率上的总发射量以 T 4 T^4 T4的速度增长,增长速度非常快,黑体发射体的温度加倍会使发射的总能量增加 16 倍。

色温(color temperature)是一种描述黑体发射器的发射分布的有用度量指标,如果某一个发射器的发射光谱分布形状与某一温度下与黑体分布相似,则我们可以说这个发射器具有相应的色温。找到发射器色温的一种方法是取光发射量最高的波长,并使用维恩位移定律(Wien’s displacement law)找到相应的温度,该定律给出了黑体在给定温度下发射最大的波长:

λ m a x = b T \begin{equation} \lambda_{max}=\frac{b}T \end{equation} λmax=Tb

b b b是维恩位移常数,有 b = 2.8977721 × 1 0 − 3 m K b=2.8977721\times{}10^{-3}mK b=2.8977721×103mK

白炽灯的色温一般在 2700k 左右,荧光灯的色温在 2700K-6500K。一般色温超过 5000K 会被描述成“冷色”(cool),色温在 2700-3000K 会被描述成“暖色”(warm)。

Standard illuminants

另一种分类光发射分布的方法是标准光源(standard illuminants),它由国际委员会 Éclairage (CIE)制定。

标准光源 A(standard illuminant A)用于代表白炽灯,对应 2856K 的黑体辐射体,其光谱分布如下图所示:
在这里插入图片描述

D illuminant 表示日光的不同阶段。它基于对各种日光光谱的特征向量分析,使用三个项数(一个固定项和两个加权项)的线性组合来表达日光,其中一个加权项用于表示云层引起的黄蓝色变化,另一个用于表示大气中的水(来自雾霾等)产生的粉绿色。

D65 大约是 6504K 的色温,对应欧洲正午的阳光,CIE 建议使用这种光源作为日光,D65 的光谱分布如下图所示:
在这里插入图片描述

F illuminant 用于描述荧光灯(fluorescents),典型的 F4 和 F9 如下图所示:
在这里插入图片描述

Color

Color(颜色)和 Spectral distribution(光谱分布)不同,光谱分布是纯粹的物理概念,而颜色描述了人类对光谱的感知,它与人类视觉系统的生理机能和大脑对视觉刺激的处理密切相关。因此,当我们用光谱分布计算出渲染结果后,还需要将其转换成 RGB 颜色才能在显示器上显示,光谱分布和颜色的相互转化非常重要。

颜色感知的三刺激理论(tristimulus theory)认为,所有可见光谱分布都可以用三个标量值准确地表示给人类观察者,它的原理在于,人眼中有三种类型的感光锥细胞,每种细胞对不同波长的光敏感。此理论引发了光谱匹配函数(spectral matching function)的发展,光谱匹配函数是关于波长的函数,可用于计算光谱分布的三刺激表示。

将光谱分布函数 S ( λ ) S(\lambda) S(λ)与三色刺激匹配函数 m { 1 , 2 , 3 } ( λ ) m_{\{1,2,3\}}(\lambda) m{1,2,3}(λ)的乘积进行积分,就可以得到三个刺激值 v i v_{i} vi

v i = ∫ S ( λ ) m i ( λ )   d λ \begin{equation} v_i=\int{}S(\lambda)m_i(\lambda)\,\mathrm{d}\lambda \end{equation} vi=S(λ)mi(λ)dλ

由此,每一个光谱分布函数 S ( λ ) S(\lambda) S(λ)都可以计算出一组刺激值。

三个刺激值可以组成一个三维向量空间,我们认为此向量空间为线性空间,即有如下假设:两个光谱之和的刺激值是它们对应的刺激值的和;使用常数 c 缩放光谱分布函数,则对应的刺激值为原光谱的刺激值的 c 倍。这些假设在一定程度上违背了定义给出的积分计算,因此使用 RGB 这样的三刺激色来渲染可能导致结果不准确。

XYZ Color

一个重要的颜色匹配函数由 CIE 给出的,它定义了 XYZ 色彩空间,用 X ( λ ) , Y ( λ ) , Z ( λ ) X(\lambda),Y(\lambda),Z(\lambda) X(λ),Y(λ),Z(λ)来表示色彩匹配函数(color matching curves),函数如图所示:
在这里插入图片描述

给定光谱分布 S ( λ ) S(\lambda) S(λ),我们便能计算出其在 XYZ 色彩空间中的坐标值:

x λ = 1 ∫ λ Y ( λ )   d λ ∫ λ S ( λ ) X ( λ )   d λ y λ = 1 ∫ λ Y ( λ )   d λ ∫ λ S ( λ ) Y ( λ )   d λ z λ = 1 ∫ λ Y ( λ )   d λ ∫ λ S ( λ ) Z ( λ )   d λ \begin{align} x_\lambda=\frac1{\int_\lambda{}Y(\lambda)\,\mathrm{d}\lambda}\int_\lambda{}S(\lambda)X(\lambda)\,\mathrm{d}\lambda \\ y_\lambda=\frac1{\int_\lambda{}Y(\lambda)\,\mathrm{d}\lambda}\int_\lambda{}S(\lambda)Y(\lambda)\,\mathrm{d}\lambda \\ z_\lambda=\frac1{\int_\lambda{}Y(\lambda)\,\mathrm{d}\lambda}\int_\lambda{}S(\lambda)Z(\lambda)\,\mathrm{d}\lambda \end{align} xλ=λY(λ)dλ1λS(λ)X(λ)dλyλ=λY(λ)dλ1λS(λ)Y(λ)dλzλ=λY(λ)dλ1λS(λ)Z(λ)dλ

其中, 1 ∫ λ Y ( λ )   d λ \frac1{\int_\lambda{}Y(\lambda)\,\mathrm{d}\lambda} λY(λ)dλ1是归一化函数。

CIE 给出的 Y ( λ ) Y(\lambda) Y(λ)与光谱响应曲线 V ( λ ) V(\lambda) V(λ)成比例,有 V ( λ ) = 683 Y ( λ ) V(\lambda)=683Y(\lambda) V(λ)=683Y(λ)

值得注意的是,具有完全不同分布的光谱可能具有非常相似的 XYZ 值,对人类观察者来说,这些光谱看起来是一样的。这样的光谱对被称为超聚谱(metamers)。

下图显示了 XYZ 空间中对应于可见范围内单个波长光的 XYZ 系数的曲线的三维图。因此,更复杂的光谱分布的系数对应于沿这条曲线的点的线性组合。虽然所有的光谱分布都可以用 XYZ 系数表示,但并不是所有的 XYZ 系数值都对应于可实现的光谱;这样的系数集称为虚色(imaginary colors)。
在这里插入图片描述

Chromaticity and xyY Color(色度和 xyY)

我们还可以把颜色分为明度(lightness)和色度(chroma),明度描述的是相对于白色的亮度,色度描述的是相对于白色的丰富度。一种量化色度的方法是使用 xyz 色度坐标(chromaticity coordinate),它可以由 XYZ 色彩空间坐标得出:

x = x λ x λ + y λ + z λ y = y λ x λ + y λ + z λ z = z λ x λ + y λ + z λ = 1 − x − y \begin{align} x=\frac{x_\lambda}{x_\lambda+y_\lambda+z_\lambda} \\ y=\frac{y_\lambda}{x_\lambda+y_\lambda+z_\lambda} \\ z=\frac{z_\lambda}{x_\lambda+y_\lambda+z_\lambda}&=1-x-y \end{align} x=xλ+yλ+zλxλy=xλ+yλ+zλyλz=xλ+yλ+zλzλ=1xy

值得注意的是,它们中的任何两个都足以指定色度。

xyY 坐标系即是用 x , y , y λ x,y,y_\lambda x,y,yλ表示颜色明度和色度的方法, x , y x,y x,y表示色度, y λ = Y y_\lambda=Y yλ=Y表示色度。

我们使用 x , y x,y x,y来可视化色度图,可以得到下图:
在这里插入图片描述

由于色度图看起来像一个马蹄型,因此也被称为色域马蹄,色域马蹄中,单一波长光的光谱对应的是马蹄边缘弯曲的部分,所有有效颜色都在这个马蹄形内,该区域外的点对应虚色。

RGB Color

相比 XYZ,RGB 颜色在应用程序中更加常见。在 RGB 色彩空间中,颜色由与红、绿、蓝相对应的三组值表示,通常称为 RGB。然而,RGB 三元组本身是没有意义的,它必须根据特定的 RGB 色彩空间来定义。

RGB 空间的概念与显示器相关,显示器所显示的光谱是由三个光谱发射曲线的加权和给出的,分别是红,绿,蓝三个显示元件,无论是荧光粉、LED 或 LCD 元件都是如此,但是不同显示器所用的显示元件并不相同,如下图为 LCD 和 LED 显示器的发射曲线:
在这里插入图片描述

如果我们知道显示器的 R ( λ ) , G ( λ ) , B ( λ ) R(\lambda),G(\lambda),B(\lambda) R(λ),G(λ),B(λ)曲线,便可以使用光谱分布函数 S ( λ ) S(\lambda) S(λ)找到对应的 rgb 值,例如:

r = ∫ R ( λ ) S ( λ )   d λ \begin{equation} r=\int{}R(\lambda)S(\lambda)\,\mathrm{d}\lambda \end{equation} r=R(λ)S(λ)dλ

若我们知道的是 S ( λ ) S(\lambda) S(λ)对应的 ( x λ , y λ , z λ ) (x_\lambda,y_\lambda,z_\lambda) (xλ,yλ,zλ),则 rgb 的计算便可写作:

r = ∫ R ( λ ) S ( λ )   d λ ≈ ∫ R ( λ ) ( x λ X ( λ ) + y λ Y ( λ ) + z λ Z ( λ ) )   d λ = x λ ∫ R ( λ ) X ( λ )   d λ + y λ ∫ R ( λ ) Y ( λ )   d λ + z λ ∫ R ( λ ) Z ( λ )   d λ \begin{aligned} r&=\int{}R(\lambda)S(\lambda)\,\mathrm{d}\lambda \\ & \approx \int{}R(\lambda)(x_\lambda{}X(\lambda)+y_\lambda{}Y(\lambda)+z_\lambda{}Z(\lambda))\,\mathrm{d}\lambda \\ &= x_\lambda\int{}R(\lambda)X(\lambda)\,\mathrm{d}\lambda+ y_\lambda\int{}R(\lambda)Y(\lambda)\,\mathrm{d}\lambda+ z_\lambda\int{}R(\lambda)Z(\lambda)\,\mathrm{d}\lambda \end{aligned} r=R(λ)S(λ)dλR(λ)(xλX(λ)+yλY(λ)+zλZ(λ))dλ=xλR(λ)X(λ)dλ+yλR(λ)Y(λ)dλ+zλR(λ)Z(λ)dλ

写作矩阵形式即为:

[ r g b ] = [ ∫ R ( λ ) X ( λ )   d λ ∫ R ( λ ) Y ( λ )   d λ ∫ R ( λ ) Z ( λ )   d λ ∫ G ( λ ) X ( λ )   d λ ∫ G ( λ ) Y ( λ )   d λ ∫ G ( λ ) Z ( λ )   d λ ∫ B ( λ ) X ( λ )   d λ ∫ B ( λ ) Y ( λ )   d λ ∫ B ( λ ) Z ( λ )   d λ ] [ x λ y λ z λ ] \begin{equation} \begin{bmatrix} r\\g\\b \end{bmatrix}= \begin{bmatrix} \int{}R(\lambda)X(\lambda)\,\mathrm{d}\lambda& \int{}R(\lambda)Y(\lambda)\,\mathrm{d}\lambda& \int{}R(\lambda)Z(\lambda)\,\mathrm{d}\lambda \\ \int{}G(\lambda)X(\lambda)\,\mathrm{d}\lambda& \int{}G(\lambda)Y(\lambda)\,\mathrm{d}\lambda& \int{}G(\lambda)Z(\lambda)\,\mathrm{d}\lambda \\ \int{}B(\lambda)X(\lambda)\,\mathrm{d}\lambda& \int{}B(\lambda)Y(\lambda)\,\mathrm{d}\lambda& \int{}B(\lambda)Z(\lambda)\,\mathrm{d}\lambda \end{bmatrix} \begin{bmatrix} x_\lambda\\y_\lambda\\z_\lambda \end{bmatrix} \end{equation} rgb = R(λ)X(λ)dλG(λ)X(λ)dλB(λ)X(λ)dλR(λ)Y(λ)dλG(λ)Y(λ)dλB(λ)Y(λ)dλR(λ)Z(λ)dλG(λ)Z(λ)dλB(λ)Z(λ)dλ xλyλzλ

RGB Color Spaces(RGB 色彩空间)

当我们使用 RGB 表示色彩空间时,并非一定需要表示色域马蹄中的所有颜色,例如我们可以选定色度图中的三个坐标作为原色(color primaries),然后即可通过变换矩阵将其与 XYZ 空间进行转换。

每一个 RGB 色彩空间都是在色度图中选择了红、绿、蓝各一个原色,然后分别用 0-1 的 RGB 值来表示颜色,同时,三原色在色度图上形成了一个三角形,每一种原色都是一个顶点,三角形内是这个 RGB 色彩空间所能表示的色域(gamut)。除了定义原色外,还需要指定色彩空间的白点(whitepoint),这是当所有三个原色都被激活到最大发射时显示的颜色,一般来说,D65 会被定义成色彩空间的白点。

常见的色彩空间有:

  • sRGB:显示器中最常用的色彩空间,我们常用的 png,jpg 图片一般都会使用 sRGB 空间
  • DCI-P3:专为数字电影放映而开发,涵盖比 sRGB 更广泛的色域,同时,越来越多的计算机显示器和手机也开始采用 DCI-P3
  • Rec2020:覆盖范围更广,用于超高清电视标准,一般的 HDR 图片就使用 Rec2020 空间
  • ACES2065-1:能容纳色域马蹄中的所有颜色,它适合作为长期档案存储的格式

如下图所示,三角形从小到大依次是 sRGB, DCI-P3, Rec2020, ACES2065-1 空间。
请添加图片描述

Reference

https://www.pbr-book.org/4ed/Radiometry,_Spectra,_and_Color

PS

本文主要是对PBRT内容的翻译总结,欢迎交流学习~

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值