跳转至

9 Cameras, Lenses and Light Fields

文本统计:约 2005 个字

9.1 Cameras

9.1.1 Field of View

Field of View 被称为 FOV (视场)

对于传感器固定的情况下,减小焦距可以增大视场

\[ \text{FOV}=2\arctan(\frac{h}{2f}) \]

由于历史原因,通常用35mm格式胶片(36 x 24mm)上使用的镜头焦距来指代角度视场。

相同的,传感器大小也会影响视场,传感器越小,视场越小。

9.1.2 Exposure

\[ \text{H(Exposure)} = \text{T(Exposure time)}\times \text{E(Irradiance)} \]

Exposure time 受到快门的影响

Irradiance 指的是落到单位传感器上的光的能量,受到光圈大小以及焦距的影响

详细地说,曝光度在摄影学中的控制变量为

  • Aperture size 光圈大小,change the f-stop by opening / closing the aperture
  • Shutter speed 快门速度,change the duration the sensor pixels integrate light
  • ISO gain 感光度,change the amplification (analogy and/or digital) between sensor values and digital image values 相当于一个后期处理,同时这种处理与后面跟着的数字是线性关系

ISO Gain vs Noise

调大ISO时,也会放大噪声

F-Number (F-Stop): Exposure Levels

写做 FN 或者 F/N.N,可以粗浅地理解为光圈半径的倒数

Side effect of Shutter Speed

快门比较慢时,运动模糊的现象更加严重

Rolling shutter: 观察到螺旋桨扭曲了

Constant Exposure: F-stop vs Shutter Speed

快门速度变快了,相应的曝光度就小了,于是我们就要增大光圈

对于二者的选择,拍摄者需要权衡景深和运动模糊

9.1.3 Fast and Slow Photography

High-Speed Photography

需要极快的快门速度,同时需要保证曝光量,我们可以增大光圈或者增大ISO

Long-Exposure Photography

长曝光,延时摄影得到的结果

9.2 Lenses

9.2.1 Thin Lens Approximation

这块部分与普通物理学中几何光学的部分类似,这里略作介绍

一块理想的薄透镜满足

  • 所有平行光透过棱镜后会通过焦点
  • 所有通过焦点的光线经过透镜后为平行光
  • 一个薄棱镜可以随意改变焦距(我们可以认为,因为现实生活中一般都是使用棱镜组,我们就可以把它们看作一组可任意改变焦距的薄棱镜)

在物理学中我们知道薄棱镜的公式为 $$ \frac1f=\frac{1}{z_i}+\frac{1}{z_i} $$

9.2.2 Defocus Blur

Circles of Confusion (CoC) :

物体远离焦平面,那么聚焦后的点不在 Sensor Plane 上,而是在它前面聚焦,然后光线在聚焦点继续直线传播,到 Sensor Plane 上就变成了一个圆,而这个就被称为 Circle of Confusion (CoC)

