- 课程主讲:闫令琪 (Lingqi Yan) | UCSB
- B站课程链接:https://www.bilibili.com/video/BV1X7411F744
- 本章对应课件:第 19 讲(Cameras, Lenses and Light Fields)
说明:前九篇一直在回答"怎么把模型画成图",那是合成 (Synthesis);这一篇换个方向,讲图像是怎么被**捕获 (Capture)**下来的。相机的每个部件——镜头、光圈、快门、传感器——几乎都能在渲染器里找到一个对应参数,而景深、散焦模糊、曝光这些效果,也由此第一次有了物理模型。
1 成像:合成与捕获 (Imaging = Synthesis + Capture)
相机与透镜是图形学中"成像"的另一半:光栅化与光线追踪解决的是合成 (Synthesis)——从模型生成图像;而相机解决的是捕获 (Capture)——从真实世界采集图像。两者最终都落在同一件事上:传感器平面上记录到的辐照度 (irradiance)。
理解相机的意义在于:它不仅解释了我们日常拍出的照片为什么会虚、会糊、会过曝,也直接给出了渲染器里景深、散焦模糊、曝光这些效果的物理模型。
相机里面有什么
一台相机可以拆成几个职责清晰的部分:
| 部件 | 作用 |
|---|---|
| 镜头组 (Lens) | 把来自场景不同方向的光重新汇聚,在传感器上成像 |
| 光圈 (Aperture) | 控制进光量的多少(同时决定景深) |
| 快门 (Shutter) | 控制传感器暴露在光下的时间长短 |
| 传感器 (Sensor) | 在曝光期间累积辐照度,最终转成像素值 |

小孔与透镜在传感器上成像

无论是小孔还是透镜,目的都是限制每个传感器点能接收到的光线方向:只让来自场景中某一小片区域的光落在一个点上,从而在传感器上形成与场景对应的像。
快门与传感器的累积
快门在精确的时间内打开,暴露传感器。

传感器在曝光期间累积辐照度 (irradiance)——它记录的是"这段时间内总共落下来的光",而不是某一瞬间的光。
为什么不能没有透镜
如果去掉透镜,只留一个传感器:每个传感器点都会把物体上所有点发出的光积分到一起,于是所有像素值都差不多——你得到的是一片均匀的灰,而不是图像。
原因在于传感器记录的是辐照度:辐照度是"来自所有方向的光在单位面积上的总功率",它天然丢掉了方向信息。要成像,就必须先把方向信息筛出来——这正是小孔和透镜做的事。
补充:计算成像 (computational imaging) 领域确实在研究无透镜相机 (lensless camera),靠计算而非光学来恢复图像,但这属于另一条技术路线。
小孔成像的历史
小孔成像 (pinhole image formation) 是人类最早理解的成像模型,被多个文明独立发现:
| 人物 | 年代 |
|---|---|
| 墨子 (Mo Tzu) | 约公元前 470–390 |
| 亚里士多德 (Aristotle) | 公元前 384–322 |
| Ibn al-Haytham | 965–1040 |
| 沈括 | 1031–1095 |
| Roger Bacon | 约 1214–1294 |
| 开普勒 (Johannes Kepler) | 1571–1630 |

世界上最大的小孔摄影作品(legacyphotoproject.com):把一个房间甚至一栋建筑做成暗箱。

2 视场 (Field of View)
焦距对视场的影响
视场 (FOV, Field of View) 描述相机能"看到"多宽的角度范围。它由传感器尺寸 $h$ 和焦距 $f$ 共同决定:

| 符号 | 含义 |
|---|---|
| $h$ | 传感器的高度(或宽度,取决于要算垂直还是水平视场) |
| $f$ | 透镜焦距 (focal length) |
结论:传感器尺寸固定时,焦距越小,视场越大。
焦距与视场的换算惯例
出于历史原因,人们习惯用"在 35mm 胶片格式(36 × 24mm)上使用的透镜焦距"来指代视场角:
| 焦距(35mm 格式) | 类型 | 视场角 |
|---|---|---|
| 17mm | 广角 (wide angle) | 104° |
| 50mm | 标准 (normal) | 47° |
| 200mm | 长焦 (telephoto) | 12° |

注意:当我们说现在的手机大约是 28mm “等效"焦距时,用的就是这个惯例——手机传感器远小于 35mm,实际焦距只有几毫米,只是视场角与之相当。
传感器尺寸对视场的影响
传感器越小,视场越小(在焦距不变的前提下)。


