GAMES101(19节,相机)
相机
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光场……
相关文章:
GAMES101(19节,相机)
相机 synthesis合成成像:比如光栅化,光线追踪,相机是capture捕捉成像, 但是在合成渲染时,有时也会模拟捕捉成像方式(包括一些技术 动态模糊 / 景深等),这时会有涉及很多专有名词&a…...
Django Nginx+uwsgi 安装配置
Django Nginx+uwsgi 安装配置 本文将详细介绍如何在Linux环境下安装和配置Django应用程序,使用Nginx作为Web服务器和uwsgi作为应用程序服务器。我们将覆盖以下主题: 安装Python和相关库安装和配置Django安装Nginx安装和配置uwsgi配置Nginx以使用uwsgi测试和调试1. 安装Pytho…...
oracle数据备份和导入
一、数据导出 创建目录对象: CREATE DIRECTORY dpump_dir AS /path/to/your/directory;授予权限: GRANT READ, WRITE ON DIRECTORY dpump_dir TO test_user; #导出的用户导出全库数据 expdp your_user/your_password DIRECTORYdpump_dir DUMPFILEfu…...
C++ | Leetcode C++题解之第452题用最少数量的箭引爆气球
题目: 题解: class Solution { public:int findMinArrowShots(vector<vector<int>>& points) {if (points.empty()) {return 0;}sort(points.begin(), points.end(), [](const vector<int>& u, const vector<int>&…...
react-问卷星项目(3)
项目实战 React Hooks 缓存,性能优化,提升时间效率,但是不要为了技术而优化,应该是为了业务而进行优化 内置Hooks保证基础功能,灵活配合实现业务功能,抽离公共部分,自定义Hooks或者第三方&am…...
69 BERT预训练_by《李沐:动手学深度学习v2》pytorch版
系列文章目录 文章目录 系列文章目录NLP里的迁移学习Bert的动机Bert架构对输入的修改五、预训练任务1、2、3、 六、1、2、3、 七、1、2、3、 八、1、2、3、 NLP里的迁移学习 之前是使用预训练好的模型来抽取词、句子的特征,例如 word2vec 或语言模型这种非深度学习…...
Java报错输出的信息究竟是什么?
Java报错输出的信息究竟是什么? 本篇会带大家了解一下java运行时报错输出的信息内容,简单学习一下虚拟机内存中Java虚拟机栈的工作方式以及栈帧中所存储的信息内容 异常信息 当你的程序运行报错时,你是否会好奇打印出来的那一大坨红色的究竟…...
解表之紫苏
** 声明:本文介绍的中药仅供学习使用,请勿擅自使用,否则后果自负!!!因水平有限,如有不当之处,请批评指正!!!!图片来源网络࿰…...
JavaScript数据类型
目录 JavaScripit数据类型 原始类型(Primitive Types) 1 Undefined 特点 实例 2 Null 实例 3 Boolean 重点: 常用falsy情况: 思考 4 Number,BigInt 实例 特点 NaN 5 String 在JavaScript中表示字符串有三种表示方…...
市场中的新兴力量与未来发展
在当前瞬息万变的全球金融市场中,期货交易以其高杠杆与灵活性,吸引了越来越多的投资者参与其中。大粤期货作为中国期货行业的新兴力量,凭借其创新的交易平台、广泛的产品线及专业的风险管理服务,迅速在市场中崭露头角。本文将介绍…...
Golang | Leetcode Golang题解之第446题等差数列划分II-子序列
题目: 题解: func numberOfArithmeticSlices(nums []int) (ans int) {f : make([]map[int]int, len(nums))for i, x : range nums {f[i] map[int]int{}for j, y : range nums[:i] {d : x - ycnt : f[j][d]ans cntf[i][d] cnt 1}}return }...
Java 常用序列化对比
Java 中常用的序列化方式主要包括以下几种: 1. Java 原生序列化 使用方式: 使用 java.io.Serializable 接口。对象需要实现该接口,然后通过 ObjectOutputStream 和 ObjectInputStream 进行序列化和反序列化。 示例代码: import java.io.*;public class Person impleme…...
【redis学习篇1】redis基本常用命令
目录 redis存储数据的模式 常用基本命令 一、set 二、keys pattern keys 字符串当中携带问号 keys 字符串当中携带*号 keys 【^字母】 keys * 三、exists 四、del 五、expire 5.1 ttl命令 5.2key删除策略 5.2.1惰性删除 5.2.2定期删除 六、type key的数据类型…...
量子计算:颠覆未来计算的革命性技术
量子计算:颠覆未来计算的革命性技术 量子计算作为下一代颠覆性技术,正在引领计算领域的重大变革。与传统计算机基于比特的二进制运算不同,量子计算通过量子比特(qubits)在叠加态和纠缠态下实现并行计算,能…...
ctfshow-web入门(信息收集,持续更新中。。)
写在之前:近期打了个比赛,备受打击,入手了vip账号进修,加油! 文章目录 ctfshow-web1查看源代码ctfshow-web2burp抓包ctfshow-web3burp抓包ctfshow-web4访问robots.txtctfshow-web5dirscarch扫描PHPS文件泄露ctfshow-web6dirscarch扫描ctfshow-web7dirscarch扫描ctfshow-w…...
蓝桥杯【物联网】零基础到国奖之路:十五. 扩展模块之双路ADC
蓝桥杯【物联网】零基础到国奖之路:十五. 扩展模块之双路ADC 第一节 硬件解读第二节 CubeMX配置第三节 代码编写 第一节 硬件解读 STM32的ADC是12位,通过硬件过采样扩展到16位,模数转换器嵌入到STM32L071xx器件中。有16个外部通道和2个内部通道…...
李飞飞谈AI+3D发展:3D/4D AI将成为下一个重要前沿
人工智能(AI)的发展已经深刻改变了我们的世界,从简单的图像识别到复杂的自然语言处理,再到如今正在兴起的生成式模型。在这个过程中,李飞飞教授认为,3D/4D AI技术将是推动下一波变革的关键力量。以下根据她的观点整理了AI发展历程中的关键里程碑以及对3D/4D AI未来发展的…...
centos72009源码编译R语言
./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Pconnect -Psparkr -Phive -Phive-thriftserver -Pmesos -Pyarn -Dhadoop.version3.4.0 -Pkubernetes spark3.5.3 源码版本 ./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Pconnect -P…...
初识算法 · 双指针(4)
目录 前言: 复写零 题目解析 算法原理 算法编写 四数之和 题目解析 算法原理 算法编写 前言: 本文是双指针算法的最后一文,以复写零和四数之和作为结束,介绍方式同样是题目解析,算法原理,算法编写…...
java版鸿鹄电子招投标系统功能架构设计 核心功能设计 鸿鹄电子招投标采购系统源码
java版鸿鹄电子招投标系统功能架构设计 核心功能设计 鸿鹄电子招投标采购系统源码...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