\[ \frac{C}{A}=\frac{d'}{z_i}=\frac{|z_s-z_i|}{z_i} \]

Circle of Confusion is proportional to the size of the aperture

我们之前将 F-stop 粗浅地理解为光圈半径的倒数,实际上正确的定义为焦距除以光圈的直径。生活中一些常见的 f-stops 有 1.4, 2, 2.8, 4.0, 5.6, 8, 11, 16, 22, 32。

把 f-stop 的定义带入到 CoC 的计算公式中

\[ C=A\frac{|z_s-z_i|}{z_i}=\frac{f}{N}\frac{|z_s-z_i|}{z_i} \]

所以我们要让拍摄的物体更清晰,使用小光圈

9.2.3 Ray Tracing Ideal Thin Lenses

我们之前渲染图像的时候使用的都是小孔成像的模型,我们当然也可以用薄棱镜来渲染。

(One possible) Setup:

  • Choose sensor size, lens focal length and aperture size 选择 sensor 的大小,棱镜的焦距以及光圈的大小

  • Choose depth of subject of interest \(z_o\) 选择物距

  • Calculate corresponding depth of sensor \(z_i\) from thin lens equation 计算相应的像距

Rendering:

  • For each pixel \(x’\) on the sensor (actually, film (胶片) )

  • Sample random points \(x’’\) on lens plane 在棱镜上随机选取一个点

  • You know the ray passing through the lens will hit x’’’ (because x’’’ is in focus, consider virtual ray (x’, center of the lens)) 然后确定 \(x'''\)
  • Estimate radiance on ray \(x'' \rightarrow x’’’\) 然后确定光线的方向

9.2.4 Depth of Field

Depth of Field 即景深,在场景内对应的 CoC 足够小的距离范围。

\[ D_F = \frac{D_S f^2}{f^2 - NC(D_S - f)}\quad D_N = \frac{D_S f^2}{f^2 + NC(D_S - f)} \]
\[ \text{DOF(Depth of Field)} = D_F-D_N \]

9.3 Light Field (Lumigraph)

9.3.1 The Plenoptic Function

我们如果在面前放上一块幕布,如果上面展示的就是实际去掉幕布得到的结果,那么我们便无法区分眼前是否有幕布。基于这个思想,我们引入一个函数称为全光函数 (The Plenoptic Function),这个函数描述了我们能看到的所有物体的集合。

\[ P(\theta,\phi,\lambda,t,V_X,V_Y,V_Z) \]

表示了在任意时间任意位置往任意方向所得到的任意波长的光线的强度。

9.3.2 Light Field

我们想要描述一个物体的视觉信息,我们只需要找到它的包围盒,并记录包围盒表面任意一个点向任意方向的发光情况即可。光场就是在任意一个位置往任意一个方向去的光照强度,它是全光函数的一部分

有了光场后,从任意位置都可以看向这个物体,有了视点和看向的方向,查询 4D 函数就可以查询到记录的值。加入包围盒后,我们便可以忽略内部的所有细节,只需要记录包围盒表面的任何位置任何方向的光照信息即可。

而光场我们怎么表示呢?

回忆一下我们之前我们是如何定义光线的?需要五个维度,三个维度用于定义发射点的位置,还有两个维度用来定义方向。但是我们发现其实之前那个原点是有一个自由度的,所以我们应该是可以用四个维度来定义的,我们使用两个点来定义一条光线。

对于光场来说,如果我们采取第一个方法,对每一个点定义位置和方向来记录光场;而对于第二个方法,我们取两个相互平行的平面,在两个平面上分别取两个点来确定光线并记录信息。

下面假设整个世界在 st 右面

固定 uv 平面的任意的点向 st 平面去看,得到的就相当于在这个点放一个摄像机得到的图像。相当于这里得到的是 uv 平面某一点上的 irradiance

固定 st 平面的任意的点向 uv 平面去看,得到的就是同一个物体在不同方向上所得到结果。这里得到就是 uv 平面上所有点射向 st 平面某一点的 radiance

光场照相机的原理就是使用微透镜替换像素,让透镜将来自于不同方向的光分开然后记录下来,这样就可以支持后期的重新聚焦了。这跟昆虫的复眼原理比较像。

Each pixel (irradiance) is now stored as a block of pixels (radiance) 之前每个像素存储的是 irradiance,现在则是存储了一堆的 radiance

那么我们通过光场摄像机得到正常的图片?

我们可以让每个像素取每一个块中最底下那个值(就如同上面所示)或者选择中间,顶上,这样我们就可以虚拟地移动相机(一定范围)得到不太一样的图片了

同样地我们也可以动态聚焦,依靠的原理也是相同的。

当然光场照相机也有相应的缺点,就是分辨率不足,因为记录的信息的成倍增加,为达到同样分辨率的照片,需要更高分辨率的胶片,造成成本激增。

评论区

对你有帮助的话请给我个赞和 star => GitHub stars
欢迎跟我探讨!!!