在更小的传感器上保持视场
要保持视场不变,就按传感器宽/高的比例等比例减小焦距。

这也是为什么同一个镜头装在 APS-C 机身上时视场会变窄(等效焦距要乘以约 1.5 的裁切系数)。
3 曝光 (Exposure)
曝光的定义
$$ H = T \times E $$曝光量 = 曝光时间 × 辐照度。
| 量 | 含义 | 由什么控制 |
|---|---|---|
| 曝光时间 $T$ | 传感器暴露在光下的时长 | 快门 (shutter) |
| 辐照度 $E$ | 单位面积传感器上落到的光功率 | 光圈 (aperture) 与焦距 |
曝光的三个控制量
| 控制量 | 手段 |
|---|---|
| 光圈大小 (Aperture size) | 通过开合光圈改变 f-stop(若相机有光圈环控制) |
| 快门速度 (Shutter speed) | 改变传感器像素累积光的时长 |
| ISO 增益 (ISO gain) | 改变传感器值与数字图像值之间的放大倍数(模拟和/或数字) |

ISO(增益)
ISO 的核心作用是控制相机对光信号的放大倍数,从而在光圈和快门已定的情况下,把照片亮度调整到合适水平。
- 调节画面亮度。
- ISO 越低,放大倍数越小,画面越暗,但通常噪点更少、动态范围更宽。
- ISO 越高,放大倍数越大,画面越亮,但噪声和画质损失通常更明显。
- 配合光圈和快门实现曝光自由。当光圈和快门无法再调整时,它提供额外的曝光余地。
- 影响画质:噪声、动态范围、色彩。
| 影响项 | 低 ISO | 高 ISO |
|---|---|---|
| 噪声 | 少 | 多 |
| 动态范围 | 宽 | 窄 |
| 高光宽容度 | 好 | 容易溢出 |
| 色彩深度 | 好 | 可能下降 |
| 细节保留 | 好 | 可能被降噪抹掉 |
ISO 是曝光的第三个变量:
- 胶片时代:用灵敏度换颗粒度 (grain)
- 数码时代:用灵敏度换噪声 (noise)
- 在模数转换 (analog-to-digital conversion) 之前把信号放大
- 效果是线性的:ISO 200 只需要 ISO 100 一半的光

ISO 放大之所以会引入噪声,核心原因在于:放大信号的同时,也放大了传感器本身的固有噪声,而且后期数字放大还会额外引入量化噪声。
F 数 (F-Number / F-Stop)
写作 $F_N$ 或 $F/N$,其中 $N$ 就是 f-number。
- 非正式理解:圆形光圈直径的倒数(光圈直径越大,进入光的能量越多)
- 正式定义:透镜的 f-number 定义为焦距除以光圈直径
| 符号 | 含义 |
|---|---|
| $f$ | 焦距 |
| $D$ | 光圈的绝对直径 |
| $N$ | f-number |
快门速度的副作用:运动模糊
运动模糊 (motion blur) 来自手抖 (handshake) 和主体运动 (subject movement)。
快门时间翻倍,运动模糊也翻倍。

注意:运动模糊并不总是坏事。 提示:想想抗锯齿 (anti-aliasing)——运动模糊本质上是在时间维度上做平均,与像素内采样平均是同一类操作。

卷帘快门 (Rolling Shutter)
照片的不同部分是在不同时间拍摄的——因为传感器逐行读出,而不是一次性曝光。

恒定曝光:光圈与快门速度的权衡
下面这些光圈 / 快门组合给出等价的曝光量:
| F-Stop | 1.4 | 2.0 | 2.8 | 4.0 | 5.6 | 8.0 | 11.0 | 16.0 | 22.0 | 32.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| 快门 | 1/500 | 1/250 | 1/125 | 1/60 | 1/30 | 1/15 | 1/8 | 1/4 | 1/2 | 1 |
如果曝光过亮或过暗,就需要往上或往下调整 f-stop 和/或快门。
摄影师必须在景深 (depth of field) 与运动模糊之间做权衡——这是摄影里最核心的一组取舍。
高速摄影与长曝光摄影
| 类型 | 做法 |
|---|---|
| 高速摄影 (High-Speed Photography) | 正常曝光 = 极快的快门速度 ×(大光圈和/或高 ISO)。经典作品来自 Harold Edgerton |
| 长曝光摄影 (Long-Exposure Photography) | 用很长的曝光时间,把运动累积成光轨、丝滑的水面等 |


