01 - 相机,景深与光场
这篇文章会说说有关图形学中默认我们都懂的一些东西:相机,透镜和光场.
成像
成像 (imaging) = 合成(synthesis) + 捕获(capture).
- 光栅化和光线追踪都属于合成.
- 捕获就是捕捉真实的世界,并将其变为照片.
成像原理大致分两种,小孔成像和透镜成像:
从上图可以看出,针孔相机成像是没有景深的,我们做光追时也用的是针孔相机,无法产生景深。如果可以模拟光线与透镜成像,那么就能够得到有景深的画面。
相机
相机的横截面如图,可见其结构十分复杂:
接下来简单说说相机的一些组件。
快门
快门(Shutter),允许光线信息通过并进入透镜,一般保持关闭,拍照的时候才打开:
传感器
传感器(Sensor),是相机成像的地方,它接收光线并存储,通过传感器的信息得到最终图像:
传感器存储的是物体所有方向的光,即每一点存储的都是 irradiance
。
目前的传感器无法区分来自各个方向的光线,这也是为什么传感器前面有针孔/透镜。
视场(FOV)
视场(FOV,Field Of View),指能看到多大的范围。
以针孔相机为例,看看哪些因素可以影响视场:
如图,影响FOV大小的主要因素为 传感器长度h,焦距 (Focal Length)f。可以很容易得到计算FOV的公式:
曝光
曝光(Exposure),物理意义上在一段时间内所接收到的能量。公式如下: irradiance
。
影响曝光时间的因素:
- 快门速度(Shutter Speed):快门打开时间越长,进光时间越长,进光量越多。
影响接收irradiance
多少的因素:
光圈大小(Aperture size):由
f数(f-stop)
控制其大小,光圈其实是仿照人瞳孔制作的,光圈越大,接收到的光就越多。f数:焦距 / 光圈直径,写法为fN或f/N。
感光度(ISO gain) :从软/硬件上对最终图像进行后处理,可简单认为给最终图像值乘上一个数。
如图,光圈越大(f-stop越小,因为该值大小与光圈直径的倒数成正比),画面亮度越高,但同时会有景深模糊;快门时间越长,照片越糊(出现了运动模糊);ISO越大,噪点更多(因为是线性变换,同时也增大了noisy
)。
曝光主要用于高速摄影和延时摄影:
- 高速摄影:物体运动速度极快,因此需要非常小的快门速度来捕捉到它,但同时为了补偿进光时间不够,还需要使用大光圈或提高ISO来保证曝光正常。
- 延时摄影:一般采用较长的快门时间来捕捉物体运动的轨迹,例如星轨,飞机飞行轨迹什么的。
理想透镜及其性质
我们讨论的理想透镜的条件如下:
- 所有平行射入透镜的光都会集中于焦点
- 所有从焦点射入透镜的光都会平行射出(光路可逆)
- 焦距可以动态改变
对于一个理想透镜,定义物距
景深
散焦模糊
散焦模糊(Defocus Blur),散焦模糊会带来成像模糊的现象,下面研究模糊现象出现的原因。
首先介绍 弥散圆(CoC,Circle of Confusion)的概念。如下图,物体经薄透镜成像后,成像于一点上,但传感器平面却不在这个点上(在前面或后面),这时,在传感器平面的像就不是一个清晰的点,而是一个模糊的圆。
利用相似三角形,可以求得弥散圆的直径为:
由f数的定义和上式可得,弥散圆直径C与焦距f和f数N的关系如下:
渲染效果如图:
景深
景深(DoF,Depth of Field),和上边的散焦模糊不同,它是一种效果,而景深则是一个具体的数值。
当我们固定一个可以接受的弥散圆直径C之后,可以逆向推导出小于该C值的对应的一段距离是多少,这个距离就是景深,如下图所示:
光场
光场(Light Field /Lumigraph),是任何位置的光在传播过程中,所包含的位置,方向,光强等信息。
人眼成像
人眼看到的3D世界,在眼睛里就是一张2D的图。如果直接给人眼看这种2D的图,也能得到同样的效果(VR)。
全光函数
全光函数(The Plenoptic Function),描述了人眼看到的所有东西。接下来将从极坐标开始,逐渐引入各种全光函数的各种组件,认识全光函数。
理解
首先,假设人在一个位置固定的场景中,可以四面八方去观察,那么用极坐标来定义观察方向,最终结果是一个值。
接下来,引入波长,就能看到一个彩色的世界。
然后引入时间的概念,让看到的彩色世界动起来,也就是看“电影”。
前面提到我们所在的位置固定,如果我们可以走动呢?引入三维坐标,得到“全息电影”的概念。
综上所述,我们再换一种理解方式:在任何位置,往任何方向看,在任何时间看到的不同颜色,这就是我们能看到的所有东西。这就是全光函数。
采样
要想对全光函数进行采样,首先得定义光线,有两种方法:
2D位置+2D方向:在物体一侧定义一个平面,给出平面上某点的位置信息,然后给出方向即可。
2D位置
u(u, v)
+2D位置s(s, t)
:在物体一侧定义两个平面,分别给出两个点的信息,确定一条光线。
定义完光线后,要设法捕获全光函数所记录的信息,这里利用一个类似包围盒的东西,将物体四周的光线信息收集起来:
与光场的联系
光场只是全光函数中的一小部分,即二维的位置和二维的方向。有了光场后,我们就能从任意位置观测同一个物体。它就像一个黑盒,只关心黑盒外光线的信息就行,而不必关心里边的物体。
总的来说,光场是光线在空间传播中四维的概念,是空间中同时包含位置和方向信息的四维光辐射场的参数化表示,是空间中所有光线光辐射函数的总体。在空间内任意的角度、任意的位置都以获得整个空间环境的真实信息,用光场获得的图像信息更全面,品质更好。
[补充]u,v,s,t的映射关系
光的第二种描述方法中,用两个平面的两个点描述光线,这是参数化表示方法,那如何利用这个方法去得到我们要看的图片?
固定(s,t),让当前(s,t)点看到的所有(u,v)形成一张图片。
固定 (s,t),所有的(u,v)都看向该点,即不同方向看一个点,样子是不同的。
光场相机
光场相机利用了光场的原理,将像素换成微透镜,把来自不同方向的光分散到一片区域上去然后再记录下来。它最重要的功能就是 支持先拍照,后期动态调参。
如何将光场相机拍的照片换为普通照片,只需将每块像素取一个存储好的值,然后重新聚焦即可:
光场相机的优缺点:
- 优点:“虚拟”的移动相机(通过取不同方向的光线,好像在移动摄像机的位置)
- 缺点:分辨率不足,对胶片要求高,成本高
参考资料
GAMES101-现代计算机图形学入门
19 相机与透镜 (yuque.com)
光场 (Light Field) 原理及成像简介 - revere - 博客园 (cnblogs.com)