跳转到主要内容

11|光场、颜色与感知

光场与全光函数(7D 到 5D 到 4D)、光线复用与凸空间外假设、双平面参数化 (s,t,u,v)、光场采集(相机阵列、集成成像)、光场相机与计算重对焦、光场的代价;颜色的物理基础(牛顿棱镜、可见光谱、谱功率密度 SPD 及其线性性);颜色的生物学基础(视杆与视锥、S/M/L 光谱响应、三刺激值理论);同色异谱与颜色复现;加色法与颜色匹配实验(负值问题、CIE RGB 匹配函数);颜色空间(sRGB、CIE XYZ、亮度与色度分离、CIE 色度图、色域、HSV、CIELAB、对立色理论、色彩适应、CMYK)

  • 课程主讲:闫令琪 (Lingqi Yan) | UCSB
  • B站课程链接:https://www.bilibili.com/video/BV1X7411F744
  • 本章对应课件:第 20 讲(Light Field / Lumigraph, Color and Perception)

说明:这是两个"跳出几何"的主题。光场问的是一个场景在视觉上到底包含多少信息,颜色问的是这些信息进入人眼之后为什么变成了颜色。两者看似无关,却指向同一个结论:我们感知到的"图像"和"颜色",都只是物理世界在人类感官上的一个低维投影——光场把 7 维的全光函数压到 4 维,颜色把无穷维的光谱压到 3 维。正因为这种压缩存在,图像采集和颜色复现才成为可能。


1 光场 (Light Field / Lumigraph)

我们看到了什么

从一个观察点看出去,3D 世界被压成了一幅 2D 图像。

3D 世界与 2D 图像

这也解释了"画出来的背景板"为什么能骗过眼睛——只要从某个特定视点看过去,2D 的背景板和真实的 3D 场景可以给出完全相同的图像。

全光函数 (Plenoptic Function)

问题:我们能看到的万事万物的集合是什么?

答案:全光函数 (Plenoptic Function)(Adelson & Bergen)。

全光函数是光场的更完整、更高维的推广,由 Adelson 和 Bergen 在 1991 年提出。它描述的是:空间中任意位置、任意方向、任意波长、任意时刻光线的完整集合。

让我们从"一个站着不动的人"开始,参数化他能看到的一切,然后逐步放开限制:

层级表达式描述
灰度快照$P(\theta, \varphi)$光的强度:单一视点、单一时刻、在可见光谱上取平均
彩色快照$P(\theta, \varphi, \lambda)$光的强度:单一视点、单一时刻,作为波长的函数
电影$P(\theta, \varphi, \lambda, t)$光的强度:单一视点,随时间变化,作为波长的函数
全息电影$P(\theta, \varphi, \lambda, t, V_X, V_Y, V_Z)$光的强度:任意视点,随时间变化,作为波长的函数

各维度含义:

维度符号含义
水平方向$\theta$光线在水平面的方向角
垂直方向$\varphi$光线在垂直面的方向角
波长$\lambda$光的颜色 / 光谱
时间$t$光线随时间的变化
空间位置$(V_x, V_y, V_z)$观察点在空间中的三维坐标

全光函数包含每一张照片、每一部电影、任何人看到过的一切——它完整地捕捉了我们的视觉现实。 一个函数做到这些,相当了不起。

从 7D 到 5D:光线

先不管时间和颜色,只保留空间与方向:

$$ P(\theta, \varphi, V_X, V_Y, V_Z) $$

这就是 5D:3D 位置 + 2D 方向。

从 5D 到 4D:光线复用 (Ray Reuse)

关键观察:在真空(非色散介质)中,光的强度沿一条无限长直线保持不变。

因此一条光线上的所有点共享同一个值,位置维度可以退化掉:

4D = 2D 方向 + 2D 位置

在凸空间外部,我们只需要记录全光曲面 (plenoptic surface) 上的值即可。

只需记录全光曲面

有了 4D 光场,就可以合成新的视角 (synthesizing novel views)——不是重建几何,而是直接查表插值。

合成新视角

