这一章内容比较独立,相较之前是一个全新的话题(个人认为老师这块讲的有点乱,所以对顺序做了一定调整)

成像

成像方法大体上可以分为合成成像(Synthesis)和捕捉成像(Capture)两种,我们之前讲的光栅化成像和光线追踪就都属于合成方法成像,而另一类捕捉成像,则是直接捕捉现实图片,相机成像就是一个典型的例子

关于其他的一些成像方法,如研究光在极短时间内如何传播(Transient Imaging)等,目前也正在研究之中…

整个成像的范畴更多是在计算摄影学(Computational Photography)中研究,算是计算机图形学的一个交叉学科

相机

小孔成像与针孔相机

最早人们从小孔成像开始研究相机,以小孔成像为原理的相机叫做针孔相机

小孔成像

针孔相机拍出的东西是没有深度可言的,像的所有地方都是锐利的,而透镜成像则会产生虚化,这在之后会进一步展开讨论

之前光线追踪所用的相机就可以看做是一个针孔相机模型,所以我们的渲染结果得不到景深的模糊效果

如果想要得到带有景深的渲染效果,则必须考虑如何在计算机中模拟光线和透镜的作用

注意,成像过程中,透镜或小孔是不可或缺的,因为我们如果要使我们成的像清晰,必须清楚的区分来自各个不同方向的光,如果直接把感光元件放在捕捉对象面前,感光元件上任何一个点都会收集到来自不同方向的光照信息,叠加计算记录的就是Irradiance,而Irradiance是没有方向的概念的,成像自然会糊。换句话说,传感器没法直接记录Radiance,所以只能依靠透镜或小孔来辅助

(现实中是存在直接记录Radiance的相机的(光场相机),这在后面会提到)

传感器与视场

传感器(sensor)(or感光元件)是用来捕捉记录光线信息的部件,它与胶片(film)在渲染中并不完全等价,在渲染器中,sensor收集信息,film决定储存格式,但大多数时候我们认为他们是一种东西

视场(field of view,FoV)指的是相机的拍摄范围,其大小与传感器大小以及焦距有关

视场1

两个参数共同作用下视场大小是很难被衡量的,所以我们通常固定传感器的大小,通过变换焦距来控制其大小(现实中一般相机通常为35mm),这也是市面上买单反镜头有焦距的区别而没有传感器大小区别的原因

视场2

总结来说,传感器大小相同,焦距越大,视场越窄;焦距相同,传感器越大,视场越宽;视大小相同场,焦距和传感器成比例

下面一系列参数得到的视场大小是相同的,不同传感器对应了不同的设备

视场4

曝光

理论定义:曝光值$H=T\times E$

T表示曝光时间,主要由快门控制

E表示Irradiance,由光圈和焦距共同决定

曝光值定义

摄影中控制曝光值主要有三大要素:快门、光圈、感光度

快门

快门是用来控制光线照射感光元件的时间的部件

工作动画:

快门动画

快门主要有两个作用:①影响曝光;②影响被摄影物体的形态

影响曝光:

快门打开时间越长(更长的曝光时间),相机记录的光线就越多,照片越亮,反之则光线少,照片较暗

另外,更长的曝光时间也越容易得到运动模糊的效果,就类似光栅化中的反走样,只不过它是对于时间采样的反走样

曝光时间

运动模糊并不总是有害的,有时候我们为了表达被拍摄物体的速度感,会刻意的希望加上一些运动模糊

影响被摄影物体的形态:

快门关闭和打开的过程也是需要时间的,我们定义快门速度(shutter speed)这一参数来衡量它

快门速度越快,被拍摄的高速物体越清晰,反之则会有一定形变

快门速度

快门速度

光圈

光圈是一种仿照人类瞳孔的仿生学的设计,由多个小叶片相互重叠而成的光孔,调节其开闭可以控制感光元件的受光量

光圈越大,进光量越多,照片越亮,反之越暗

一般通过F数来表示其大小,F数的明确定义在后面会提及,这里可以先暂时理解为光圈直径的倒数

光圈1 光圈3

光圈2

除此之外,光圈还会影响画面景深,相关内容在之后薄透镜近似中也会详细说明

