成像过程

图像形成可分为场景光的生成与相机对光的采集。相机内部主要包含:

  • 光圈:限制进入系统的光束范围;
  • 透镜:把来自场景的光聚焦到传感器;
  • 快门:控制传感器接收光的时间;
  • 传感器:把到达各像素的光转换成电信号。

针孔相机 Pinhole Camera 只用一个小孔选择光线,几何关系简单,景物在成像平面上倒立。针孔过大会让一个场景点覆盖多个传感器位置而模糊,过小则进光量不足,并最终受到衍射限制。透镜能够在保持较大通光孔径的同时,让某个深度的点重新汇聚到传感器上。

视场角

焦距 ff 与传感器尺寸共同决定 视场角 Field of View。若传感器某一方向的长度为 hh,对应视场角为

FOV=2arctanh2f.\mathrm{FOV} = 2\arctan\frac{h}{2f}.

焦距越短或传感器越大,视场越宽;焦距越长或传感器越小,画面范围越窄。实际相机常分别给出水平、垂直和对角视场,因为三者使用的传感器尺寸不同。

相同镜头装在更小传感器上,只截取原成像圆中心的一部分,看起来像使用了更长焦距。裁切系数描述其视场相对某个参考画幅的比例,并不会改变镜头真实焦距或透视关系。透视主要由相机位置决定;为了保持相同构图而移动相机,才会改变前后景物的相对大小。

焦距与传感器尺寸共同改变视场角

图中短焦距或较大传感器覆盖的视线张角更宽,长焦距或较小传感器只截取更窄的视野。裁切只改变传感器接收到的范围,不能把镜头的真实焦距或透视关系改写成另一个值。

曝光

传感器在 曝光 Exposure 期间累计辐照度。一般曝光量为

H=t0t0+TE(t)dt.H = \int_{t_0}^{t_0+T} E(t)\,\mathrm dt.

若辐照度在快门区间内近似不变,才可化为

H=TE,H=T E,

其中 TT 是曝光时间,EE 是传感器上的辐照度。摄影中主要通过光圈、快门和 ISO 控制最终亮度。

光圈改变镜头开口面积,同时影响进光量与景深;快门改变积分时间,同时影响运动模糊;ISO 是传感器信号的增益或后续标度,不会增加实际收到的光子。提高 ISO 会让已有的光子噪声、暗电流噪声和读出链路噪声在输出中更明显,可用动态范围通常也会下降;模拟增益与数字增益所处位置不同,不能笼统理解为把所有读出噪声按同一倍数放大。

在响应近似线性的范围内,减半通光面积并加倍曝光时间可保持总曝光相近,但图像效果不同:前者改变景深,后者改变运动模糊。高速摄影需要很短快门和充足照明;长曝光则能记录光轨、流水平均和微弱天体信号。

ISO 增益放大信号也放大噪声

图中提高 ISO 会把传感器已经收到的信号提高到更亮的输出尺度,暗部噪声也随之显现;它不会补回曝光期间没有捕获的光子。更长曝光或更大光圈增加的是实际入射能量,ISO 主要改变增益链路和动态范围。

光圈值

镜头焦距为 ff、有效孔径直径为 DD 时,f-number 定义为

N=fD.N=\frac fD.

常写作 f/NNNN 越小,孔径越大。圆孔面积与 D2D^2 成正比,而成像几何还带来 1/f21/f^2 的扩散,因此理想情况下

ED2f2=1N2.E \propto \frac{D^2}{f^2} = \frac1{N^2}.

这说明 f-number 相同的不同焦距镜头,在忽略透过率差异时具有近似相同的像面照度。

标准整档序列约为

1, 2, 2, 22, 4, 42,1,\ \sqrt2,\ 2,\ 2\sqrt2,\ 4,\ 4\sqrt2,\ldots

相邻档的 f-number 相差 2\sqrt2,孔径面积正好相差两倍。镜头标记的光圈是有效入瞳与焦距的比值,不一定等于直接量到的机械开口。

快门方式

物理快门在一段时间内允许光到达传感器。Global Shutter 让所有像素使用同一时间区间,运动物体沿轨迹形成连续模糊。Rolling Shutter 按行或按区域依次曝光,每一行对应略有不同的时刻,快速运动或相机转动会让直线倾斜、物体扭曲。

理想像素的 运动模糊 Motion Blur 是时间积分:

I(x)=1Tt0t0+TL(x,t)dt.I(\mathbf x) = \frac1T \int_{t_0}^{t_0+T} L(\mathbf x,t)\,\mathrm dt.