4 薄透镜近似 (Thin Lens Approximation)
真实透镜并不理想:像差
真实镜头设计极其复杂,高端镜头内部由十几片镜片组成。

真实透镜元件并不理想——存在像差 (aberration)。 最典型的是球差 (spherical aberration):
真实的平凸透镜(表面是球面形状),无法把光线汇聚到任何一个点上。

理想薄透镜
为了能做数学分析,我们假设一个理想化的薄透镜:

理想薄透镜的三条性质:
- 所有平行进入透镜的光线都穿过它的焦点 (focal point)
- 所有穿过焦点的光线在通过透镜后都变得平行
- 焦距可以任意改变(现实中确实可以——变焦镜头)
薄透镜方程
对物距 $z_o$(object 到透镜的距离)和像距 $z_i$(透镜到成像平面的距离):

这就是高斯薄透镜方程 (Gaussian Thin Lens Equation)。
高斯光线图 (Gauss’ Ray Diagrams)
用三条特殊光线就能画出成像:

| 光线 | 走法 |
|---|---|
| 平行光线 (Parallel Ray) | 平行于光轴入射 → 出射后穿过像方焦点 |
| 主光线 (Chief Ray) | 穿过透镜中心 → 方向不变 |
| 焦光线 (Focal Ray) | 穿过物方焦点入射 → 出射后平行于光轴 |
从相似三角形推导薄透镜方程
设物高 $h_o$、像高 $h_i$,物距 $z_o$、像距 $z_i$、焦距 $f$。

从平行光线看(物方焦点到物顶点的三角形,与像方焦点到像顶点的三角形相似):
$$ \frac{h_o}{z_o - f} = \frac{h_i}{f} $$从焦光线看(物顶点到透镜的三角形,与像顶点到像方焦点的三角形相似):
$$ \frac{h_o}{f} = \frac{h_i}{z_i - f} $$两式都给出物像高之比 $h_o / h_i$,令其相等:
$$ \frac{z_o - f}{f} = \frac{f}{z_i - f} $$$$ (z_o - f)(z_i - f) = f^2 $$这就是牛顿薄透镜方程 (Newtonian Thin Lens Equation)。展开左边:
$$ z_o z_i - z_o f - z_i f + f^2 = f^2 $$$$ z_o z_i = (z_o + z_i) f $$两边同除以 $z_o z_i f$,即得高斯形式:
$$ \frac{1}{f} = \frac{1}{z_i} + \frac{1}{z_o} $$5 散焦模糊与景深 (Defocus Blur & Depth of Field)
弥散圆 (Circle of Confusion) 的大小
当镜头对焦在某个平面时,只有这个平面上的点能在传感器上完美汇聚成一个点。偏离这个平面的景物,其光线会在传感器上汇聚成一个模糊的圆斑,这个圆斑就是弥散圆 (Circle of Confusion, CoC)。
- 弥散圆越小,看起来越清晰;
- 弥散圆越大,看起来越模糊;
- 当弥散圆大到人眼能察觉时,就认为"不清晰"了。
景深的计算逻辑是:
- 先规定一个可接受的弥散圆直径(通常记为 $C$);
- 找出所有在传感器上形成的弥散圆不超过 $C$ 的物距范围;
- 这个范围就是景深。
所以:$C$ 定得越小(要求越严格),景深越浅;$C$ 定得越大(允许更模糊),景深越深。

由相似三角形可得:
$$ \frac{C}{A} = \frac{|z_s - z_i|}{z_i} $$即:
$$ C = A \frac{|z_s - z_i|}{z_i} $$| 符号 | 含义 |
|---|---|
| $C$ | 弥散圆直径 |
| $A$ | 光圈直径 |
| $z_s$ | 被观察物体到透镜的距离 |
| $z_i$ | 传感器到透镜的距离(像距) |
关键结论:弥散圆的大小与光圈的大小成正比。
说明:这里的光圈直径记作 $A$,与上一节 F 数公式里的 $D$ 是同一个量(光圈直径),只是不同教材的记号习惯不同。
CoC 与光圈大小的关系