感光度(ISO)

感光度表示的是相机感光元件对光线的敏感程度

感光度越高,相机感光元件对光线敏感程度越强,照片越亮;感光度越低,相机感光元件对光线敏感程度越弱,照片越暗

但是,随着感光度的增加,感光元件对一些噪声的敏感程度也随之增加,画面就会逐渐出现一些噪点

感光度

总结来说,快门、光圈、感光度对曝光的影响总结如下

快门 影响曝光和被摄物体形态
光圈 影响进光量和画面景深
感光度 影响曝光和画质

影响曝光三要素

相关概念详细可参考:

https://zhuanlan.zhihu.com/p/134166476

光圈和快门共同控制进光量

以下光圈大小和快门速度参数所控制的进光量相同,可以看到光圈F数的平方与快门速度成正比,因为对于进光量,应该算的是光圈大小,也就是面积,而不是直径
$$
F^2\propto Shutter\ Speed
$$
进光量

实际应用方面,在拍摄流光轨迹、延时摄影等慢门题材时,宜用慢速快门和小光圈,而在拍摄高速题材时,宜用高速快门和大光圈,具体可以参照链接最后的部分

薄透镜近似

真实的透镜并不会如我们想的那么理想,比如下图中的透镜,它无法正确的将光线聚焦为一点,从而出现像差(Aberrations)

像差

并且,现实中我们用的相机一般用的都不是单个透镜,而是一个透镜组,这比理想情况复杂的多,在此不做过多讨论

这里我们只考虑理想化的透镜:

  • 所有进入透镜的平行光线都通过透镜的焦点
  • 穿过焦点的所有光线在通过透镜后将是平行的
  • 焦距可以任意改变(实际上用透镜组改变焦距)

薄透镜方程

这个方程属于初中内容,简单推导如下:

薄透镜方程1 薄透镜方程2

$$
\frac{h_o}{z_o-f}=\frac{h_i}{f}\Rightarrow \frac{h_o}{h_i}=\frac{z_o-f}{f}\ \ ①\
\frac{h_o}{f}=\frac{h_i}{z_i-f}\Rightarrow \frac{h_o}{h_i}=\frac{f}{z_i-f}\ \ ②\
联立①,②:\ \ \frac{z_o-f}{f}=\frac{f}{z_i-f}\
f^2=(z_o-f)(z_i-f)\
z_oz_i-(z_o+z_i)f+f^2=f^2\
\frac{1}{f}=\frac{1}{z_o}+\frac{1}{z_i}
$$
动态演示链接:

http://graphics.stanford.edu/courses/cs178-10/applets/gaussian.html

景深

CoC

当传感器不在物体真正的成像平面上时,光线会继续沿直线传播,在感光元件上形成一个弥散圈,这个圈就叫CoC(Circle of Confusion)

CoC

上图的关系式告诉我们,光圈越大,越容易出现模糊

CoC2

F数

之前我们简单理解F数为光圈直径的倒数,实际上,其确切的定义是焦距除以光圈直径

F数为n的光圈一般记作f/n,如下图中F数为2,则记作f/2

常用的F数还有f/1.4,f/2.8,f/4.6,f/5.0,f/8,f/11,f/16,f/22,f/32等

F数1

F数2

上图公式进一步说明,拍摄带有虚化的照片要用大光圈,而拍摄清晰照片要用小光圈

景深定义

在实际拍摄过程中,如果要得到足够清晰的像,其实并不需要将物体完美对焦在焦点平面上,只要CoC大致小于胶片传感器上像素的大小,就可以被认为是成功对焦了,如此一来,一个物体可以成功对焦就有了一个距离范围,这个范围就是景深(DoF,depth of field)

景深1

景深公式推导如下:

景深2

动态演示链接:

http://graphics.stanford.edu/courses/cs178/applets/dof.html

光线追踪中的薄透镜近似

之前在做光线追踪的时候我们的相机都是假设为一个小点,即默认小孔成像,如此成像得到的结果是完全清晰、没有景深的

但现在我们就可以通过模拟薄透镜来近似做出景深的效果,如图

光追薄透镜近似