光场 = 记录每条光线的位置和方向。 它比普通照片多保留了方向信息,因此能事后对焦、调景深、变视角;代价是分辨率、数据量和计算成本。它是连接普通成像与全光函数之间的关键中间层。

Lumigraph / Light Field 的组织方式

在凸空间外部,空间可以分成两类:空的 (Empty) 和 有东西的 (Stuff)。光在"空"的区域里沿直线传播、强度不变,因此记录起来非常经济。

Lumigraph 的凸空间外假设

双平面参数化 (2-Plane Parameterization):用两个平行平面来描述一条光线。

平面参数含义
第一个平面$(s, t)$2D 位置
第二个平面$(u, v)$2D 方向

一条光线由它穿过两个平面的四个坐标 $(s, t, u, v)$ 唯一确定。

双平面参数化 (s,t) 与 (u,v)

关键操作:固定 $(s, t)$,让 $(u, v)$ 变化,就得到一张图像。

固定 (s,t) 得到一张图像

光场的采集方式

方式说明
相机阵列 (Camera Array)斯坦福的多相机阵列:用一排真实相机同时拍摄,每台相机对应一个 $(s, t)$
集成成像 (Integral Imaging / Fly’s Eye Lenslets)用微透镜阵列 (lenslets) 做空间复用的光场采集,由 Lippmann 在 1908 年提出

集成成像的代价:它在空间分辨率与角度分辨率之间施加了固定的权衡——同一块传感器既要记录空间信息,又要记录方向信息,两边必然互相挤占。

集成成像与微透镜阵列

光场相机 (Light Field Camera)

光场相机通过微透镜阵列记录光线的位置和方向,实现先拍照后对焦、深度估计和多视角合成。 它的优点是后期灵活、信息丰富,缺点是空间分辨率低、数据量大、计算复杂。它是计算摄影和基于图像渲染的重要工具。

Lytro 是光场相机最著名的产品,由 UC Berkeley 的 Ren Ng 教授创立,核心是微透镜 (microlens) 设计。

最重要的功能:计算重对焦 (Computational Refocusing)——拍完照片之后,仍然可以虚拟地改变焦距、光圈大小等参数。

怎么理解?

  • 传统相机里,每个像素(一个辐照度值),在光场相机里变成了一块像素(一组辐射率值)
  • 一块像素记录了同一个空间位置、不同方向的光

光场相机的一块像素 = 一组方向

怎么从光场照片得到一张"普通"照片?

  • 最简单的情况:总是选每个小块底部的那一个像素
  • 然后选中间的、再选顶部的
  • 本质上相当于**“把相机移来移去”**

计算 / 数字重对焦用的是同一个思路:视觉上改变焦距,相应地挑选重对焦的光线方向。

从光场中选择像素得到普通照片

光场相机的问题

问题原因
空间分辨率不足同一块胶片同时承担空间信息与方向信息
成本高微透镜的设计 (designation) 非常精细复杂

计算机图形学就是关于权衡 (trade-offs) 的。 光场相机用空间分辨率换来了"先拍照、后对焦"的自由度。


2 颜色的物理基础 (Physical Basis of Color)

光的基本组成

牛顿用棱镜证明:阳光可以分解成彩虹。

并且分解出来的光无法再用第二个棱镜继续分解——这说明彩虹中的每一种颜色已经是"基本"的了。

牛顿棱镜实验

可见光谱

光是电磁辐射 (electromagnetic radiation)——不同频率(波长)的振荡。

可见光谱在电磁波谱中的位置

谱功率密度 (Spectral Power Distribution, SPD)

谱功率密度描述的是一个光源在单位波长间隔内辐射出的功率,也就是"什么波长有多少能量"的物理量。

度量光时的一个显著属性:每个波长上存在多少光。

属性说明
单位辐射度量单位 / 纳米(如 watts / nm),也可以是无单位的
常用做法使用"相对单位",缩放到最大波长;在绝对单位不重要时,便于跨波长比较

日光 SPD 各不相同

蓝天、太阳圆面等不同条件下的 SPD 差异明显。

