GAMES101(19节,相机)

ops/2024/10/19 17:21:01/

相机

synthesis合成成像:比如光栅化,光线追踪,相机是capture捕捉成像,

但是在合成渲染时,有时也会模拟捕捉成像方式(包括一些技术 动态模糊 / 景深等),这时会有涉及很多专有名词,以及计算公式,因此我们要储备摄像机基础知识

针孔相机:

小孔成像,光线打击到物体,从物体反射后的光线从小孔穿过,投射到成像面呈现倒影

思考如果没有这个小孔会成像吗?不能,因为对应成像面的每一个点都接收四面八方来的光线,因此最后的颜色杂乱,如果有了小孔,相当于只接收一个方向的光线,去决定这个成像点的颜色

我们之前模拟的光线追踪相机,就相当于针孔相机,每个成像点(像素中心/采样点)都是特定方向的光线决定的

无法做出景深效果 ,因为不存在焦点,也就是没有特定的物距让成像清晰,而是距离越远越小,并不存在是否清晰,理论上应该是清晰的,但是由于小孔的光学衍射极限等影响,实际并不清晰

(薄片)透镜相机:

光线打击到透镜,投影到sensor

平行光会穿过焦点,通过透镜中心的光线会不改变,通过焦点的光会平行出去

如果光线正好穿过透镜中心,方向不会改变

zo物距,zi像距,f焦距

也就时如果zo越大,zi越小,zo越小,zi越大

Deth of field景深DOF:

根据上面的公式,当f固定,zo固定,那么zi也固定,因此如果蓝色位置面板不在zi的位置,那么图像就会模糊,原本一个点形成圆圈

COC计算圆形的大小:相似三角形,A为透镜高度,和A成正比

当透镜位置不变,物距不变,成像平面不变,透镜/光圈越大,物体越模糊

对于世界物体的位置不同,也会影响在成像平面的COC大小

景深:在COC比较小的范围时,场景中的一段距离,比如coc的大小和像素大小差不多,则图像锐利

这里就是利用本节的其他公式,首先推导出右边的关系,再根据代换,表示DF,DN的景深位置

可以看右边这个图片,近处的酒瓶和远处的酒瓶都很模糊,只有中间的酒瓶是清楚的 

专有名词:

shutter speed快门

控制开放时间(允许光线进入的时间),如果速度越快,开放时间越短,越少的光线进入相机,图像比较暗)可以增大光圈保证图片亮度

运动模糊:当快门打开的时间内,物体产生了运动,光线都会被记录下来,因此图像是模糊的

由于快门打开不可能瞬时发生,需要开盖,因此对于高速运动的物体,会产生一定的扭曲

高速摄影:每秒拍更多的相片,然后通过正常的帧数播放,因此每张照片的快门时间都很少

延迟摄影:用非常慢的速度拍摄照片,同样需要减小光圈保证较少的曝光度

sensor传感器

存储光能量,记录irradiance,通常以35mm为基准

focal length焦距,focal point焦点

焦点:平行光线穿过透镜/光圈后,最后汇聚的点为焦点,

可逆性:同样如果从一个点照射透镜,会形成平行光

焦距:平行光穿过小孔/透镜时形成的焦点到透镜光心距离,

下图为小孔成像相机:

Field of viewFOV视场:

看到多大范围,2 * 一半的角度(反正切(h/2f)),h为传感器的高度,f为焦距

反正切:若tanA=1.9/5,则 A=arctan1.9/5;若tanB=5/1.9,则B=arctan5/1.9。

当h不变时,如果f焦距变小,fov变大,且看到的距离越远,成反比

当f不变时,如果h越大,fov越大,成正比

Exposure曝光(图像亮度):
H = T * E

Exposure = time * irradiance(时间 * 收到的光能量,时间越长能量越多,曝光越高越亮)

光圈

irradiance受光圈大小(aperture孔径)影响(每个时刻接收到多少光,最大为镜头大小,通过f_number / stop(简称FN)控制,f_stop越小光圈越大)

f_number / stop :焦距 / 光圈直径 == 简称N = F / D(A)        

也就是说想要更清楚的照片,需要C越小,需要f/N值越小,也就是N(f_number值)越大

光圈直径越小,C越小,景深距离越大,大量的拍摄范围都是清晰,否则图片会模糊

光圈越大,景深越小

当f_stop值提高为原来两倍,光圈面积缩小为原来的1/4,因此需要增加shutter曝光时间补偿

f_stop值会影响景深 

ISOgain感光度

后期处理,光能量乘以某个值,可以在任何时刻处理

图像为什么有噪声?因为在一定快门时间,光线的光子数量进入的不够多,就会形成噪声

当iso值增大,同样的增加亮度和噪声,因此会看起来噪声更多

比如我们在夜晚拍照片,调节亮度后,图片是变量,但看到噪声很多

合成渲染方式

属性:成像平面大小,透镜焦距,光圈大小

20光场……


http://www.ppmy.cn/ops/122341.html

相关文章

数据结构--线性表双向链表的实现

目录 思路设计 总体思维导图 插入部分 头插法尾插法 任意位置插入 删除部分 头结点 尾节点 中间节点 只有头结点且删除的就是头结点 ​编辑 清空链表部分 遍历清空链表的所有节点 不遍历清空 各部分代码 Main部分 MyListedList部分 IndexOutOfException部分 …

基于无人机图像的洪水灾害受损评估分割数据集,共4494张高清无人机图像,10个类别,共22GB数据量,主要关注道路,建筑的受损情况。洪水应急救援

洪水应急救援,基于无人机图像的洪水灾害受损评估分割数据集,共4494张高清无人机图像,10个类别,共22GB数据量,主要关注道路,建筑的受损情况。 洪水应急救援,基于无人机图像的洪水灾害受损评估分…

C++——stack和queue

1.简介 栈和队列的定义和之前的容器有所差别 2.简单地使用 void test_stack1() {stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);while (!st.empty()){cout << st.top() << " ";st.pop();}cout << endl;}void test_queue1() …

Python3 爬虫 中间人爬虫

中间人&#xff08;Man-in-the-Middle&#xff0c;MITM&#xff09;攻击是指攻击者与通信的两端分别创建独立的联系&#xff0c;并交换其所收到的数据&#xff0c;使通信的两端认为其正在通过一个私密的连接与对方直接对话&#xff0c;但事实上整个会话都被攻击者完全控制。在中…

模型压缩的方法?

模型压缩的方法 方法 模型压缩是一个重要的讨论话题&#xff0c;因为它直接关系到模型在实际应用中的效率和部署能力。模型压缩的主要目的是在保持模型性能的同时&#xff0c;减少模型的参数量和计算量&#xff0c;从而加快推理速度、降低存储需求&#xff0c;使得模型能够在资…

react生命周期

react 的生命周期 react15 的生命周期 constructor(); // 组件构建 componentWillReceiveProps(); // 要接受父组件参数 shouldComponetUpdate(); // 组件是否更新 componentWillMount(); // 组件将要渲染 componentWillUpdate(); // 组件将要更新 componentDidUpdate(); // …

基于CNN+Transformer混合模型实现交通流量时序预测(PyTorch版)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…

大数据毕设方向怎么做

文章目录 &#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f; 1.2 开题选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f; &#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 基于协同过…