首先我们要确定薄透镜的大小和位置,由此确定光圈和焦距,然后在透镜和传感器(像素屏幕)上分别采样,并连接成一条线

这条光线经过折射后偏转,打到物体的x’’’处,计算x‘’‘到x’’的radiance并记录在x’处,这就是一条光追路径的薄透镜近似流程

光场

关于光场的英文名称,Light Field / Lumigraph 两个词其实是指的同一个东西,在这里我们用Light Field

首先来看我们是怎么看这个世界的

虚拟现实原理1 虚拟现实原理2

我们眼中的三维世界其实可以类比为一张图片,现实中如果我们在一张图片或者一块幕布上直接记录我们这一刻所看到的所有信息,并把它放在我们的眼前,我们感受到的结果是完全一样的,这也就是虚拟现实的实现原理

全光函数

全光函数是记录光线特征信息的函数,一般来说这些特征可以被分为四类:位置,角度,波长,时间

$P(\theta,\phi)$ 最简单的全光函数
$P(\theta,\phi,\lambda)$ 引入颜色
$P(\theta,\phi,\lambda,t)$ 引入时间,可以类比看电影
$P(\theta,\phi,\lambda,t,V_X,V_Y,V_Z)$ 引入观测位置坐标,相当于全息电影

采样全光函数

所谓光场,就是对全光函数的采样,可以理解为全光函数的一个子集,因为现实中光线的颜色特征通常由RGB通道记录,而时间信息通常由动画帧来记录,所以对于光场来说只需要关注方向和位置即可,这样一来,原本七维的信息就被降至为了五维
$$
P(\theta,\phi,V_X,V_Y,V_Z)
$$
后来,人们发现只需要四维的信息(二维位置信息uv + 二维方向信息θφ)就可以定义光线的方向和位置;再后来,索性方向信息也不要了,直接定义两个平面,两平面上任意两点连线就可以表示空间中任意一条光线

uvst1 uvst2

光场降维过程的通俗解释:https://www.zhihu.com/question/393235387/answer/1215239335

对相机来说,uv可以理解为传感器 / 成像平面,st可以理解为镜头 / 光圈平面

进一步用采样来理解这个过程,如图

uvst3

1° 固定(u,v),对st平面采样,此时的采样结果可以理解为从uv上某点沿各个方向观察世界的结果

2° 固定(s,t),对uv平面采样,此时的采样结果可以理解为从uv上各个不同的点以不同角度观察世界中某一点的结果

更多关于这方面的理解可以参考:https://zhuanlan.zhihu.com/p/24982662

现实中模拟这种方式记录光场,有斯坦福的相机阵列(Stanford Multi-Camera Array),另外,自然界中苍蝇的复眼也是用类似的方式来感知外界信息的,也就是说苍蝇所接受到的信息不是Irradiance,而是经过复眼分光的Radiance信息

光场相机

光场相机顾名思义就是能记录光场的相机,它最重要的功能在于它支持先拍照,然后在后期重新对焦

原理:将原本的成像面的每个像素都换成微透镜(相当于st),再在成像面后面真正的去使用传感器记录信息(相当于uv)

其实记录之前还有一个校正的过程,在这里不做细说

光场相机原理

普通相机的传感器像素记录的是irradiance,但是对于光场相机来说,它们记录的分光之后的分量,也就是记录的是Radiance(感觉光场相机就是由昆虫复眼产生的灵感造出来的)

那么,我们又要怎么通过光场相机记录的光场信息得到最后的相片呢?

很简单,对于每个微透镜,在经过它的光线中只选择一条,这样每个微透镜就都对应了一个值,然后把这个值作为当前传感器像素的值

如图所示,可以统一选择最下面的光线,也可以选择中间那根,这样就可以实现虚拟的移动相机的位置,并且这种方式得到的光照信息也是正确的(并不是简简单单的平移图像)

选光线的步骤称为重新聚焦,可以参考:https://zhuanlan.zhihu.com/p/24983091

目前的光场相机也有它的局限:

  • 分辨率不足,光场相机的每个像素都相当于要记录一个像素组,在同样的胶片尺寸下,光场相机的分辨率往往会很低

  • 成本高、难设计,对仪器的精密程度大大提高,就比如微透镜组