蓝天与太阳圆面的 SPD 对比

光源的 SPD

SPD 按波长描述了能量的分布——这是刻画一个光源最完整的方式。

不同光源的 SPD

SPD 的线性性

SPD 可以线性叠加:多个光源同时照射时,总 SPD 等于各自 SPD 的和。这是渲染中"多光源分别计算再相加"的物理依据。

SPD 的线性叠加

什么是颜色?

颜色是人类感知的现象;它不是光的普遍属性。

不同波长的光并不是"颜色"。


3 颜色的生物学基础 (Biological Basis of Color)

人眼解剖

人眼解剖结构(瞳孔、晶状体、视网膜)

视网膜感光细胞:视杆与视锥

类型工作条件数量功能
视杆细胞 (Rods)极低照度(暗视觉 scotopic),如微弱月光约 1.2 亿个只感知灰度,没有颜色
视锥细胞 (Cones)典型照度(明视觉 photopic)约 600–700 万个三种类型,各自有不同的光谱敏感度,提供颜色感觉

视杆细胞与视锥细胞

三种视锥细胞的光谱响应

三种视锥细胞 S、M、L,分别对应短 (short)、中 (medium)、长 (long) 波长的峰值响应。

S/M/L 三种视锥细胞的光谱响应曲线

三种视锥细胞的比例因人而异,差异很大:对 12 个色觉正常的人测量中央凹边缘的视锥细胞分布,不同视锥细胞类型的百分比变化相当明显。

不同人视锥细胞比例的差异

三刺激值理论 (Tristimulus Theory of Color)

现在我们有三个检测器 (S, M, L 视锥细胞),每个都有不同的光谱响应曲线。

人类视觉系统的关键事实:

人眼不测量、大脑也不接收关于每个波长的信息。

眼睛只"看到"三个响应值 (S, M, L)——这是大脑唯一可用的信息。


4 同色异谱 (Metamerism)

同色异谱 (Metamerism) 是颜色科学中的一个核心概念,指的是:两种不同的光谱分布,在人眼中看起来却是同一种颜色。

同色异谱体 (Metamers)

同色异谱体是两个不同的光谱(∞ 维),投影到相同的 (S, M, L) 响应(3 维)。

它们对人眼来说颜色相同。

$$ \underbrace{s_1(\lambda) \neq s_2(\lambda)}_{\infty\ \text{维光谱}} \quad \Longrightarrow \quad \underbrace{(S_1, M_1, L_1) = (S_2, M_2, L_2)}_{3\ \text{维响应}} $$

同色异谱体的存在对颜色复现至关重要:

  • 不必复现真实世界场景的完整光谱
  • 例如:一个同色异谱体可以在只有三种颜色像素的显示器上,复现真实世界场景的感知颜色

同色异谱正是颜色匹配背后的理论。 拍摄太阳的照片通过一定的方式在显示器上面显示出来的画面颜色相差无几,但是它们的光谱完全不一样。

同色异谱是颜色匹配的理论基础


5 颜色复现与匹配 (Color Reproduction / Matching)

加色法 (Additive Color)

给定一组原色光 (primary lights),每个都有自己的光谱分布(例如显示器的 R、G、B 像素):$s_R(\lambda), s_G(\lambda), s_B(\lambda)$。

调整这些光的亮度并把它们加在一起:

$$ R \, s_R(\lambda) + G \, s_G(\lambda) + B \, s_B(\lambda) $$

于是颜色就可以由三个标量值描述:$R, G, B$。

加色法原理

加色匹配实验

实验装置:左边是待匹配的测试光,右边是三个原色光 $p_1, p_2, p_3$。观察者调节三个原色的强度,直到两边看起来完全一样。

加色匹配实验装置

记录下来的就是"匹配所需的原色量"——这组数值定义了该测试光的颜色。

匹配所需的原色量

实验 2:负值问题

有些测试光无法用三个原色"加"出来。此时观察者会把其中一个原色加到测试光那一侧,继续调节。

负值匹配实验

我们说需要"负"数量的 $p_2$ 才能匹配,因为把它加到了测试光那一侧。

