【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.rhkb.cn/news/478847.html

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

相关文章

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

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

软件团队的共担责任

问责制被认为是个人与其社会系统之间的纽带,它创造了一种将个人与其行为和绩效联系起来的身份关系。在入门系列的第一篇文章《超越工具和流程:成功软件开发团队的策略》中,我们介绍了问责制的概念,并提出了以下定义: …

【Python爬虫实战】深入解析 Scrapy:从阻塞与非阻塞到高效爬取的实战指南

🌈个人主页:易辰君-CSDN博客 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、阻塞和非阻塞 (一)阻塞 (二)非阻塞 二、Scrapy的工作…

【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好

博客主页:小馒头学python 本文专栏: Python数据分析五十个小案例 专栏简介:分享五十个Python数据分析小案例 在现代电影行业中,数据分析已经成为提升用户体验和电影推荐的关键工具。通过分析电影评分数据,我们可以揭示出用户的…

第八篇:CamX RawHdr Feature Enable

CamX RawHdr Feature Enable RawHdr feature介绍: 试用于拍照场景,输入3张Raw,输出一张Raw。 对应的pipeline: camxSWMFMergeRaw.xml (usecases: UsecaseZSL) featureGraph: RTRawHDRBayer2YUVJPEG ​ RT -> RawHdr -> Bayer2Yuv -> JPEG RTRawHDRBayer2YUVJPE…

Python毕业设计选题:基于django+vue的期货交易模拟系统的设计与实现

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统首页 期货信息 个人中心 管理员登录界面 管理员功能界面 用户管理 期货公司管理…

文件内容扫描工具

简介 文件扫描助手是一款基于Vite Vue 3 Electron技术栈开发的跨平台桌面应用程序。它提供了强大的文件内容搜索功能,支持Word、Excel、PDF、PPT等常见办公文档格式。用户可以通过关键词快速定位到包含特定内容的文件,极大地提高了文件管理和查找效率…

数据结构--AVL树(平衡二叉树)

✅博客主页:爆打维c-CSDN博客​​​​​​ 🐾 🔹分享c、c知识及代码 🐾 🔹Gitee代码仓库 五彩斑斓黑1 (colorful-black-1) - Gitee.com 一、AVL树是什么?(含义、性质) 1.AVL树的概念 AVL树是最…

【算法】连通块问题(C/C++)

目录 连通块问题 解决思路 步骤: 初始化: DFS函数: 复杂度分析 代码实现(C) 题目链接:2060. 奶牛选美 - AcWing题库 解题思路: AC代码: 题目链接:687. 扫雷 -…

24.11.26 Mybatis2

resultMap 中的标签和属性 如果是主键列 一般用id标签对应 propertyjava对象的属性 column 数据库中的列( javaType实体类数据类型 jdbcType数据库列的数据类型 ) 不需要配置 <id property"empno" column"empno" />如果是普通列 一般用result对…

Redis设计与实现第14章 -- 服务器 总结(命令执行器 serverCron函数 初始化)

14.1 命令请求的执行过程 一个命令请求从发送到获得回复的过程中&#xff0c;客户端和服务器都需要完成一系列操作。 14.1.1 发送命令请求 当用户在客户端中输入一个命令请求的时候&#xff0c;客户端会把这个命令请求转换为协议格式&#xff0c;然后通过连接到服务器的套接字…

ArcGIS pro中的回归分析浅析(加更)关于广义线性回归工具的补充内容

在回归分析浅析中篇的文章中&#xff0c; 有人问了一个问题&#xff1a; 案例里的calls数据貌似离散&#xff0c;更符合泊松模型&#xff0c;为啥不采用泊松而采用高斯呢&#xff1f; 确实&#xff0c;在中篇中写道&#xff1a; 在这个例子中我们为了更好地解释变量&#x…

【面试题】2025年百度校招Java后端面试题

文章目录 前言一、网络IO1、服务器处理并发请求有哪几种方式&#xff1f;2、说一下select&#xff0c;poll&#xff0c;epoll的区别&#xff1f;3、Java 有一种现代的处理方式&#xff0c;属于异步I/O&#xff0c;是什么&#xff1f;redis&#xff0c;nginx&#xff0c;netty 是…

【Zookeeper 和 Kafka】为什么 Zookeeper 不用域名?

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

RiceChem——用于评估大语言模型在教育领域自动长答卷评分 (ALAG) 的数据集

摘要 论文地址:https://arxiv.org/abs/2404.14316 源码地址&#xff1a;https://github.com/luffycodes/automated-long-answer-grading 迄今为止&#xff0c;教育领域的自然语言处理&#xff08;NLP&#xff09;主要集中在简答题评分和自由文本作文评分方面。然而&#xff0c…

Java ArrayList 与顺序表:在编程海洋中把握数据结构的关键之锚

我的个人主页 我的专栏&#xff1a;Java-数据结构&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 前言&#xff1a;在 Java编程的广袤世界里&#xff0c;数据结构犹如精巧的建筑蓝图&#xff0c;决定着程序在数据处理与存储时的效率、灵活性以…

【04】Selenium+Python 手动添加Cookie免登录(实例)

一、什么是Cookie&#xff1f; Cookie 是一种由服务器创建并保存在用户浏览器中的小型数据文件。它用于存储用户的相关信息&#xff0c;以便在后续访问同一网站时可以快速检索这些信息。Cookie 主要用于以下几个方面&#xff1a; 1.状态管理&#xff1a; Cookie 可以保存用户…

GitLab|应用部署

创建docker-compose.yaml文件 输入docker-compose配置 version: 3.8 services:gitlab:image: gitlab/gitlab-ce:15.11.2-ce.0restart: alwayscontainer_name: gitlab-ceprivileged: truehostname: 192.168.44.235environment:TZ: Asia/ShanghaiGITLAB_OMNIBUS_CONFIG: |exter…

【PX4_Autopolite飞控源码】中飞控板初始化过程中的引脚IO控制(拉低/拉高)

先选择自己飞控板支持的硬件平台 打开对应的路径我的是Desktop/px4/PX4-Autopilot/boards/zhty/nora 找到board_config.h文件&#xff0c;打开nora后再往下去找Desktop/px4/PX4-Autopilot/boards/zhty/nora/src/borad_config.h 打开后可以看到有很多GPIO引脚的定义&#xff0c…

如何使用Postman优雅地进行接口自动加密与解密

引言 在上一篇文章中&#xff0c;分享了 Requests 自动加解密的方法&#xff0c;本篇文章分享一下更加方便的调试某个服务端接口。 Postman Postman 这个工具后端小伙伴应该相当熟悉了&#xff0c;一般情况下我们会在开发和逆向过程中使用它来快速向接口发送请求&#xff0c;…