计算机图形学【GAMES-101】12、相机(视场、曝光、光圈(F-Stop)、薄棱镜近似、CoC、景深)

快速跳转:
1、矩阵变换原理Transform(旋转、位移、缩放、正交投影、透视投影)
2、光栅化(反走样、傅里叶变换、卷积)
3、着色计算(深度缓存、着色模型、着色频率)
4、纹理映射(重心坐标插值、透视投影矫正、双线性插值MipMap、环境光遮蔽AO)
5、几何(距离函数SDF、点云、贝塞尔曲线、曲面细分、曲面简化)
6、阴影映射(Shadow Mapping)
7、光线追踪原理(线面求交、预处理光追加速)
8、辐射度量学与光线追踪
9、蒙特卡洛路径追踪(Path Tracing)(光源采样)
10、材质(BRDF)(折射、菲涅尔项、微表面模型、各向异性材质)
11、渲染前沿技术介绍(双向路径追踪BDPT、MLT、光子映射、实时辐射度、外观建模)
12、相机(视场、曝光、光圈(F-Stop)、薄棱镜近似、CoC、景深)
13、光场、颜色与感知
14、动画(物理模拟、质点弹簧系统、粒子系统、运动学、动作捕捉、欧拉方法)


1 相机

(1)图像 = 合成 + 捕捉 (图像可以是合成的,也可以是捕捉得到的)
(2)快门和传感器

  • 快门:可以控制光在一个极短的时间内进入相机
  • 传感器:在曝光过程中,在传感器每个点上记录其接受到的irradiance

(3)针孔相机和透镜相机的区别

  • 针孔相机,利用小孔成像的原理,如上图站立的人,身上每个点都在向四面八方反射光线,只有射向小孔的一条光线能通过,最终打在传感器上。光线追踪利用的是针孔摄像机模型
  • 透镜相机(常用),用一个凸透镜,可以允许更多的光通过。就人生上烟杆前端这一点来说,它反射出去的光,可以有多条以不同的折射角度 射到成像平面上,会更清晰一些。
    在这里插入图片描述
  • 如果没有透镜和小孔,直接用传感器记录光线,不能得到正确结果,因为传感器并不区分来自哪个方向的光线,导致传感器上一个点记录了所有方向的光线,非常杂乱,得到的只会是一团浆糊。
    在这里插入图片描述

2 视场(Field of Vied)(FOV)

视场就是相机能看到的角度范围

(1)小孔摄像机的视场计算

  • 定义好传感器的高度h,和焦距 f,能很轻松的算出

    F

    O

    V

    =

    2

    a

    r

    c

    t

    a

    n

    (

    h

    /

    2

    f

    )

    \\displaystyle FOV = 2arctan(\\frac{h/2}{f})

    FOV=2arctan(fh/2),缩小焦距 f 可以得到更大的视场

  • 通常描述焦距都会换算到35mm所对应的焦距长度。(比如一个手机,一共就不到1cm厚度,但是它描述的焦距为28mm,其实是等效到35mm传感器上所对应的焦距)
  • 通常会固定传感器大小,用焦距衡量视场, 17mm —— 104°(广角), 50mm —— 47°(普通), 200mm —— 12°(远摄)
  • 从图上很容易可以看出,视场与焦距成反比,与传感器尺寸成正比。可以认为传感器越大、焦距越长,则相机越好
    在这里插入图片描述

3 曝光(Exposure)

H = T x E

  • H:曝光(Exposure)
  • T:曝光时间(time),通过快门控制多长时间光可以进入
  • E:辐照度(irradiance),感光器的单位面积上接收到的辐射通量总和,通过光圈大小(aperture)和焦距控制

举例理解:
在比较明亮的场景中,曝光时间控制短一些,在这特别短的时间内,辐射通量E是比较大的,所以能得到比较强的曝光
在比较昏暗的场景中,辐射通量E比较小,想要得到更大的曝光,则需要通过控制快门使曝光时间更长一些。