负值原色量的含义

这个负值现象很重要:它说明不存在一组真实的三原色能覆盖所有人眼可见的颜色。这正是 CIE XYZ 要引入"假想原色"的动机。

CIE RGB 颜色匹配实验

装置与前面的加色匹配实验相同,但:

  • 原色是单色光(单一波长)
  • 测试光也是单色光

CIE RGB 匹配实验

CIE RGB 颜色匹配函数

下图绘制的是:要匹配 x 轴上给定波长的单色光,需要组合多少每种 CIE RGB 原色光。

记作 $\bar{r}(\lambda), \bar{g}(\lambda), \bar{b}(\lambda)$。

CIE RGB 颜色匹配函数

注意:这些不是响应曲线,也不是光谱! 它们是"匹配所需的量",不要和视锥细胞的敏感度曲线混淆。

用匹配函数做颜色复现

对任意光谱 $s(\lambda)$,其感知颜色由以下公式缩放 CIE RGB 原色来匹配:

$$ R_{\text{CIE RGB}} = \int s(\lambda) \, \bar{r}(\lambda) \, d\lambda $$$$ G_{\text{CIE RGB}} = \int s(\lambda) \, \bar{g}(\lambda) \, d\lambda $$$$ B_{\text{CIE RGB}} = \int s(\lambda) \, \bar{b}(\lambda) \, d\lambda $$

本质上就是一个"光谱 × 匹配函数"的积分——把无穷维的光谱投影到三维的颜色值上。

再次注意:这些不是响应曲线,也不是原色的光谱!


6 颜色空间 (Color Spaces)

标准色彩空间:sRGB

  • 使某个特定的显示器 RGB 成为标准
  • 其他颜色设备通过标定 (calibration) 来模拟那个显示器
  • 今天被广泛采用
  • 色域 (gamut) 是有限的

通用色彩空间:CIE XYZ

一组假想的标准原色 $X, Y, Z$:

  • 具有这些匹配函数的原色并不存在(它们是数学构造,不是真实的光)
  • $Y$ 是亮度 (luminance)——与颜色无关的明暗程度

设计目标是:

  1. 匹配函数严格为正(避免了 CIE RGB 的负值问题)
  2. 张成所有可观察的颜色

CIE XYZ 匹配函数

分离亮度与色度

量定义
亮度 (Luminance)$Y$
色度 (Chromaticity)$x, y, z$,定义为
$$ x = \frac{X}{X + Y + Z}, \quad y = \frac{Y}{X + Y + Z}, \quad z = \frac{Z}{X + Y + Z} $$

因为 $x + y + z = 1$,三个中只需要记录两个。

通常选择 $x$ 和 $y$,于是在特定亮度 $Y$ 下得到 $(x, y)$ 坐标。

CIE 色度图

CIE 色度图

区域含义
曲线边界称为光谱轨迹 (spectral locus),对应单色光——每个点代表单一波长的纯色
内部任何颜色都不那么纯,即混合出来的颜色
质心 $(1/3, 1/3)$白色

色域 (Gamut)

色域是一组原色所生成的色度集合。

不同的色彩空间代表不同的颜色范围,所以它们有不同的色域——在色度图上覆盖不同的区域。

sRGB 是互联网上普遍使用的色彩空间,但它的色域只是色度图中的一小块三角形。

sRGB 的色域范围

感知组织的色彩空间

前面几节的空间都是按物理/匹配来定义的(RGB、XYZ),而艺术家和取色器关心的是另一套轴——它们直接对应人怎么感知颜色。

HSV 色彩空间 (Hue-Saturation-Value)

轴对应颜色的艺术特征,广泛用于"取色器 (color picker)"。

色调、饱和度、亮度

颜色的感知维度

维度含义色度学对应物艺术家对应物
色调 (Hue)颜色的"种类",与属性无关主波长 (dominant wavelength)所选颜料颜色
饱和度 (Saturation)“彩色程度” (colorfulness)纯度 (purity)来自彩色管中的颜料比例
亮度 (Lightness / Value)光的整体量亮度 (luminance)tint 更亮,shade 更暗