这条式子对应所有像素共享曝光区间的 Global Shutter。Rolling Shutter 的第 yy 行具有自己的起始时刻 t0(y)t_0(y)

I(x,y)=1Tt0(y)t0(y)+TL(x,y,t)dt.I(x,y) = \frac1T \int_{t_0(y)}^{t_0(y)+T} L(x,y,t)\,\mathrm dt.

渲染时应在每个像素或扫描行的快门区间内采样时间,并在该时刻更新物体和相机状态。只把静止图像做二维模糊无法正确处理遮挡关系、反射变化和非线性运动。

快门时间决定运动轨迹在传感器上的积分长度

图中快门打开时间越长,同一运动物体在传感器上留下的轨迹越长;Rolling Shutter 还会让不同扫描行对应不同时间。因而运动模糊应由时间积分产生,不能只对一张静止图做统一的二维卷积。

薄透镜

真实镜头由多片曲面透镜组成,用来修正球差、色差和畸变。课程采用 薄透镜 Thin Lens 近似:

  • 透镜厚度相对焦距可忽略;
  • 平行于光轴的入射光经过透镜后汇聚到像方焦点;
  • 通过光心的光线近似不偏折;
  • 光路可逆。

下面用正距离表示真实物体和真实倒立像。物距为 zoz_o、像距为 ziz_i、焦距为 ff,物高和像高分别为 ho,hih_o,h_i

通过光心的光线近似不偏折,由两侧相似三角形:

hiho=zizo.\frac{h_i}{h_o} = -\frac{z_i}{z_o}.

从物体顶端平行于光轴的光线,在透镜后经过像方焦点。透镜到焦点的距离为 ff,从焦点继续延伸到像平面,另一组相似三角形给出

hiho=ziff.\frac{h_i}{h_o} = -\frac{z_i-f}{f}.

两式左侧相同,因此

zizo=ziff.\frac{z_i}{z_o} = \frac{z_i-f}{f}.

交叉相乘:

fzi=zozifzo,fz_i = z_oz_i-fz_o,

整理为

zozi=f(zo+zi).z_oz_i = f(z_o+z_i).

两边除以 fzozifz_oz_i,得到 Gaussian Lens Equation

1f=1zo+1zi.\frac1f=\frac1{z_o}+\frac1{z_i}.

横向放大率为

M=zizo,M=-\frac{z_i}{z_o},

负号表示图像倒立。由 zozi=f(zo+zi)z_oz_i=f(z_o+z_i) 还可推出

(zof)(zif)=zozifzofzi+f2=f2.\begin{aligned} (z_o-f)(z_i-f) &= z_oz_i-fz_o-fz_i+f^2\\ &=f^2. \end{aligned}

x=zofx=z_o-fx=zifx'=z_i-f 分别从物方、像方焦点量起,就得到 Newtonian Form

xx=f2.xx'=f^2.

薄透镜光路中的物距、像距、焦距与相似三角形

薄透镜公式来自两组相似三角形;物距、像距的正负约定一旦改变,公式中的符号也必须整体保持一致。

聚焦

传感器固定在某个像距时,只有与该像距满足薄透镜方程的物平面能够精确聚焦。其他深度的光束会在传感器之前或之后会聚,到达传感器时形成 弥散圆 Circle of Confusion

设某场景点本应在距透镜 ziz_i' 处成像,而传感器位于 ziz_i,透镜孔径直径为 DD。会聚光锥在透镜平面处直径为 DD,在理想像面 ziz_i' 处缩为零;传感器与理想像面的距离为 zizi|z_i-z_i'|。由相似三角形,

CD=zizizi.\frac{C}{D} = \frac{|z_i-z_i'|}{z_i'}.

因此弥散圆直径为

C=Dzizizi.C = D\left| \frac{z_i-z_i'}{z_i'} \right|.

代入 D=f/ND=f/N

C=fNzizizi.C = \frac fN \left| \frac{z_i-z_i'}{z_i'} \right|.

孔径越大,也就是 NN 越小,同样离焦量形成的弥散圆越大。焦平面上的点满足 zi=ziz_i=z_i',所以 C=0C=0

改变焦点时前后景清晰区域的切换

图中移动传感器或改变对焦距离会让不同深度的光束在传感器上收敛;被选中的焦平面弥散圆最小,前后景则变成不同程度的圆斑。这个图只帮助建立光线会聚的直觉,清晰范围仍由上面的薄透镜和弥散圆公式决定。

透镜采样

