当前位置: 首页 > news >正文

【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 演示网站

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

相关文章:

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

本章节内容:相机、棱镜、光场 计算机图形学的两种成像方法: 1.合成方法:光栅化、光线追踪(展示出现实没有的东西) 2.捕捉方法:相机(捕捉现实已有的东西) 目录 1 相机 1.1 针孔相…...

虚拟机上搭建达梦DSC简略步骤

vmware 17 centos 7.6 达梦 dm8_20240920_x86_rh7_64.iso cd /d C:\Program Files (x86)\VMware\VMware Workstation\.\vmware-vdiskmanager.exe -c -s 100MB -a lsilogic -t 2 "F:\vm\dmdsc\sharedisk\share-dcr.vmdk" .\vmware-vdiskmanager.exe -c -s 100MB -a l…...

Python和R荧光分光光度法

🌵Python片段 Python在处理荧光分光光度法数据方面非常强大,得益于其丰富的数据处理和可视化库,可以轻松实现从数据读取到分析的完整流程。荧光分光光度法用于测量物质在激发光照射下发出的荧光强度,常用于定量分析和特性研究。 …...

电子学习中的关键游戏化元素

游戏化彻底改变了电子学习领域,提供了一种使学习具有吸引力、互动性和有效性的方法。通过将类似游戏的功能集成到教育平台中,教育工作者可以增强动力,提高知识记忆,并创造动态的学习体验。游戏化的关键要素为设计与学习者产生共鸣…...

算法日记 33 day 动态规划(打家劫舍,股票买卖)

今天来看看动态规划的打家劫舍和买卖股票的问题。 上题目!!!! 题目:打家劫舍 198. 打家劫舍 - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金…...

JavaScript的let、var、const

这张图片主要介绍了JavaScript中的三种变量声明方式:let、var和const。 1. let 含义:let是现在实际开发中常用的变量声明方式。特点: 块级作用域:let声明的变量只在其所在的块级作用域内有效。例如:{let x 10; } co…...

C语言-数学基础问题

一.奇数、偶数问题 1.从键盘上输入一个整数,判断并输出它是奇数还是偶数。 //从键盘上输入一个整数,判断并输出它是奇数还是偶数。 main() {int i;printf("输入一个整数:\n");scanf("%d",&i);if(i%20)printf("它是偶数\n…...

解决单元测试时找不到类名

场景: springboot单元测试mockito对mapper进行mock时: tk.mybatis.mapper.mapperexception: 无法获取实体类 XX.xx 对应的表名 分析: 使用了一个方法:Example examplenew Example(User.class); 进入源码后发现Entityhelper没…...

从零开始-VitePress 构建个人博客上传GitHub自动构建访问

从零开始-VitePress 构建个人博客上传GitHub自动构建访问 序言 VitePress 官网:VitePress 中文版 1. 什么是 VitePress VitePress 是一个静态站点生成器 (SSG),专为构建快速、以内容为中心的站点而设计。简而言之,VitePress 获取用 Markdown…...

【案例学习】如何使用Minitab实现包装过程的自动化和改进

Masimo 是一家全球性的医疗技术公司,致力于开发和生产各种行业领先的监控技术,包括创新的测量、传感器和患者监护仪。在 Masimo Hospital Automation 平台的助力下,Masimo 的连接、自动化、远程医疗和远程监控解决方案正在改善医院内外的护理…...

【ArcGISPro】使用AI提取要素-土地分类(sentinel2)

Sentinel2数据处理 【ArcGISPro】Sentinel-2数据处理-CSDN博客 土地覆盖类型分类 处理结果...

深度解析:Nginx模块架构与工作机制的奥秘

文章目录 前言Nginx是什么?Ngnix特点: 一、Nginx模块与工作原理1.Nginx的模块1.1 Nginx模块常规的HTTP请求和响应的流程图:1.2 Nginx的模块从结构上分为如下三类:1.3 Nginx的模块从功能上分为如下三类: 2.Nginx的进程模型2.1 Nginx进程结构2.2 nginx进程…...

分布式kettle调度平台v6.4.0新功能介绍

介绍 Kettle(也称为Pentaho Data Integration)是一款开源的ETL(Extract, Transform, Load)工具,由Pentaho(现为Hitachi Vantara)开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…...

企业数字化转型现状

国家数字经济战略背景 2018年以来,国家政府不断出台政策规范我国企业数字化治理市场。2018年9月颁布《关于发展数字经济稳定并扩大就业的指导意见》,支持建设一批数字经济创新创业孵化机构。积极推进供应链创新与应用,支持构建以企业为主导。…...

极客大挑战2024wp

极客大挑战2024wp web 和misc 都没咋做出来&#xff0c;全靠pwn✌带飞 排名 密码学和re没做出几个&#xff0c;就不发了 web ez_pop 源代码 <?php Class SYC{public $starven;public function __call($name, $arguments){if(preg_match(/%|iconv|UCS|UTF|rot|quoted…...

将django+vue项目发布部署到服务器

1.部署django后端服务 部署架构 1.1 下载依赖插件 pip3.8 freeze > requirements.txt1.2 安装依赖插件 pip3 install -r requirements.txt1.3 安装mysql数据库 apt install mysql-server初始化数据库 CREATE USER admin% IDENTIFIED WITH mysql_native_password BY 123…...

