GAMES101课程学习笔记—Lec 19: Cameras, Lenses and Light Fields 相机、透镜、光场
GAMES101课程学习笔记—Lec 19: Cameras, Lenses and Light Fields 相机、透镜、光场
- 1 关于成像
- 2 相机
- 2.1 小孔成像
- 2.2 快门与传感器
- 2.3 针孔相机
- 2.3 视场 Field of View (FOV)
- 2.4 曝光 Exposure
- 2.5 ISO
- 2.6 光圈
- 2.7 快门
- 3 薄透镜近似
- 3.1 薄透镜方程
- 3.2 解释 Defocus Blur ——景深的原因
- 3.3 F数
- 3.4 在光线追踪中使用薄透镜近似
- 4 景深 Depth of Field
- 5 光场 Light Field / Lumigraph
- 5.1 全光函数 The Plenoptic Function
- 5.2 采样全光函数 Sampling Plenoptic Function
- 5.3 光场相机
1 关于成像
我们之前讲了两种成像方法,一种是光栅化成像,一种是光线追踪成像,但其实这都相当于是用合成的方法来成像。
我们不止可以用合成的方法,我们还可以用捕捉的方法来成像
Synthesis: 用合成的方法来成像
Capture: 捕捉真实世界来成像,最典型的是相机成像
有一些在研究的其他成像方法,比如 Transient Imaging: 研究光在极短时间内的传播
整个Imaging的范畴更多是在 Computational Photography: 计算摄影学 中做研究
2 相机
通过相机的截面图我们看到内部的构造,有很多透镜
2.1 小孔成像
- 最早的时候人们研究相机从小孔成像开始,利用小孔成像的相机叫做针孔相机
2.2 快门与传感器
快门控制光进入相机
传感器捕捉光并记录下来(记录 Irradiance)
如果没有透镜,相机就拍不了了
因为如果直接把感光元件放在一个人的面前,感光元件上任何一个点都可能收集到不同方向过来的光,而且作为传感器的它不会区分来自各个方向的光线,所以会糊
2.3 针孔相机
- 利用小孔成像原理制作的相机就是针孔相机
在后面的学习后,我们会了解到,针孔相机拍出的东西是没有深度可言的
也就是任何地方都是锐利清楚的,都不会是虚化的
因为透镜的存在所以会产生虚化,这个之后会提到
并且我们之前做光线追踪的时候用的就是针孔相机的模型,所以我们也得不到景深的模糊效果
所以如果我们可以模拟光线和透镜的作用,那么我们也可以作出景深的渲染效果
2.3 视场 Field of View (FOV)
视场说的是能看到多大的范围
h: 传感器高度(宽度)
f: 焦距,传感器与 透镜/小孔 的距离
不同的视场有不同的拍照结果
我们知道视场大小与 传感器大小以及焦距有关系
有两个因素的话,我们定义视场不太好定义
所以现实中人们是以35mm的胶片为基准,通过定义焦距来定义视场
所以市场上买单反镜头的时候有焦距的区别
同样大小的传感器,焦距越大,视场越窄
同样焦距,传感器越大,视场越宽
同样视场,焦距和传感器等比
传感器Sensor和胶片Film不一定一样
平时两者等价
在渲染器里面,Sensor收集irradiance,Film决定存成什么样的格式
2.4 曝光 Exposure
- 曝光记录的是总共的能量,是T×E
曝光时间T由快门控制
Irradiance(E)由光圈与焦距决定
- 控制照片亮与不亮的三要素:光圈、快门、感光度
光圈是个挡光的东西,有大小,由F数控制,光圈是一种仿生学的设计,仿照人的瞳孔放大缩小
快门速度是快门开放的时间
感光度是后期处理,接受到多少光加个倍数,在硬件上调整是调节传感器灵敏度,或者软件上调整数字信号
- 三者的关系如图,造成虚实的相片
F数越小,光圈越大
快门时间为秒数’
ISO我们理解为倍数,从信号上理解,ISO放大的时候,噪声和信号一起放大,所以可能会遇到让图片有噪点的问题
2.5 ISO
- ISO我们理解为增益,当做在最后结果上乘一下
- ISO做简单放大的同时也会放大噪声
2.6 光圈
- 用F数表示光圈,我们暂时简单理解F数为光圈直径的导数
2.7 快门
- 快门一开始关闭,后来升上去,等一会,然后关上
更长的曝光时间/更快的物体运动速度 容易造成运动模糊
类似于在时间上采样
快门开启需要时间,这个会造成高速运动物体的扭曲
- 进光量~F-Stop² / Shutter Speed
(F数理解为直径分之一,与面积是平方关系,所以为了曝光量平衡,与快门速度也是平方关系)
即使比例关系做对了
但是大光圈会有浅景深的效果,快门时间会导致运动模糊等效果,需要权衡
- 应用:
高速摄影,每秒极高帧率,快门时间受限需要用更大光圈或者高ISO
延时摄影,快门时间很长,光圈变小
3 薄透镜近似
- 目前的相机都用透镜组来控制成像
- 真实的透镜并不那么理想,有些透镜无法将光线聚于一点 出现 Aberrations
- 我们研究近似的是理想化的透镜:
所有进入透镜的平行光线都通过透镜的焦点
穿过焦点的所有光线在通过透镜后将是平行的
焦距可以任意改变(实际上用透镜组改变焦距)
3.1 薄透镜方程
- 关于这个原理,在高中物理都学过,从下面示意图可以了解
3.2 解释 Defocus Blur ——景深的原因
- 为了解释景深,我们引入Circle of Confusion (CoC)
左边有一个Focal Plane,其上的东西会成像到Sensor Plane上
如果Object不在Focal Plane上,如下图可能会聚焦在Image上,然后光线继续传播到Sensor Plane上,这时候在Sensor Plane上形成的圆就是CoC
- CoC告诉我们看到的东西模糊不模糊,取决于光圈的大小,大光圈容易有模糊的效果
3.3 F数
- 因为说CoC大小与光圈成正比,所以我们回头看光圈
之前我们说F数它是直径分之一,其实不对
F数的明确定义是焦距除以直径
以下是一些例子
3.4 在光线追踪中使用薄透镜近似
以前的光追我们的相机用的是一个小点,默认小孔成像
但是我们可以用薄透镜近似做出景深效果
- 一种在光追中进行景深效果的做法:
选择传感器尺寸、镜头焦距和光圈大小
给出物距Z0Z_0Z0
根据焦距计算像距Z1Z_1Z1
我们做渲染时:
对于 传感器上的每个像素x′x'x′ 以及 在透镜平面上随机采样的一点x′′x''x′′
把这两点连一条线,连上以后就能知道会打到物体的位置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
Light Field / Lumigraph 两个词指同一东西,属于历史遗留问题,是由两个组独立几乎同时发现的同样东西,叫法不一样
要说光场,我们就从看到的世界是什么说起
- 我们看到这个三维世界,在我们眼睛里类似就是一幅图
那如果我们直接看到一幅图,这幅图完全记录了之前看到的光线信息,我们也能得到同样的结果
这也是类似虚拟现实的原理,用一个平面的成像设备,让人误以为在三维环境中
5.1 全光函数 The Plenoptic Function
我们可以描述人看到的东西,用的就是全光函数
- 最简单的全光函数,我们假设在一个场景中,位置固定,我们可以四面八方地去看
用极坐标可以定义我们的方向
也就是得到了计算我们往某个方向会看到什么值的函数
- 我们加以改进,在函数中引入波长
我们往某个方向可以看到某个波长的光
也就是我们引入了不同的颜色
- 我们继续扩展,加入时间 t ,这也就是电影
- 进一步扩展,位置不固定,我们可以在三维空间中任意移动,这也就是全息电影
- 我们不把这个函数当做电影
我们把它理解为在任何位置,往任何方向看,在任何时间看到的颜色
这就是我们能看到的东西,我们看到的世界是一个七个维度的函数——全光函数
5.2 采样全光函数 Sampling Plenoptic Function
- 光场其实就是全光函数的小部分,在定义光场前我们先定义光线
要想定义一条光线需要的是二维的位置和二维的方向(在下面会阐述)
- 要记录一个物体向四周展示的样子,只需要记录包围盒上表面各个点往各个方向发射的光线的信息
这也就是光场记录的东西
在物体表面任何一个位置往任何一个方向去的光线的强度
怎么理解二维的位置与二维的方向呢?
物体的表面是二维的,方向也是二维的,所以用这个四个信息当变量的函数就是光场
- 我们把物体变成光场,记录下光场后也就相当于记录下了物体的观测
- 我们还可以理解成我们取一个平面,平面右边是一个物体,它的光会穿过这个平面来到左边
我们不需要知道右边有什么,我们只需要知道对于平面上任意一个点的任意一个方向会发出什么
- 我们用两个平面来定义光场,便于降维
也就是从上面的 位置+方向 变成 位置+位置
两个平面两点一连就得到一个光线
- 这也就是光场参数化的过程,用uv与st来组合
- 固定(u,v), 所有的(s,t)组成一张image,也就是从(u,v)点看到的外部世界的样子
固定(s,t), 所有的(u,v)组成一张image,也就是显示从不同方向看同一个点的样子
- 现实中也有人用这种方式记录光场
并且自然界中苍蝇的复眼就是记录光场——我们在照片中任意一个像素记录的是irradiance,不区分方向,但是对于复眼来说,它们记录的分光之后的分量,也就是记录的是radiance
5.3 光场相机
微透镜原理光场照相机,最重要的功能:支持先拍照,后期再重新聚焦
- 原理就是光场的原理
把原本的像素换成了微透镜,把光分散到不同方向上去然后再记下来
- 光场照相机的图怎么还原成普通相机呢?
我们把分散的光,每个透镜都选一条,然后把得到的结果都记录在一个像素的结果上,现在一个透镜就对应一个值了,和之前一样
选光线的步骤就相当于是重新聚焦,虚拟地移动相机的位置
我们不涉及重新聚焦具体怎么做,只介绍思想,我们从四维光场中按需查询选取光线
- 光场照相机也有问题
分辨率不足,因为原来一个位置可能只需要一个像素,但是透镜把光分开以后,可能会需要好几个像素来记录不同方向的光,同样的胶片尺寸下,光场相机的分辨率不足
高成本、难设计
再次体现trade-offs
GAMES101课程学习笔记—Lec 19: Cameras, Lenses and Light Fields 相机、透镜、光场相关推荐
- Games101笔记——Lecture 19:Cameras, Lenses and Light Fields
Lecture 19:Cameras, Lenses and Light Fields 独立的内容:相机.棱镜和光场 图形学中两种成像的方法:光栅化和光线追踪 但他们在自然界中并不存在 简单的成像方法 ...
- GAMES101课程学习笔记—Lec 14(2)~16:Ray Tracing(2) BRDF、渲染方程、全局光照、路径追踪
GAMES101课程学习笔记-Lec 14(2)~16:Ray Tracing(2) BRDF.渲染方程.全局光照.路径追踪 0 引入--辐射度量学概述 1 相关概念 1.1 Radiant Ener ...
- GAMES101课程学习笔记—Lec 02:Linear Algebra 线性代数回顾
GAMES101课程学习笔记-Lec 02:Linear Algebra 线性代数回顾 0 图形学的依赖学科 1 向量 1.1 点乘 1.2 叉乘 2 矩阵 本节课知识比较基础,大学课程里应该都学过, ...
- Lec19 Cameras, Lenses and Light Fields 相机,棱镜和光场
Lec19 Cameras, Lenses and Light Fields 相机,棱镜和光场 成像方法 合成方法(Synthesis) 光栅化 光线追踪 捕捉方法 (Capture) 比如相机 相机 ...
- Games101 计算机图形学课程笔记:Lecture 19 Cameras, Lenses and Light Fields
目录 相机 快门与传感器 针孔相机 视场 Field of View(FOV) 曝光 Exposure ISO 光圈 快门 薄透镜近似 Thin Lens Approximation 薄透镜方程 De ...
- Games101计算机图形学笔记L19 Cameras,Lenses and Light Fields
L19 Cameras,Lenses and Light Fields 合成与成像不同,一个不是实际存在一个实际存在 传感器记录的是irradiance 针孔相机 做不出景深的效果 曝光 ISO是后期 ...
- Lecture19_相机、透镜与光场(Cameras, Lenses and Light Fields)_GAMES101 课堂笔记
目录 第一部分:相机成像基本知识 一.Pinhole Image Formation(针孔的图像形成) 二.Field of View (视场,FOV) 第二部分:Exposure(曝光) 一.ISO ...
- cs224w(图机器学习)2021冬季课程学习笔记8 Colab 2
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 VX号"PolarisRisingWar"可直接搜索添加作者好友讨论. 更新日志: 20 ...
- cs224w(图机器学习)2021冬季课程学习笔记12 Knowledge Graph Embeddings
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Heterogeneous Graphs and Relational GCN (RGCN) ...
最新文章
- 高精度矢量汉字的一种填充方法_使用PS中的钢笔工具制作一只蝴蝶矢量插画
- 知识图谱在互联网金融中的应用
- android9怎样适配nfc,android – 如何使用NFC动作
- [翻译中] 使用Wayland替代X, 大幅提高图形速度
- C语言实现文件类型统计函数
- 使用PO+跨平台改造Macaca示例(APP端)
- 液晶8K电视也能打造家庭影院?一起“宅”过电影情人节吧
- SQL学习笔记(03)_BETWEEN 操作符
- SAP的增强(enhancement)
- Golang基础(1)
- 34.UCASE() LCASE() 函数
- word自动生成目录 页码不能右对齐问题
- 超级好的6款办公软件,你用过几款呢?
- python pyecharts 下载生成的render图片 下载背景为黑色
- [Java]源码角度深入理解哈希表,手撕常见面试题
- 常见的数组及对象常用方法
- 2Broke Girls·破产姐妹的简要介绍
- oc指针和c语言区别,C 指针和OC 对象之间的转换方法
- HBuilderX配置Git插件
- cesium加载cgcs2000\wgs84坐标系解决方式
热门文章
- 计算机如何连接隐藏的无线网络,电脑怎么加入隐藏用户名的WiFi?(如何连接隐藏wifi)...
- 过目不忘 JS 正则表达式
- 育碧2k微软服务器,2K工作室更名-2K Games,育碧,全境封锁2 ——快科技(驱动之家旗下媒体)--科技改变未来...
- 未来的计算机作文600字想象,科技想象作文600字
- C++之获取本机Ip地址 CString 可直接使用
- 亚马逊站内deal申请条件你都知道?
- MPLS *** 故障排查详解—Yeslab 彭Sir笔记
- 服务器游戏延迟,Albion游戏延迟高解决办法
- mysql select 导出数据 加分隔符
- unity探索者之Shader Graph所有节点详解-Master篇