相机,棱镜和光场

一、成像方法

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大小与光圈成正比,所以我们回头看光圈

之前我们说F数它是直径分之一,其实不对

F数的明确定义是焦距除以直径

一些例子:

3.在光线追踪中使用薄透镜近似

(略)

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

光场其实就是全光函数的小部分,在定义光场前我们先定义光线,定义一条光线需要的是二维的位置和二维的方向(在下面会阐述)

要记录一个物体向四周展示的样子,只需要记录包围盒上表面各个点往各个方向发射的光线的信息

这也就是光场记录的东西

在物体表面任何一个位置往任何一个方向去的光线的强度

怎么理解二维的位置与二维的方向呢?

物体的表面是二维的,方向也是二维的,所以用这个四个信息当变量的函数就是光场

我们把物体变成光场,记录下光场后也就相当于记录下了物体的观测

我们还可以理解成我们取一个平面,平面右边是一个物体,它的光会穿过这个平面来到左边

我们不需要知道右边有什么,我们只需要知道对于平面上任意一个点的任意一个方向会发出什么

相关推荐
LuH11244 小时前
【论文阅读笔记】Learning to sample
论文阅读·笔记·图形渲染·点云
m0_748234341 天前
webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式
图形渲染·webgl
每日出拳老爷子1 天前
【图形渲染】【Unity Shader】【Nvidia CG】有用的参考资料链接
unity·游戏引擎·图形渲染
木市门9 天前
【GAMES101笔记速查——Lecture 22 Animation Cont】
图像处理·笔记·图形渲染
不知不道abc11 天前
图形学笔记 - 5. 光线追踪 - RayTracing
笔记·图形渲染
红米饭配南瓜汤16 天前
Android显示系统(08)- OpenGL ES - 图片拉伸
android·音视频·图形渲染·媒体
星星也在雾里16 天前
Windows系统配置Panda 3D
python·3d·游戏引擎·图形渲染
qq_1674015117 天前
glsl shader texture atlas
图形渲染
红米饭配南瓜汤18 天前
Android显示系统(06)- OpenGL ES - VBO和EBO和VAO
android·音视频·图形渲染·媒体
红米饭配南瓜汤20 天前
Android显示系统(02)- OpenGL ES - 概述
android·音视频·图形渲染