摄影中的曝光影响因素

  • Aperture size(光圈大小):通过开关光圈改变f-stop(光圈级数)。大光圈会模糊,小光圈更清晰。原因见后面章节CoC介绍
  • Shutter speed(快门):改变传感器每个像素吸收光的时间,快门打开时间长,拍摄运动的物体就会拖影,因为物体在你光圈打开这段时间内,每刻都在运动,而相机把每一刻的信息都记录下来了(如:传感器上像素点1记录了小人的头顶的那个点的能量(颜色),下一刻,小人往右跑了,头顶的位置变了,像素点2记录到了,以此类推,多个像素都记录过这个头顶的颜色,所以模糊。换一个角度思考,某个特定像素1,在某时刻记录了物体身上某个点的颜色,下一时刻,物体移动了,像素1又接收到了另一个颜色信息,也记录下来,因此在快门打开时间内,像素1记录了物体上很多的颜色,所以这个像素很会很模糊)
  • ISO gain(感光度):可以简单的理解成后期处理,把结果乘上一个数。在信号的角度理解,这样的操作同时将噪声放大
    在这里插入图片描述

4 光圈(F-Number)(F – Stop)

  • 写作FN 或 F/N,其中N就是F数,可以简单形象的理解为光圈直径的倒数。
  • 实际上F-Stop的数值为 焦距与光圈直径之比,即f/D
    在这里插入图片描述

综合应用

  • 高速摄影:特别小的曝光时间,短时间内拍摄许多帧照片,然后按正常速度播放。采用大光圈提高亮度
    在这里插入图片描述在这里插入图片描述
  • 延时摄影: 特别长的曝光时间、小光圈
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

5 薄透镜近似(Thin Lens Approximation)

目前都不会使用单个透镜做成像,而是用一个透镜组
在这里插入图片描述
真实的平面凸透镜并不会使光聚集于一点
在这里插入图片描述
理想的薄透镜应该有以下性质 (用透镜组来实现)

  • 任意平行光穿过透镜会聚焦在焦点处
  • 任意光通过焦点射向透镜,会变为互相平行的光
  • 假设薄透镜的焦距可以任意改变
    在这里插入图片描述

薄透镜公式

这个公式的作用:已知透镜的焦距

f

f

f

  • 给出成像平面摆在距离透镜多远的位置,可以知道物体在什么距离最清晰,即可算出focal plane
  • 给出物体与透镜的距离,则可算出成像清晰的平面应该与透镜的处于什么距离

在这里插入图片描述

6 Circle of Confusion(CoC)

CoC的尺寸就是,一个点成像后变成一个圆,这个圆的尺寸
下图所示,物距为zo的点,经过透镜后,聚焦在离透镜zi的距离上(通过上面波透镜公式算出),如果想让成像清晰有两个办法:

  • 点不动,成像平面放在zi处,这个zi是根据波透镜公式得出
  • 成像平面不动,点移动到Focal Plane上

计算CoC尺寸(就是算图中的C)
相似三角形推导过程省略,最后的等式中可以看出C和A成正比 ——光圈越大越模糊
在这里插入图片描述
以下两张图,可以很形象的看出位于焦平面成像清晰,不位于焦平面则成像模糊的原因
在这里插入图片描述在这里插入图片描述
大小光圈对比图
在这里插入图片描述

7 渲染中模拟透镜

一般光线追踪使用的是针孔摄像机模型,但是如果想做出真实相机中的模糊效果,需要模拟薄透镜相机
在这里插入图片描述

