Games101-相机与透镜

embedded/2024/9/25 5:47:13/

在这里插入图片描述
成像:光栅化成像(上图)和光线追踪成像(下图)
都是用合成的方法来成像。还可以用捕捉的方法来成像
在这里插入图片描述
利用小孔成像原理制作的相机就是针孔相机
在这里插入图片描述
如果一个相机没有针孔/透镜,是无法拍照的。
因为任何一个点都有可能收集到来自不同方向上的光。这个点本身作为传感器是不区分来自各个方向上的radiance。则各个方向上能量都被收集到一起,该点收集到的是irradiance,而不是radiance。最终所有东西都是糊的。
传感器现在记录不了radiance,只能记录irradiance

Pinhole Image Formation

在这里插入图片描述
针孔相机拍出的东西是没有深度可言的。也就是任何地方都是锐利清楚的,都不会是虚化的。
做光线追踪时用的就是针孔摄像机的模型。所以也得不到景深的模糊效果。如果可以模拟光线和透镜的作用,那么也可以作出景深的渲染效果

Field of View (FOV)/视场

在这里插入图片描述
视场:能看到多大的范围
定义:我们认为传感器会感受到所有的光线
传感器高度定义为h
传感器和小孔间的距离(焦距)为f
在这里插入图片描述
通常认为是以35mm的胶片为基准,即传感器高度固定。通过控制焦距的大小,来控制视场大小

手机上所谓的28mm焦距只是等效35mm的传感器。实际上手机的传感器更小,因此焦距也更小
在这里插入图片描述
不同fov效果
在这里插入图片描述
减少传感器大小,fov减小。
平常认为传感器和胶片是一回事。但对于渲染来说,传感器负责记录每个像素收到的irradiance多大,
最后的film决定存成什么样的格式。两个概念可以不一样,只是目前混淆着使用
在这里插入图片描述
对于手机来说,焦距较小,使用较小的传感器达到相同的fov

Exposure/曝光

在这里插入图片描述
Exposure是irradiance乘time
记录的不是单位时间的而是总共的能量。
时间体现在相机里就是快门可以控制多长时间光可以进来
irradiance决定的其中一点是光圈的大小,光圈会影响到镜头接收到多少光
在这里插入图片描述
相机影响最后照片的因素:光圈大小(f-stop),快门开放时间,感光度(ISO是一个后期处理,当感光元件已经感知到某一层级的光,例如0.1,如果觉得暗,则把0.1乘以一定值。可以发生在硬件上,如传感都本身调节灵敏度,也可以在照片的数字信号上去调节)
在这里插入图片描述
不同因素的参数对应的效果
任何一个信号会有一个噪声,放大信号的同时,同样会放大噪声
在这里插入图片描述
iso是线性的
在这里插入图片描述
iso能够提示曝光度,但会造成噪声放大
在这里插入图片描述
f数非正式理解为光圈直径的逆,即1/直径
在这里插入图片描述
快门曝光时间可以起到调节曝光度的作用。
高速运动的物体容易出现运动模糊,即快门打开的这段时间内,物体发生了移动。传感器起到的是平均的作用,因此模糊
在这里插入图片描述
更短的快门时间,运动模糊会减低,但曝光度也减低
而且运动模糊不一定是坏事,如果没有运动模糊会觉得速度很慢。运动模糊在时间上采样是一种反走样的效果
在这里插入图片描述
机械快门打开存在一定时间,如果物体运动速度快于快门打开时间,会出现Rolling shutter的问题,对高斯运动的物体,如螺旋架造成扭曲。
因为图像上不同的位置有可能记录的是不同的时间进来的光
在这里插入图片描述
f-stop是1/直径,考虑多少曝光是面积

Fast and Slow Photography

快门的应用
在这里插入图片描述
在这里插入图片描述
高速摄影:每秒拍更多的帧数,然后按正常的帧数来放。意味着每张照片的快门时间非常少,及更大的光圈
在这里插入图片描述
在这里插入图片描述
延时摄影:超低速。非常长的曝光时间,及非常小的光圈。这些拉丝的效果其实就是运动模糊

Thin Lens Approximation

在这里插入图片描述
真正的镜头非常的复杂,不会用单个透镜做成像,而是用透镜组
在这里插入图片描述
aberrations:一面凸一面直的透镜不可能把光聚集到一点。(平行光进入到透镜本来是会被聚集到一点)
在这里插入图片描述
我们研究的是理想化的透镜,不考虑厚度。对于平行于透镜的光会被聚集到一个点,即焦点。焦点到透镜中间的距离为焦距
光路有可逆性,所以如果光路穿过焦点,射到透镜会被折射成一束平行光
认为薄的透镜可以任意改变焦距
在这里插入图片描述
任何一个光只要过透镜中心就不会改变方向
物距: z o z_o zo
相距: z i z_i zi
对于固定焦距的透镜来说,如果要改变物距,则相距也要改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图中的是两组相似三角形
在这里插入图片描述
薄透镜公式:反映了焦距,物距,相距的关系

Defocus Blur

