回顾之前,计算机图形学有两种成像的方法:
- 光栅化成像
- 光线追踪成像
这两种成像方法都是Synthesis合成的,不是自然界中存在的,下面再介绍一种成像方式Capture方式
Imaging = Synthesis + Capture
1.相机
[1]Pinholes Camera针孔相机
- 利用小孔成像原理制作的相机叫针孔相机。针孔相机无法拍出东西的深度,任何地方都是清楚的,不会有虚化
- 之前做光线追踪基于针孔相机模型,所以得不到因为深度不同产生的模糊效果
- 因此在渲染过程中如果模拟光线与棱镜透镜的作用,可以得到模糊虚化的效果
- 所以后来的相机一般采用带棱镜的
[2]快门与传感器
- Shutter快门控制光进入相机
- sensor传感器在曝光过程中记录Irradiance辐照度
- 如果一个相机没有棱镜或针孔,感光元件上任何一个点都可能收集来自不同方向的光,且传感器不会区分,因此得不到真实的照片
[3]Field of View (FOV)视场
视场:能看到的范围
Focal Length焦距对视场的影响
对于一个固定的传感器尺寸,减少焦距增加视场
F
O
V
=
2
a
r
c
t
a
n
(
h
2
f
)
FOV=2arctan(\frac{h}{2f})
FOV=2arctan(2fh)
也就是说视场与传感器大小、焦距有关,那么在定义视场时通常会不容易,那么在市场中人们通常就将传感器大小规定为
35mm胶片(36x24毫米),这样就方便从焦距的大小来旋转视场的大小:
- 17mm is wide angle 104° (广角)
- 50mm is a “normal” lens 47°
- 200mm is telephoto lens 12° (远摄镜头)
传感器对视场的影响
在较小的传感器上保持FOV
为了保持视场,按照传感器的宽度/高度的比例减小镜头的焦距
[4]Exposure曝光
- H = T x E
- Exposure = time x irradiance
- Exposure time (T)
- Controlled by shutter(快门),控制有多长时间光可以持续进来
- Irradiance (E)
- Power of light falling on a unit area of sensor
- Controlled by lens aperture(镜头光圈) and focal length(焦距)
摄影中的暴光控制
-
Aperture size (光圈大小)
- Change the f-stop by opening / closing the aperture (if camera has iris control)类似于瞳孔缩放原理
-
Shutter speed快门速度
- 改变传感器像素集成光的持续时间
-
ISO gain (感光度)
- 更改传感器值和数字图像值之间的放大(模拟和/或数字),可以发生在硬件上(简单理解:最后接收到多少能量,任何将这个能量乘一个数而已)
在后期使用ISO来调整图片亮度,调节的同时也会将它的噪声放大。
摄影师必须权衡景深(?)和运动模糊的移动对象
快与慢摄影
高速摄影
普通曝光 = 极快的快门速度 x (大光圈和/或高 ISO)
低速摄影
Long-Exposure Photography(长的曝光时间,延时摄影):
2.Thin Lens Approximation(薄透镜近似)
通常入门不会使用单个棱镜来做相机成像,而是使用多个棱镜组成的棱镜来做成像
实际的棱镜并不是我们通常想的可以将光聚集到某一点的那样简单的棱镜,下面先不按这种进行学习,想探索理想的情况下的棱镜
[1]理想的薄镜头 - 焦点
- 所有进入透镜的平行光线都通过透镜的焦点
- 通过镜头后,所有穿过焦点的光线都将平行
- 在现实中焦距可以任意改变
薄镜头方程
1 f = 1 z i + 1 z 0 \frac{1}{f}=\frac{1}{z_i}+\frac{1}{z_0} f1=zi1+z01
- z 0 z_0 z0:物距
- z i z_i zi:像距
- f f f:焦距
薄镜头方程推导过程:(相似三角形)
[2]Defocus Blur(散焦模糊)
- 为了解释景深,引入Circle of Confusion (CoC)
- 左边有一个Focal Plane,其上的东西会成像到Sensor Plane上;Object不在Focal Plane上,可能会聚焦在Image上,然后光线继续传播到Sensor Plane上,这时候在Sensor Plane上形成的圆就是CoC。
- CoC的大小与光圈大小成正比。
由CoC得知,看到的东西是否模糊,取决于光圈的大小,大光圈容易有模糊的效果
[3]光圈F数
- F数的定义是焦距除以光圈直径
- 常见的真实镜头F数: 1.4, 2, 2.8, 4.0, 5.6, 8, 11, 16, 22, 32
- F 值为2的光圈有时写成 f/2,反映了这样一个事实,即绝对光圈直径(A)可以通过焦距(f)除以相对光圈(N)来计算。
3.光线追踪中使用理想透镜
以前的光线追踪中,将相机与某个像素进行连线,相机是一个小点,也就是采用的是小孔成像原理
模拟薄透镜可以做出景深的效果
- 选择sensor size传感器大小、lens focal length棱镜焦距和aperture size光圈大小
- 选择感兴趣的主题
Z
0
Z_0
Z0的深度(把透镜放到场景中的某个位置)
- 根据透镜公式,我们知道物距是 Z 0 Z_0 Z0,及其焦距,这样就可以计算出其像距 Z i Z_i Zi
那么接下来就可以进入渲染流程了:
- 对于sensor传感器/成像平面上的点 x ′ x' x′
- 在透镜上随机采样点 x ′ ′ x'' x′′
- 将上面两点连线后,根据透镜性质得知光线可以传播到 x ′ ′ ′ x''' x′′′
- 估计 x ′ ′ ′ x''' x′′′到 x ′ x' x′的radiance
4.Depth of Field景深
用不同大小的光圈可以控制模糊的范围
景深对应的就是CoC小的那一段,这段是清晰的
真实场景中有一段深度(景深)经过透镜会在成像平面附近形成一段区域,这段区域内认为CoC是足够小的。这段就是清晰的。
可以简单理解成只要CoC比像素小或者差不多,画面就是清晰的
5.Light Field / Lumigraph光场
虚拟现实:将看到的世界在绘制在一张图上,也就是用一张图来模拟真实世界
[1]The Plenoptic Function全光函数
The Plenoptic Function全光函数描述人可以看到的东西
站在一个场景中,往四面八方看,用极坐标看的位置,全光函数定义了往某个方向看会看到什么值
P
(
θ
,
ϕ
)
P
(
θ
,
ϕ
,
λ
)
P
(
θ
,
ϕ
,
λ
,
t
)
P
(
θ
,
ϕ
,
λ
,
t
,
V
x
,
V
y
,
V
z
)
P(\theta,\phi) \\ P(\theta,\phi,\lambda)\\ P(\theta,\phi,\lambda,t)\\ P(\theta,\phi,\lambda,t,V_x,V_y,V_z)
P(θ,ϕ)P(θ,ϕ,λ)P(θ,ϕ,λ,t)P(θ,ϕ,λ,t,Vx,Vy,Vz)
- λ \lambda λ:波长,使图片具有颜色
- t,电影世界
- V x , V y , V z V_x,V_y,V_z Vx,Vy,Vz:全息电影,也可以理解为整个世界,整个世界就是一个7维的函数。
[2]光场
光场其实就是全光函数的一小部分。
定义光线:
将一个物体放在一个包围盒中,从任何位置和任何方向看这个物体。想描述物体所能被看到的多种情况,描述这个物体在包围盒上,在任何位置往任何方向获取的光线,写成一个函数。这个函数就记录了物体表面不同位置往各个方向的发光情况。
光场就是在任何位置往任何方向的光的强度。光场只是全光函数的一小部分,只包含二维位置(相当于uv坐标)和二维方向
(
θ
,
φ
)
(θ,φ)
(θ,φ)
把物体变成光场,记录下光场后也就相当于记录下了物体的观测。不需要里面的物体是什么,只需要知道光场就知道了观测。
可以用一个平面,平面上的二维坐标和二维方向定义光线,作为光场的参数。
广场就是在任意一个方向往如何一个位置去的光对的强度
根据实例认识两种理解方式(a和b两种):
不同之前看的一个像素,这个像素的光来自于不同方向的光的平均(也就是下图中接收光的透镜上中),光场实际是将不同方向的光通过像素,将其分别记录下来,记录到sensor中
[3]光场相机
光场相机应用的是微透镜原理,使用微透镜将不同方向的光分开。
与普通相机不同之处是:光场相机可以先拍照在后期调整聚焦
普通相机中黄色的就是获取计算后得到的最终的像素。光场照相机将这里变为微透镜,微透镜将不同方向的光分散开。普通照相机记录一个像素,光场照相机计算一片像素。
然后将每个透镜选择一条光线,将其结果记录为像素值。就相当于用相机拍摄特定方向的照片。通过取不同方向的光线可以虚拟的移动摄像机的位置。
尽管如此,光场相机并没有广泛使用,是因为其具有如下缺陷:
- 分辨率不足
- 高成本,难设计
- 像素总个数和一个像素分成多少个方向需要权衡