光追中模糊效果实现步骤:

  • 定义成像平面尺寸、透镜焦距

    f

    \\Large f

    f、透镜尺寸(光圈影响模糊程度)、透镜与相机成像平面的距离

    z

    i

    \\Large z_i

    zi

  • 根据公式公式

    1

    f

    =

    1

    z

    o

    +

    1

    z

    i

    \\large\\displaystyle \\frac{1}{f} = \\frac{1}{z_o}+\\frac{1}{z_i}

    f1=zo1+zi1,算出focal plane到透镜的距离

    z

    o

    \\Large z_o

    zo

  • 渲染
    • 遍历每个感光器上的点

      x

      \\large x'

      x (视锥体近平面的每个像素),连接

      x

      \\large x'

      x和透镜中心,与focal plane相交于

      x

      \\large x'''

      x′′′则所有经过透镜的光线必然都要相交于这一点

    • 光追每次仅一条trace,因此在透镜平面随机采样一个点

      x

      \\large x''

      x′′

      x

      作为光线的起点

      \\color{Red}以\\mathbf{x''}作为光线的起点

      x′′作为光线的起点。每个成像平面的像素的SPP一般都不为1,比如采样50条,每次随机采样,那么基本上会覆盖到整个棱镜的各个部分。

    • x

      x

      x

      x

      \\displaystyle\\large \\frac{x'''- x''}{|x'''-x''|}

      x′′′x′′x′′′x′′得到光线方向

      d

      \\large\\vec{d}

      d

    • 计算最近交点,最终得到radiance,记录到

      x

      \\large x'

      x
      在这里插入图片描述

上面为闫老师介绍的理论方法,在Ray Tracing in one weekend中,学习到了下面这种简化实现方法


1.先谈谈针孔相机的原理

  • 场景中的物体的某个点朝着各个方向反射光线,其中一条光线穿过针孔打在了成像平面上,成像平面记录这条光线的能量(颜色)。但是,可以看到如果成像平面在针孔的后面,结果一定会是一张颠倒的图像
  • 而对于光线追踪而言,考虑从相机发射光线,因此在光线追踪的做法是在成像平面选择一个x`像素中心作为光线起点,射向针孔与场景求交,计算着色后记录到该像素中。
    在这里插入图片描述

2.在光追代码中针孔相机模型

  • 成像平面改放在针孔的前面,这样的成像结果就不会颠倒
  • 实现步骤:
    • 遍历成像平面的每个像素点(一般喜欢叫做近平面,因为类似于光栅化中的视锥体近平面)
    • 以相机坐标(针孔)为光线的起点,朝像素发射光线
    • 击中物体的颜色计算作为该像素点的颜色值
      在这里插入图片描述

3.光追代码中的透镜相机实现景深模糊效果(貌似并不是按照理论来做的,仅仅是效果类似)

  • 首先把上面的针孔换成一个有半径的圆盘,圆盘中的任意一个点作为光线的起点
  • 把近平面直接放在场景的focal plane,这不是根据公式计算出来的,而是你想让哪个距离的物体清晰,就放在那个距离处
  • 这样就能让最终的出图变得有景深的效果
    • 首先,我们每个像素的采样次数并非一次,即有多个trace
    • 其次,我们每个trace的起点是圆盘内随机生成,直接射向近平面的某个像素的某个采样点,这些采样点特别近,认为同射向一点。如果物体刚好位于focal plane附近,则每一条光线基本上都会相交于同一个点,成像较为清晰。如果特别远,每个trace的交点就差距较大,最后颜色取平均到同一个像素,就会很模糊。

下面两个蓝色三角形距离成像平面较远,3个trace与三角形的交点相差也远,成像模糊
图1
在这里插入图片描述

这位于近平面的三角形交点就相差无几,最终成像清晰
在这里插入图片描述

总之一句话:把film plane放在focus plane

景深模糊推荐文章1
景深模糊推荐文章2

8 景深(Depth of Field)

光圈的大小会影响模糊的范围,只有在Focal Plane上的物体可以清晰成像。
在这里插入图片描述
CoC和景深的关系

  • 景深:场景中的一段深度
  • 在focal point 附近的一段范围内的CoC并不大(比一个像素小 或者差不多大),如果从场景中来的光经过理想化的透镜后落在这一段内, 可以认为场景中的这段深度成像是清晰的,其他深度则是模糊的
    在这里插入图片描述
    计算景深
  • 其实推导过程比较简单,总之 DOF = DF – DN 算出来就行了
    在这里插入图片描述

© 版权声明
THE END
喜欢就支持一下吧
点赞792 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容