函数类型注释和Union联合类型注释

函数类型注释格式&#xff08;调用时提示输入参数的类型&#xff09;: )def 函数名(形参名:类型&#xff0c;形参名:类型&#xff09;->函数返回值类型: 函数体 Union联合类型注释&#xff08;可注释多种类型混合的变量&#xff09;格式: #先导入模块 from typing import…...

python画图|无坐标轴自由划线操作fig.add_artist(lines.Line2D()函数

【1】引言 新发现了一种自由划线操作函数&#xff0c;和大家共享。 【2】官网教程 点击下述代码&#xff0c;直达官网&#xff1a; https://matplotlib.org/stable/gallery/misc/fig_x.html#sphx-glr-gallery-misc-fig-x-py 官网代码非常简洁&#xff0c;我进行了解读。 …...

MacOS系统上Jmeter 录制脚本遇到的证书坑位

一、JMeter介绍与安装 1&#xff0c;下载及安装 jmeter官网地址 二、录制百度链接https请求时&#xff0c;需要导入jmeter相关证书到macos系统的更目录中. 导入方式&#xff0c;直接拖入mac的系统中&#xff0c;始终新人就可以&#xff1b; 三、jmeter 创建相关的录制组件…...

网络层协议IP

对于网络层我们直接通过IP协议来了解其内容 一.IP协议 首先我们先来了解几个概念&#xff1a; 主机&#xff1a;配有IP地址&#xff0c;但是不进行路由控制的设备 路由器&#xff1a;配有IP地址&#xff0c;同时进行路由控制的设备 节点&#xff1a;主机和路由器的统称 所以现在…...

《硬件架构的艺术》笔记(七):处理字节顺序

介绍 本章主要介绍字节顺序的的基本规则。&#xff08;感觉偏软件了&#xff0c;不知道为啥那么会放进《硬件架构的艺术》这本书&#xff09;。 定义 字节顺序定义数据在计算机系统中的存储格式&#xff0c;描述存储器中的MSB和LSB的位置。对于数据始终以32位形式保存在存储器…...

反向代理模块

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当于…...

风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计

风尚云网前端学习&#xff1a;一个简易前端新手友好的HTML5页面布局与样式设计 简介 在前端开发的世界里&#xff0c;HTML5和CSS3是构建现代网页的基石。本文将通过一个简单的HTML5页面模板&#xff0c;展示如何使用HTML5的结构化元素和CSS3的样式特性&#xff0c;来创建一个…...

spacy 安装 en_core_web_sm

目录 spacy win11 成功 linux No matching distribution found for numpy<3.0.0,>2.0.0 解决方法&#xff1a; linux安装失败&#xff1a; linux安装成功 从GitHub上下载 spacy win11 成功 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple spacy linux N…...

SpringBoot(9)-Dubbo+Zookeeper

目录 一、了解分布式系统 二、RPC 三、Dubbo 四、SpringBootDubboZookeeper 4.1 框架搭建 4.2 实现RPC 一、了解分布式系统 分布式系统&#xff1a;由一组通过网络进行通信&#xff0c;为了完成共同的任务而协调工作的计算机节点组成的系统 二、RPC RPC&#xff1a;远程…...

嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点

目录 一、static 1、static 修饰局部变量 2、 static 修饰全局变量 3、static 修饰函数 4、static 修饰类成员 5、小结 二、const 1、const 修饰普通变量 2、const 修饰指针 3、const 修饰函数参数 4. const 修饰函数返回值 5. const 修饰类成员 6. const 与 #defi…...

信创改造 - TongRDS 替换 Redis

记得开放 6379 端口哦 1&#xff09;首先在服务器上安装好 TongRDS 2&#xff09;替换 redis 的 host&#xff0c;post&#xff0c;passwd 3&#xff09;TongRDS 兼容 jedis # 例如&#xff1a;更改原先 redis 中对应的 host&#xff0c;post&#xff0c;passwd 改成 TongRDS…...

周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程

1、打开pycharm 没有pycharm的&#xff0c;在站内搜索安装教程即可。 2、点击“文件”“新建项目” 3、创建项目&#xff0c;Python版本中选择Python39。如果没有该版本&#xff0c;选择下面的Python 3.9下载并安装。 4、打开软件包&#xff0c;搜索“deep-forest”软件包&am…...

python VS c++

一、语法特点 Python&#xff1a; 语法简洁、优雅&#xff0c;代码可读性极强&#xff0c;采用缩进来表示代码块&#xff0c;摒弃了像 C 那样使用大括号的传统方式&#xff0c;使得代码看上去十分清晰简洁。例如&#xff1a; ​ if 5 > 3:print("5大于3") elif 5 …...

提升软件测试报告的质量:Allure2中添加用例失败截图、日志、HTML块和视频的方法

Allure2的用途 Allure2是一个用于生成测试报告的框架&#xff0c;广泛应用于自动化测试和手动测试中。它支持多种测试框架&#xff0c;如JUnit、TestNG、MSTest等&#xff0c;通过生动的图表和详细的日志&#xff0c;使得非技术人员也能轻松地理解测试结果。许多团队选用Allur…...