在这里插入图片描述
远处一个平面focal plane,平面上的光经过透镜后会被聚焦到成像平面上,如果物体不在focal plane,会模糊。如上图,object聚焦在成像平面前方image,在继续传播。一个点被感光平面接收到之后,不再是一个点,而是一个圆。这个圆就是Circle of Confusion
看某个距离物体的模糊程度,和光圈的大小成正比
在这里插入图片描述
大光圈更模糊
在这里插入图片描述
直径分之1的定义其实是不对的,应该是焦距N除以光圈的直径D
在这里插入图片描述
把f数光圈实际大小和焦距联系在一块
在这里插入图片描述
A就是光圈的直径,C和N有反比关系
为了更清楚的照片,需要小光圈

Ray Tracing Ideal Thin Lenses

在这里插入图片描述
模拟薄透镜做光线追踪
在这里插入图片描述
确定成像平面sensor有一定大小,定义透镜属性焦距和光圈大小,定义透镜离场景中某个平面有多远 z o z_o zo,认为这个平面是要进行着重拍摄的。以此可以推出相距是 Z i Z_i Zi
在这里插入图片描述
第一步,在成像平面上选一点 x ‘ x^` x
第二步,在透镜上随机选一点 x ‘ ‘ x^{``} x‘‘
第三步,连线两点,可以求得打到的位置 x ‘ ‘ ‘ x^{```} x‘‘‘
第四步,计算 x ‘ ‘ x^{``} x‘‘ x ‘ ‘ ‘ x^{```} x‘‘‘的radiance
即简单利用透镜公式算一下折射的光线方向

Depth of Field

在这里插入图片描述
大光圈与小光圈会影响模糊的范围
在这里插入图片描述
景深就是指在实际场景中有一段深度,这段深度经过透镜后会在成像平面的附近形成一段区域,这段区域内,认为COC足够小。
算景深就是算在COC很小的范围内,对应看到的清晰场景距离
只要当COC的大小比像素小或差不多,都认为得到的结果是锐利的
在这里插入图片描述
景深的范围 D F D_F DF D N D_N DN
光圈越小,景深范围越大,更接近小孔,更锐利


http://www.ppmy.cn/embedded/22981.html

相关文章

基于Flask的岗位就业可视化系统(一)

前言 本项目综合了基本数据分析的流程,包括数据采集(爬虫)、数据清洗、数据存储、数据前后端可视化等 推荐阅读顺序为:数据采集——>数据清洗——>数据库存储——>基于Flask的前后端交互,有问题的话可以留言…

Gin+WebSocket实战——在线聊天室WebSocketDemo详细使用教程

文章目录 仓库地址项目简介如何使用 仓库地址 Github:https://github.com/palp1tate/WebsocketDemo 欢迎star!😎 项目简介 利用 GinWebSocket 实现的在线聊天室Demo项目,支持加入/离开聊天室广播、给其他用户发送消息等。 如何…

u盘量产工具拥有分区功能,它把一个U盘分成数个移动盘,更改U盘介质类型(Fixed 和 Removabe),供大家学习研究参考~

非常受欢迎的u盘量产工具。最新版拥有分区功能,它把一个U盘分成数个移动盘,更改U盘介质类型(Fixed 和 Removabel)。数码之家量产工具官方版不是数据恢复,是对U盘底层硬件信息的恢复(非硬件损坏),使因为底层硬件信息受损电脑无法识…

Docker本地部署overleaf后,挖掘用户加密逻辑

overleaf的用户信息,保存在mongo数据库的users集合中。 用户密码则存在hashedPassword字段中 从开源的代码services\web\app\src\Features\Authentication\AuthenticationManager.js第303行可以找到密码加密逻辑。 本地可以通过下面的代码生成overleaf用户密码信息…

Elasticsearch实现hotel索引库自动补全、拼音搜索功能

Elasticsearch实现hotel索引库自动补全、拼音搜索功能 在这里边我们有两个字段需要用拼音分词器,一个name字段,一个all字段。 然后我们还需要去实现自动补全,而自动补全对应的字段必须使用completion类型。目前我们酒店里面所有的字段都采用的…

实时采集麦克风并播放(springboot+webscoekt+webrtc)

项目技术 springbootwebscoektwebrtc 项目介绍 项目通过前端webrtc采集麦克风声音,通过websocket发送后台,然后处理成g711-alaw字节数据发生给广播UDP并播放。 后台处理项目使用线程池(5个线程)接受webrtc数据并处理g711-alaw字节数组放到Map容器中&…

Java SE入门及基础(50) Java实现LinkedList(单向链表、双向链表) Java实现栈

目录 List 接口 1. 特性描述 List 接口常用方法 2. ArrayList 示例及源码解读 3. LinkedList 示例及源码解读 单向链表 双向链表 4. 栈 练习 Java SE文章参考:Java SE入门及基础知识合集-CSDN博客 List 接口 1. 特性描述 A List is an ordered Collection (sometimes called…

windows下的iOS砸壳与ipa分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍如何在windows下进行iOS砸壳和对ipa进行分析。” iOS系统为了保护应用的安全,会对应用进行加密。这种加密方式被称为“壳”。壳的存在会阻碍开发者对应用进行反编译、分析和修改。 在某些情况下,需要…