一、成像方法
Imaging = Synthesis + Capture
1.Synthesis(图形学上)合成:比如之前学过的光线追踪或者光栅化
2.Capture(捕捉):把真实世界存在的东西捕捉成为照片
二、相机
1.小孔成像
- 利用小孔成像的相机叫做针孔相机
- 相机的各个部位
-
- 快门(Shutter):控制光进入相机
- 传感器(Sensor): 捕捉光并记录下来(记录 Irradiance)
- 如果没有透镜,相机就拍不了了
因为如果直接把感光元件放在一个人的面前,感光元件上任何一个点都可能收集到不同方向过来的光,而且作为传感器的它不会区分来自各个方向的光线,所以会糊
-
针孔相机拍出的东西是没有深度可言的
也就是任何地方都是锐利清楚的,都不会是虚化的
因为透镜的存在所以会产生虚化,这个之后会提到
并且我们之前做光线追踪的时候用的就是针孔相机的模型,所以我们也得不到景深的模糊效果
所以如果我们可以模拟光线和透镜的作用,那么我们也可以作出景深的渲染效果
2.FOV(field of view 视场)
视场说的是能看到多大的范围
h: 传感器高度(宽度)
f: 焦距,传感器与 透镜/小孔 的距离
同样大小的传感器,焦距越大,视场越窄
同样焦距,传感器越大,视场越宽
同样视场,焦距和传感器等比
-焦距(Focal Length)
-
- 历史原因,通常以35mm的胶片为基准(eg.17mm为广角)
- 手机对应的基准会小很多(等效为35mm)
-传感器大小(Sensor Size)
-
- 区分传感器和胶片:传感器记录收到的Irradiance; 胶片是存成图像格式
3.Exposure 曝光
曝光记录的是总共的能量,是T×E
曝光时间T由快门控制
Irradiance(E)由光圈与焦距决定
影响照片亮度的三要素:光圈、快门、感光度
三者的关系:
光圈
光圈是个挡光的东西,有大小,由F数控制,光圈是一种仿生学的设计,仿照人的瞳孔放大缩小
- F-Number (F-Stop):描述光圈的大小
- 有两种写法:FN or F/N(这些不重要,重要的是N)
快门
- 快门:控制光通过的时间(我们关心从关闭到打开的过程)
- 两个现象
更长的曝光时间/更快的物体运动速度 容易造成运动模糊
类似于在时间上采样
快门开启需要时间,这个会造成高速运动物体的扭曲,比如下图飞机的螺旋桨
ISO gain(感光度)
- ISO :可以理解为乘了一个数(就是一个简单的增倍eg.ISO200就是ISO100的两倍)
- ISO做简单放大的同时也会放大噪声,所以当倍数过大的时候可能会造成图片上很多白点
进光量~F-Stop² / Shutter Speed
(F数理解为直径分之一,与面积是平方关系,所以为了曝光量平衡,与快门速度也是平方关系)
即使比例关系做对了
但是大光圈会有浅景深的效果,快门时间会导致运动模糊等效果,需要权衡
- 应用:
高速摄影,每秒极高帧率,快门时间受限需要用更大光圈或者高ISO - 延时摄影,快门时间很长,光圈变小
- 萤火虫长时间的飞构成了图片
三、透镜
真实的透镜并不那么理想,有些透镜无法将光线聚于一点 出现 Aberrations
理想化的透镜:
所有进入透镜的平行光线都通过透镜的焦点
穿过焦点的所有光线在通过透镜后将是平行的
焦距可以任意改变(实际上用透镜组改变焦距)
1 薄透镜方程
定义:zo(物距) zi(像距)f(焦距)
1/f =1/zi + 1/zo
推导过程:
2.Defocus Blur(焦散模糊) ——景深的原因
为了解释景深,我们引入Circle of Confusion (CoC)
左边有一个Focal Plane,其上的东西会成像到Sensor Plane上
如果Object不在Focal Plane上,如下图可能会聚焦在Image上,然后光线继续传播到Sensor Plane上,这时候在Sensor Plane上形成的圆就是CoC(根据焦距和物距像距的关系公式)
Coc的形成原因就是一个点经过透镜后变成一个圆
CoC告诉我们看到的东西模糊不模糊,取决于光圈的大小,大光圈容易有模糊的效果
因为说CoC大小与光圈成正比,所以我们回头看光圈
之前我们说F数它是直径分之一,其实不对
F数的明确定义是焦距除以直径
一些例子:
3.在光线追踪中使用薄透镜近似
- 先定义
- 传感器、焦距、透镜大小(直径),物距()
- 可以推出相距()
对于 传感器上的每个像素x ′ 以及 在透镜平面上随机采样的一点x ′ ′
把这两点连一条线,连上以后就能知道会打到物体的位置x ′ ′ ′ (这个是根据透镜的性质,过透镜中心的点必然会保持直线)
我们得到这个光线,知道物体的位置x ′ ′ ′ 最终会被记录到x ′ 上
所以我们计算x ′ ′ ′ → x ′ ′ 的radiance就可以了
4.景深 Depth of Field
- 用大/小 光圈会影响模糊的范围
- 景深就是指实际场景中有一段深度,经过透镜后会在成像屏幕附近形成一段区域,我们认为这段区域的CoC都是足够小的。(可以理解为CoC和pixel一样小时,形成的image就是锐利的)
-
- 所谓的景深的这一段就是对应CoC足够小的一段也就是清晰的一段
- Depth of Field(FYI)
- 考虑景深的最远处和最近处,推一下公式,把这些深度和焦距联系起来
也就是某个位置穿过透镜会到某个地方
-
- 把DF DN DS dF dS dN 联系起来(深度和焦距联系起来)
- DOF = DF - DN
四.光场
Light Field / Lumigraph 两个词指同一东西,属于历史遗留问题,是由两个组独立几乎同时发现的同样东西,叫法不一样
要说光场,我们就从看到的世界是什么说起
我们看到这个三维世界,在我们眼睛里类似就是一幅图
那如果我们直接看到一幅图,这幅图完全记录了之前看到的光线信息,我们也能得到同样的结果
这也是类似虚拟现实的原理,用一个平面的成像设备,让人误以为在三维环境中
1.全光函数 The Plenoptic Function(描述我们可以看到的世界)
- 从简单说:站在一个场景,位置固定,我们往四面八方看,定义任意一个方向
- 改进:引入波长(颜色) → 彩色
- 拓展:时间t → 电影
- 再拓展:位置不固定,在三维空间内任意移动 VX VY VZ → 全系电影
- 再改进:把函数理解为在任意位置,往任意方向看,在任意时间看到不同的颜色
→ 这就是我们看的世界
- 可以从全光函数提取一些信息出来,用来表示更复杂的光
2.采样全光函数 Sampling Plenoptic Function
光场其实就是全光函数的小部分,在定义光场前我们先定义光线,定义一条光线需要的是二维的位置和二维的方向(在下面会阐述)
要记录一个物体向四周展示的样子,只需要记录包围盒上表面各个点往各个方向发射的光线的信息
这也就是光场记录的东西
在物体表面任何一个位置往任何一个方向去的光线的强度
怎么理解二维的位置与二维的方向呢?
物体的表面是二维的,方向也是二维的,所以用这个四个信息当变量的函数就是光场
我们把物体变成光场,记录下光场后也就相当于记录下了物体的观测
我们还可以理解成我们取一个平面,平面右边是一个物体,它的光会穿过这个平面来到左边
我们不需要知道右边有什么,我们只需要知道对于平面上任意一个点的任意一个方向会发出什么
我们用两个平面来定义光场,便于降维
也就是从上面的 位置+方向 变成 位置+位置
两个平面两点一连就得到一个光线
这也就是光场参数化的过程,用uv与st来组合
固定(u,v), 所有的(s,t)组成一张image,也就是从(u,v)点看到的外部世界的样子
固定(s,t), 所有的(u,v)组成一张image,也就是显示从不同方向看同一个点的样子
3.光场相机
微透镜原理:把pixel替换成透镜,可以把来自于不同方向的光分开再记录下来
支持后期聚焦(可以先拍照再调焦)
光场camera的原理:(其实就是光场的原理)
光场照相机的图怎么还原成普通相机呢?
我们把分散的光,每个透镜都选一条,然后把得到的结果都记录在一个像素的结果上,现在一个透镜就对应一个值了,和之前一样
选光线的步骤就相当于是重新聚焦,虚拟地移动相机的位置
我们不涉及重新聚焦具体怎么做,只介绍思想,我们从四维光场中按需查询选取光线
光场照相机也有问题
分辨率不足,因为原来一个位置可能只需要一个像素,但是透镜把光分开以后,可能会需要好几个像素来记录不同方向的光,同样的胶片尺寸下,光场相机的分辨率不足
高成本、难设计