用光线追踪模拟薄透镜相机,可以按以下过程生成一条相机光线:

  1. 在像素覆盖区域内采样传感器点;
  2. 从针孔中心穿过该点,求它与选定焦平面的交点 pf\mathbf p_f
  3. 在透镜孔径圆盘上采样点 pl\mathbf p_l
  4. pl\mathbf p_lpf\mathbf p_f 发射光线。

同一像素使用不同透镜样本时,所有光线仍在焦平面交于同一点;焦外几何的交点则随孔径样本变化,平均后形成散焦模糊。

生成相机光线时,传感器、透镜孔径、焦平面和场景必须先变换到同一个 scene/world 坐标系,再进行求交。相机的局部坐标只用于构造初始光线;不能机械套用某个图形 API 的 NDC 到世界变换,因为不同 API 的手性、轴方向、深度范围和屏幕原点约定可能不同。

圆盘面积在半径 rr 内的比例为 r2/R2r^2/R^2。令 ξ1,ξ2U[0,1)\xi_1,\xi_2\sim U[0,1),均匀面积采样可取

r=Rξ1,θ=2πξ2.r=R\sqrt{\xi_1}, \qquad \theta=2\pi\xi_2.

若直接令 r=Rξ1r=R\xi_1,每个半径区间样本数相同,却没有补偿外圈更大的面积,样本会过度集中在中心。

针孔相机每个像素只对应一个原点,薄透镜相机则同时对像素面积和孔径面积积分。有限样本会让散景出现颗粒,提高 SPP 或采用分层采样可以改善。

景深

允许的弥散圆不超过阈值 CmaxC_{\max} 时,人眼会把一段物方距离都视为清晰,这段范围称为 景深 Depth of Field

以下推导假设 ds>fd_s>f,场景点是真实物体,允许弥散圆阈值 Cmax>0C_{\max}>0,并沿用前文全部距离取正的约定。设相机对焦在物距 dsd_s,由薄透镜方程,传感器固定在

vs=fdsdsf.v_s = \frac{fd_s}{d_s-f}.

对满足 d>fd>f、能够形成真实像的物距 dd,理想像距为

v(d)=fddf.v(d) = \frac{fd}{d-f}.

该物点在传感器上的弥散圆为

C(d)=Dvsv(d)v(d)=f2Nddsd(dsf).\begin{aligned} C(d) &= D \left| \frac{v_s-v(d)}{v(d)} \right|\\ &= \frac{f^2}{N} \frac{|d-d_s|} {d(d_s-f)}. \end{aligned}

C(d)=CmaxC(d)=C_{\max}。对相机与焦平面之间的近界 dN<dsd_N<d_s,去掉绝对值得

NCmaxdN(dsf)=f2(dsdN),NC_{\max}d_N(d_s-f) = f^2(d_s-d_N),

所以

dN=dsf2f2+NCmax(dsf).d_N = \frac{ d_sf^2 }{ f^2+NC_{\max}(d_s-f) }.

对远界 dF>dsd_F>d_s

NCmaxdF(dsf)=f2(dFds),NC_{\max}d_F(d_s-f) = f^2(d_F-d_s),

因此

dF=dsf2f2NCmax(dsf).d_F = \frac{ d_sf^2 }{ f^2-NC_{\max}(d_s-f) }.

只有远界分母为正时,上式才给出有限的正距离;分母等于零时,远景深延伸到无穷远,分母为负时也应把远界解释为无穷远,而非使用公式得到的负距离。对应的临界对焦距离称为 超焦距 Hyperfocal Distance

H=f+f2NCmax.H = f+\frac{f^2}{NC_{\max}}.

这些式子给出定性规律的来源:

  • NN 增大,即光圈缩小,近界变近、远界变远;
  • dsd_s 增大时,景深通常变宽;
  • 焦距变短时,在固定物距和弥散圆标准下景深增大;
  • 放宽 CmaxC_{\max} 会扩大被判为清晰的范围。

物方的可接受距离范围是 Depth of Field;传感器一侧允许前后移动的范围称为 Depth of Focus。景深边界依赖输出尺寸、观看距离、传感器与允许弥散圆标准,物理清晰度本身仍是连续变化的。

薄透镜景深与弥散圆的关系

图中收小光圈(增大 NN)会缩小同样离焦量产生的弥散圆,使可接受的前后景范围变宽;开大光圈则相反。景深的边界取决于 CmaxC_{\max} 等观看标准,并不是光学系统中突然出现的清晰与模糊分界。

景深公式并不只由光圈决定。比较不同相机时,必须同时固定构图、对焦距离和最终观看条件。