重新审视 F 数
- 正式定义:透镜的 f-number 定义为焦距除以光圈直径
- 真实镜头上常见的 f-stop:1.4, 2, 2.8, 4.0, 5.6, 8, 11, 16, 22, 32
- f-stop 为 2 有时写作 $f/2$,反映了一个事实:绝对光圈直径 $A$ 可以用焦距 $f$ 除以相对孔径 $N$ 算出
示例计算:
| 光圈直径 $D$ | 焦距 $f$ | f-number $N = f/D$ |
|---|---|---|
| 50 mm | 100 mm | 2 |
| 100 mm | 200 mm | 2 |
| 100 mm | 400 mm | 4 |
弥散圆大小与 F 数成反比
把 $A = f / N$ 代入弥散圆公式:
$$ C = A \frac{|z_s - z_i|}{z_i} = \frac{f}{N} \cdot \frac{|z_s - z_i|}{z_i} $$所以 F 数越大(光圈越小),弥散圆越小,画面越清晰。 这就是"光圈开到 f/16 会更锐"的原因。
用光线追踪渲染散焦模糊
在渲染器里模拟真实相机的效果:

设置 (Setup):
- 选择传感器尺寸、透镜焦距和光圈大小
- 选择感兴趣的主体深度 $z_o$
- 由薄透镜方程算出对应的传感器深度 $z_i$
渲染 (Rendering):
- 对传感器上的每个像素 $x'$(实际上是胶片 film)
- 在透镜平面上随机采样点 $x''$
- 光线穿过透镜后必定打到 $x'''$(因为 $x'''$ 在焦平面上——考虑虚拟光线 $(x', \text{透镜中心})$)
- 估计光线 $x'' \to x'''$ 上的辐射率 (radiance)

注意:这正是路径追踪 + 镜头采样。把"从相机出发的主光线"换成"从透镜上随机一点出发的光线”,就自然得到了散焦模糊——不需要任何特殊的模糊后处理。
景深 (Depth of Field)
景深是指图像中被渲染得具有可接受清晰度的物体深度范围。

做法是:把弥散圆设为一个"在最终观看条件下看起来仍然清晰"的最大允许模糊斑。凡是 CoC 不超过这个阈值的深度范围,都算作"清晰",这个范围就是景深。
景深的定量公式(FYI)

| 量 | 含义 |
|---|---|
| $D_S$ | 对焦距离 (subject distance) |
| $D_F$ | 远景界限 (far limit) |
| $D_N$ | 近景界限 (near limit) |
| $C$ | 允许的弥散圆直径 |
| $N$ | f-number |
| $f$ | 焦距 |
注意区分两个概念:
| 概念 | 所在空间 | 含义 |
|---|---|---|
| 景深 (Depth of Field) | 物方 | 场景中看起来清晰的深度范围 |
| 焦深 (Depth of Focus) | 像方 | 成像平面上可接受的清晰范围 |
总结
第 19 讲把视角从"生成图像"转到了"捕获图像",相机由此成为渲染器里一个可参数化的模型:
| 主题 | 核心内容 |
|---|---|
| 成像 = 合成 + 捕获 | 光栅化 / 光线追踪是合成,相机是捕获,两者最终都落在传感器上的辐照度 |
| 为什么需要透镜 | 传感器记录的是辐照度、天然丢失方向信息;必须靠小孔或透镜筛选方向才能成像 |
| 视场 FOV | $\text{FOV} = 2\arctan(h / 2f)$;焦距越小视场越大,传感器越小视场越小 |
| 曝光 | $H = T \times E$,由光圈、快门、ISO 三者共同控制 |
| ISO | 模数转换前放大信号,线性增益;代价是同时放大噪声、压缩动态范围 |
| F 数 | $N = f / D$;相邻 f-stop 相差 $\sqrt{2}$ 倍,与快门组合可给出等价曝光 |
| 薄透镜 | 三条性质 + 高斯方程 $1/f = 1/z_i + 1/z_o$(牛顿形式 $(z_o - f)(z_i - f) = f^2$) |
| 弥散圆 | $C = A, |
| 散焦模糊渲染 | 路径追踪 + 透镜平面随机采样,无需任何特殊模糊后处理 |
| 景深 / 焦深 | 景深在物方(场景中看起来清晰的深度范围),焦深在像方(成像平面上的清晰范围) |
本文是 GAMES101 - 现代计算机图形学学习系列的第 10 篇笔记。
