【GAMES101笔记速查——Lecture 19 Cameras,Lenses and Light Fields】

本章节内容:相机、棱镜、光场

计算机图形学的两种成像方法:

1.合成方法:光栅化、光线追踪(展示出现实没有的东西)

 

2.捕捉方法:相机(捕捉现实已有的东西)

目录

1 相机

1.1 针孔相机(Pinhole Image Formation)

1.2 视场(FOV)

(1)FOV一般定义

(2)视场FOV越窄,我们看到的东西会越远。

(3)焦距不变的情况下,传感器越大,视场FOV越大;传感器越小,视场FOV越小。

(4)手机如何做到拥有很大的FOV?焦距变小(右图所示)

1.3 曝光(Exposure)

1.2.1 有哪些因素在影响曝光(图片的亮度):光圈、快门、ISO

1.2.2 光圈、快门、ISO的协调关系

1.2.3 光圈:F数

1.2.4 快门

(1)快门速度的影响:运动模糊

(2)快门与光圈

(3)快门时间的应用

2. 镜头(Thin Lens Approximation)

2.1 理想薄透镜

2.1.1 薄透镜公式

2.1.2 推导

2.2 焦散(Defocus Blur)

2.2.1 弥散圆的大小(Circle of Confusion (CoC) Size)

2.2.2 光圈的明确定义

2.3 理想薄透镜渲染(Ray Tracing Ideal Thin Lenses)

2.3.1 薄透镜渲染步骤

2.4 景深(Depth of Field)

2.4.1 计算过程

2.4.2 演示网站


                                                        

1 相机

相机里面发生了什么?

最简单的针孔相机小孔成像

快门:控制光在多少分之一秒内进入相机

传感器:捕捉光,记录irradiance(来自各个方向的所有光)

 

为什么相机没有针孔或者棱镜不能成像?

如果这么操作,相当于直接把传感器放到人的面前,传感器上的任何一个点都会收集来自各个方向的信息,这个点不能区分来自各个方向的能量,此时它收集的是irradiance,不是radiance,结果就是所有东西都是糊的。(但也有人在研究用传感器直接区分不同方向的信息)

1.1 针孔相机(Pinhole Image Formation)

针孔相机成像

公元前,人们就已经发现了小孔成像的原理。

如果我们能用纸做一个小孔,那么我们可以拍出效果不错的场景。

针孔相机拍出来的东西没有深度可言,也就是说它拍摄到的所有东西都是清晰的。光线追踪也是采用的这种针孔摄像机模型

(虚化现象是由于棱镜的存在,如果可以编程模拟出光线与棱镜的作用,那么就可以得到带有景深的渲染效果)。

1.2 视场(FOV)

焦距对视场的影响

有一个简单的相似三角形关系

虽然对于小孔不存在焦距的概念,但是我们定义“小孔和传感器之间的距离”为焦距f

那么此时就可以计算tan角度,并用它的大小来定义FOV

目前看起来,FOV和传感器的大小焦距都有关系。

(1)FOV一般定义

所以人们规定:在定义FOV的时候,传感器大小默认固定35mm,然后用对应的焦距来定义。

(2)视场FOV越窄,我们看到的东西会越远。

(3)焦距不变的情况下,传感器越大,视场FOV越大;传感器越小,视场FOV越小。

之前我们混淆使用了传感器和胶片的感念,实际上,传感器(sensor)和胶片(film)是不同的东西,对于渲染来说,传感器记录irradiance多大,而最后的film决定了最后存储为什么样的图片格式。

(4)手机如何做到拥有很大的FOV?焦距变小(右图所示)

1.3 曝光(Exposure)

曝光 = 曝光时间 * irradiance

辐射度量学考虑单位时间,而照相考虑的是整体时间

曝光时间:由快门控制

单位面积上的能量irradiance与什么有关:1.落到传感器上的光能  2.光圈大小

1.2.1 有哪些因素在影响曝光(图片的亮度):光圈、快门、ISO