CIELAB 空间 (L*a*b*)

一个常用的、力求感知均匀 (perceptual uniformity) 的色彩空间:

CIELAB 色彩空间

分量含义
$L^*$亮度 (lightness / brightness)
$a^*$对立色对:红 — 绿
$b^*$对立色对:蓝 — 黄

$a$ 轴和 $b$ 轴两边的颜色,认定为互补色。

对立色理论 (Opponent Color Theory)

CIE LAB 的色彩空间维度有很好的神经学基础:

大脑似乎在早期就用三个轴来编码颜色:白 — 黑、红 — 绿、黄 — 蓝。

白 — 黑轴是亮度;其他两个决定色调和饱和度。

证据一(语言学 / 直觉):

你可以有浅绿、深绿、黄绿、蓝绿,但你不能有偏红的绿(根本讲不通)——因此红是绿的对立面。

注意力集中中间小白点(对立色直觉的证据)

证据二(生理):残像 (afterimages)——盯着一种颜色看久了再看白墙,会看到它的对立色。

注意力集中中间小白点(残像的证据)

适应 (Adapt) 与"一切都是相对的"

人眼的色彩感知会自适应:长时间处于某种光照下,视觉系统会重新校准"什么是白"。

色彩适应现象

“一切都是相对的” (Everything is Relative)——同一个颜色块在不同背景下会被感知成完全不同的颜色。

颜色感知的相对性

这解释了为什么渲染结果不能只追求"数值正确":感知才是终点。这也是 HDR、色调映射、色彩管理存在的根本原因。

CMYK:减色色彩空间

  • 减色模型 (Subtractive color model):混合得越多,颜色越暗
  • Cyan(青)、Magenta(品红)、Yellow(黄)、Key(黑)
  • 广泛用于印刷

课件提出的问题:如果混合 C、M、Y 能得到 K,那为什么还需要 K?

CMYK 减色色彩空间


总结

第 20 讲把视角从"几何怎么算"拔到了"信息有多少"和"感知怎么发生":

主题核心内容
全光函数7D:位置 $(\theta,\varphi,\lambda,t,V_x,V_y,V_z)$,涵盖任意位置、方向、波长、时刻的光线,是"能看到的一切"的完整描述
降维到光场去掉时间与颜色得 5D(3D 位置 + 2D 方向);真空中光线强度沿直线不变,位置维度退化,得 4D 光场
双平面参数化$(s,t)$ 位置 + $(u,v)$ 方向;固定 $(s,t)$ 让 $(u,v)$ 变化就得到一张图像
光场采集相机阵列(空间复用)、集成成像 / 微透镜阵列(Lippmann, 1908)
光场相机一块像素 = 一组方向;换来计算重对焦与视角合成,代价是空间分辨率
SPD谱功率密度按波长描述能量分布,可线性叠加——多光源分别计算再相加的物理依据
颜色的生物学基础视杆(暗视觉、只感知灰度)与视锥(明视觉、S/M/L 三类);眼睛只给出三个响应值
同色异谱∞ 维光谱投影到相同的 3 维响应;正因如此,三原色显示器才能复现真实场景的感知颜色
颜色匹配加色法下颜色由 $(R,G,B)$ 三个标量描述;负值现象说明不存在能覆盖一切的真实三原色
CIE XYZ引入假想原色,令匹配函数严格为正并张成所有可见颜色;$Y$ 即亮度
色度图与色域$x+y+z=1$ 只需记两个;光谱轨迹对应单色光,质心是白色;sRGB 的色域只是其中一小块三角形
感知色彩空间HSV 对应艺术特征;CIELAB 力求感知均匀,$a^*$、$b^*$ 是对立色轴
对立色理论白—黑、红—绿、黄—蓝三个轴,有语言学与残像两方面的证据
色彩适应视觉系统会重新校准"什么是白",同一色块在不同背景下感知不同——感知才是渲染的终点

本文是 GAMES101 - 现代计算机图形学学习系列的第 11 篇笔记。