光圈大小(瞳孔:由f-stop来控制光圈大小。光圈是仿照人的瞳孔设计的,暗处瞳孔放大,明亮处瞳孔缩小。

快门速度(眼皮:快门越快,快门开放时间越短,进入的光越少。

IOS增益(视觉细胞:IOS可以理解为一种后期处理,给sensor最后的结果乘上某个数。这个乘法可以发生在硬件上(传感器调节灵敏度),也可以后期加(已经生成了照片然后再处理)。

1.2.2 光圈、快门、ISO的协调关系

不同的光圈大小:F数越大,光圈越小

不同的快门速度:通常用分数表示,1/1000就是快门开放1ms

不同的ISO:增益倍数

改变光圈大小,光圈大时,照片变虚。

ISO越大,照片越noisy,大家普遍不愿意调大这个数:对整个信号直接乘以一个很大的数,会放大信号,但同时,也会放大噪声。

控制其他变量,通过调节ISO来使曝光一致,得到的结果如下 :

1.2.3 光圈:F数

F数:两种写法FN或者F/N,N就是f数

F数的非正式理解:就是光圈的直径分之一

1.2.4 快门

机械快门:打开是有一个过程的。

(1)快门速度的影响:运动模糊

   1.运动模糊

在快门打开的一段时间内,高速运动的物体发生了一段位移,这个过程被传感器都记录下来并平均,产生了运动模糊现象。用更长的快门时间会容易发生运动模糊。

2.运动模糊不一定是坏事

比如,为了体现赛车等一些物体的速度,运动模糊可以展现出这种动态

3.拍视频

在不同时间对物体位置进行采样,采样是会有走样现象的,有运动模糊在一定程度上起到了反走样的效果。

4.Rolling shutter:超高速物体的扭曲:图片的不同位置记录的是不同时间进来的光。

(2)快门与光圈

下面的F数和快门速度的组合,基本可以实现同样的曝光。

如何理解?

直径从4到8,面积从1/16变到1/64,相当于缩小为原来的1/4。那么为了维持曝光不变,快门速度就要变成原来的4倍,也就是从1/60变到了1/15。

大光圈会造成浅景深

快门速度影响运动模糊

一般来说,需要在景深和运动模糊之间取平衡。

(3)快门时间的应用

1.高速摄影:快门时间更短,光圈更大, ISO更大。

2.延时摄影:快门时间很长、光圈更小,ISO更小。(俗称拉丝)

2. 镜头(Thin Lens Approximation)

目前的手机一般用透镜组

实际的透镜可能很复杂,光可能聚不到一点。

2.1 理想薄透镜

我们研究比较简单理想的情况。

1.平行于棱镜的光,经过透镜后可以集中到一个点

2.光路有可逆性,如果一个光线穿过焦点,那么会被透镜折射成一束平行光

3.薄透镜可以任意改变焦距(现代相机用透镜组的好处:最终的结果就好像是可以改变透镜的焦距)

2.1.1 薄透镜公式

过棱镜中心的光不改变方向

Z0:物距

Zi:相距

物理规律:见公式,这个公式反应了焦距、物距、相距,三者之间的关系。

即:如果要改变物距,相距一定会跟着改。

2.1.2 推导

蓝色的一对相似三角形

粉色的一对相似三角形

这个公式反应了焦距、物距、相距,三者之间的关系。

演示软件:

2.2 焦散(Defocus Blur)

2.2.1 弥散圆的大小(Circle of Confusion (CoC) Size)

还是用相似三角形解

把A移动到等式右边,可以发现弥散圆的大小棱镜的大小(F数)成正比

2.2.2 光圈的明确定义

F数:焦距f/光圈直径A

F数计算举例见图

2.3 理想薄透镜渲染(Ray Tracing Ideal Thin Lenses)

一般我们都是从相机往任何一个像素中心去连,这样默认是一个小孔成像的模型,所有入镜的物体成像都是清晰的。

我们也完全可以模拟薄棱镜,并且渲染出这样的图片

2.3.1 薄透镜渲染步骤

1.确定传感器大小

2.确定透镜本身属性:焦距、光圈大小

3.确定透镜与场景目标的距离z0.

4.根据透镜公式,可以算出相距zi(传感器sensor和棱镜的距离)

5.在成像平面上选择一个点x’

6.在透镜上选择一个点x’’

7.连接这两个点,组成的光线会穿过透镜打到物体平面上,并且打到的点x’’’是确定的,可以计算的。

8.计算x’’到x’’’的radiance即可。

2.4 景深(Depth of Field)

景深:实际场景中的一段深度,它经过透镜后在成像平面附近的小区域内(CoC足够小)。

2.4.1 计算过程

2.4.2 演示网站

光圈越小,景深越大,看到的东西更多清晰(越接近小孔成像)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】传值调用与传址调用:深度解析与实现

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯什么是传值调用和传址调用?1. 传值调用(Call by Value)2. 传址调用(Call by Reference) 💯传值调…

科技赋能健康:多商户Java版商城系统引领亚健康服务数字化变革

在当今社会,随着生活节奏的加快和工作压力的增大,越来越多的人处于亚健康状态。据《The Lancet》期刊2023年的统计数据显示,全球亚健康状态的人群比例已高达82.8%,这一数字背后,隐藏着巨大的健康风险和社会成本。亚健康…

vue实现列表滑动下拉加载数据

一、实现效果 二、实现思路 使用滚动事件监听器来检测用户是否滚动到底部&#xff0c;然后加载更多数据 监听滚动事件。检测用户是否滚动到底部。加载更多数据。 三、案例代码 <div class"drawer-content"><div ref"loadMoreTrigger" class&q…

【CSP CCF记录】201809-2第14次认证 买菜

题目 样例输入 4 1 3 5 6 9 13 14 15 2 4 5 7 10 11 13 14 样例输出 3 思路 易错点&#xff1a;仅考虑所给样例&#xff0c;会误以为H和W两人的装车时间是一一对应的&#xff0c;那么提交结果的运行错误就会让你瞬间清醒。 本题关键是认识到H和W的装车时间不一定一一对应&…

学习threejs,使用设置bumpMap凹凸贴图创建褶皱,实现贴图厚度效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshPhongMaterial高…

GoF设计模式——结构型设计模式分析与应用

文章目录 UML图的结构主要表现为&#xff1a;继承&#xff08;抽象&#xff09;、关联 、组合或聚合 的三种关系。1. 继承&#xff08;抽象&#xff0c;泛化关系&#xff09;2. 关联3. 组合/聚合各种可能的配合&#xff1a;1. 关联后抽象2. 关联的集合3. 组合接口4. 递归聚合接…

Unity中动态生成贴图并保存成png图片实现

实现原理&#xff1a; 要生成长x宽y的贴图&#xff0c;就是生成x*y个像素填充到贴图中&#xff0c;如下图&#xff1a; 如果要改变局部颜色&#xff0c;就是从x1到x2(x1<x2),y1到y2(y1<y2)这个范围做处理&#xff0c; 或者要想做圆形就是计算距某个点&#xff08;x1,y1&…

互联网直播/点播EasyDSS视频推拉流平台视频点播有哪些技术特点?

在数字化时代&#xff0c;视频点播应用已经成为我们生活中不可或缺的一部分。监控技术与视频点播的结合正悄然改变着我们获取和享受媒体内容的方式。这一变革不仅体现在技术层面的进步&#xff0c;更深刻地影响了我们。 EasyDSS视频直播点播平台是一款高性能流媒体服务软件。E…

1语言基础

数据结构与算法可以说是每位程序员的必修课&#xff0c;即使是AI高速发展的今天&#xff0c;熟悉数据结构与算法都无疑是面向开发的一项加分项。先从一个问题看起&#xff1a; # 怎么让后面不带空格 print("11",11) # 11 2方案可能有更多&#xff0c;就像一个问题&am…

Redis 可观测最佳实践

Redis 介绍 Redis 是一个开源的高性能键值对&#xff08;key-value&#xff09;数据库。它通常用作数据库、缓存和消息代理。Redis 支持多种类型的数据结构&#xff0c;Redis 通常用于需要快速访问的场景&#xff0c;如会话缓存、全页缓存、排行榜、实时分析等。由于其高性能和…

【前端】JavaScript 变量声明和函数声明的提升机制:深入探讨提升优先级与其行为

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;提升&#xff08;Hoisting&#xff09;概述&#x1f4af;提升机制——函数声明 vs 变量声明&#x1f4af;代码示例&#xff1a;函数与 var 的提升提升后的代码解析分析 …

fastadmin实现站内通知功能

实现效果如下 application/admin/view/common/header.html <style>#notificationMenu {display: none;position: absolute;top: 40px;right: 0;background: #fff;border-radius: 6px;padding: 10px 0;width: 300px;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);z-inde…

Axure RP教程:创建高效用户界面和交互

Axure RP是一款广受好评的软件&#xff0c;专门用于设计精致的用户界面和交互体验。这款软件提供了众多UI控件&#xff0c;并根据它们的用途进行了分类。与此同时&#xff0c;国产的即时设计软件作为Axure的替代品&#xff0c;支持在线协作和直接在浏览器中使用&#xff0c;无需…

2024-11-25 二叉树的定义

一、基本概念 1.二叉树是n(n>0)个结点的有限集合: ① 或者为空二叉树&#xff0c;即n0。 ②或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树又分别是一棵二叉树。 特点&#xff1a; ①每个结点至多只有两棵子树。 ②左右子树不能颠倒&am…

部署实战(二)--修改jar中的文件并重新打包成jar文件

一.jar文件 JAR 文件就是 Java Archive &#xff08; Java 档案文件&#xff09;&#xff0c;它是 Java 的一种文档格式JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中&#xff0c;多出了一个META-INF/MANIFEST.MF 文件META-INF/MANIFEST.MF 文件在生成 JAR 文件的时候…

对象的大小

文章目录 一、对象大小 一、对象大小 对象是类实例化出来的&#xff0c;让我们分析一下类对象中哪些成员呢&#xff1f; 类实例化出的每个对象&#xff0c;每个都有独立的数据空间&#xff0c;所以对象中肯定包含 成员变量&#xff0c;那么成员函数是否包含呢&#xff1f; 首…

01-go入门

文章目录 Go语言学习1. 简介安装windows安装linux安装编译工具安装-goland 2. 入门2.1 Helloworld注释 2.2 变量初始化打印内存地址变量交换匿名变量作用域局部变量全局变量 2.3 常量iota 2.4 数据类型布尔整数浮点类型复数字符串定义字符串字符串拼接符定义多行字符串 map数据…

数据库的联合查询

数据库的联合查询 简介为什么要使⽤联合查询多表联合查询时MYSQL内部是如何进⾏计算的构造练习案例数据案例&#xff1a;⼀个完整的联合查询的过程 内连接语法⽰例 外连接语法 ⽰例⾃连接应⽤场景示例表连接练习 ⼦查询语法单⾏⼦查询多⾏⼦查询多列⼦查询在from⼦句中使⽤⼦查…

LeetCode-632. Smallest Range Covering Elements from K Lists [C++][Java]

目录 题目描述 解题思路 【C】 【Java】 LeetCode-632. Smallest Range Covering Elements from K Listshttps://leetcode.com/problems/smallest-range-covering-elements-from-k-lists/description/ 题目描述 You have k lists of sorted integers in non-decreasing o…

UI自动化测试中公认最佳的设计模式-POM

一、概念 什么是POM&#xff1f; POM是PageObjectModule&#xff08;页面对象模式&#xff09;的缩写&#xff0c;其目的是为了Web UI测试创建对象库。在这种模式下&#xff0c;应用涉及的每一个页面应该定义为一个单独的类。类中应该包含此页面上的页面元素对象和处理这些元…