【GAMES101】Lecture 19 相机
目录
相机
视场 Field of View (FOV)
曝光(Exposure)
感光度(ISO)
光圈
快门
相机
成像可以通过我们之前学过的光栅化成像和光线追踪成像来渲染合成,也可以用相机拍摄成像

今天就来学习一下相机是如何成像的,就是研究相机的构造结构

成像有这个小孔成像和透镜成像,小孔成像即针孔相机,无法做景深虚化,我们之前的光线追踪用的就是针孔相机的模型

镜头往里是快门(shutter),快门用于控制光进入传感器的时间,也就是控制曝光时间

然后里面就是这个传感器(sensor),记录在曝光时间内进入的光

如果传感器没有透镜的话,那么传感器上每个像素点记录的光都来着物体所有点的光,那记录的值都是差不多一样的了

视场 Field of View (FOV)
这个视场FOV指的是一个角度,可以用来衡量相机拍摄到场景的范围,这个传感器的尺寸为h,那么传感器到透镜或者说针孔的小孔的距离为焦距f,那么根据相似三角形原理这个FOV的正切值tan就等于f/2h

固定传感器的大小为35mm,那么就可以通过焦距来衡量FOV,焦距越小这个视场就越大,像这个焦距17mm就是一个广角

像这个手机,它的本身机身厚度限制了相机它的焦距的大小,那可以通过装尺寸更小的传感器来保持相同的FOV

曝光(Exposure)
这个曝光H=T×E,这个T就是曝光的时间,E是单位面积上通过的光通量irradiance,这个曝光时间是由快门控制的,这个irradiance通过光圈大小和焦距控制

感光度(ISO)
这个感光度是一个像素值的放大率,这个可以在传感器上改变光感灵敏度或者后期成像直接将数值乘以某个系数实现,但这个增大感光度它是全部放大,也就是说噪声也会更加明显

光圈
这个光圈就是用来控制进入传感器的光的多少的,用一个F数来衡量

这个F数,或者叫F-Stop,不这么准确的描述是指这个光圈直径的倒数

快门
快门控制光进入传感器的时间,快门是一个机械装置,就是一个上下弹射的门,它开门的时间就是快门速度

对于一个运动的物体,如果快门速度很慢,像这个1/2,就是0.5秒,它会有这么一种模糊的感觉,为什么呢?这是因为这个物体本身在移动的话,那快门保持打开的时间内进入了物体移动的光,再经过传感器平均就会产生模糊的感觉

但是这个模糊有时候是需要的,因为从人的视觉来看,模糊给人一种动态的感觉

但是这个快门毕竟是机械装置,再快它始终有一个时间的限制,当物体移动的速度很快,物体上不同位置出来的光到达传感器的时间不同时就会出现扭曲的现象

这样就可以通过调整这个光圈和快门速度来到达基本相同的曝光度,但是相同的曝光度得到的照片不一定一样,因为这个光圈大 的时候可以得到景深的效果,而快门速度慢的时候可以得到运动模糊

那这样通过极快的开门速度加上大光圈或者高ISO就可以实现高速摄影,这样就可以在很短的时间内拍摄很多帧

同样用小光圈加上很长的曝光时间就可以实现延时摄影,称为拉丝

相关文章:
【GAMES101】Lecture 19 相机
目录 相机 视场 Field of View (FOV) 曝光(Exposure) 感光度(ISO) 光圈 快门 相机 成像可以通过我们之前学过的光栅化成像和光线追踪成像来渲染合成,也可以用相机拍摄成像 今天就来学习一下相机是如何成像的…...
《走进科学》灵异事件:Nginx配置改了之后一直报错
想要安装WoWSimpleRegistration,就定下来要用nginxphp8 ,结果nginx那里加上php的支持之后一直报错: $ sudo service nginx restart Job for nginx.service failed because the control process exited with error code. See "systemctl…...
Select 选择器 el-option 回显错误 value
离谱 回显的内容不是 label 而是 value 的值 返回官方看说明: v-model的值为当前被选中的el-option的 value 属性值 value / v-model 绑定值有3种类型 boolean / string / number 根据自身代码猜测是:tableData.bookId 与 item.id 类型不一致导致 &…...
【51单片机Keil+Proteus8.9】门锁控制电路
门锁控制电路 二、设计思路 电路设计 1.电源部分:使用BATTERY为整个电路提供电源,可以在电路中加入一个电 源开关,以便控制电源的开启和关闭。 2.处理器部分:使用AT89C51芯片作为主处理器,通过编写程序实现门锁的 …...
比较Kamailio和OpenSIPS的重写contact函数
Kamailio:调用set_contact_alias()之后,在原有的contact的后面增加参数,具体地说,就是网络地址,网络端口和transport,好处是收到后续请求之时可以恢复原有contact的内容(当然也有坏处࿰…...
【ETOJ P1046】斐波那契数列 题解(数学+动态规划)
题目描述 给定一个整数 T T T,表示样例数。 对于每个样例,给定一个整数 n n n,求斐波那契数列的第 n n n 项。 斐波那契数列定义为 f ( 1 ) f ( 2 ) 1 f(1) f(2) 1 f(1)f(2)1, f ( n ) f ( n − 1 ) f ( n − 2 ) f(…...
编码技巧——基于RedisTemplate的RedisClient实现、操作Lua脚本
1. 背景 在新公司的脚手架中开发,需要用到redis,发现没有封装好一套能集成各种常用命令、包括Lua脚本的方便使用的RedisTemplateClient,于是自己来实现下; springboot整合redis之后,提供了操作redis的简便方式&#…...
Asp .Net Core 系列:Asp .Net Core 集成 Panda.DynamicWebApi
文章目录 简介Asp .Net Core 集成 Panda.DynamicWebApi配置原理什么是POCO Controller?POCO控制器原理ControllerFeatureProvider实现自定义判断规则IApplicationModelConventionPanda.DynamicWebApi中的实现ConfigureApiExplorer()ConfigureSelector()ConfigurePar…...
【PTA浙大版《C语言程序设计(第4版)》|编程题】习题7-3 判断上三角矩阵(附测试点)
目录 输入格式: 输出格式: 输入样例: 输出样例: 代码呈现 测试点 上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否…...
JVM 性能调优 - 参数调优(3)
查看 JVM 内存的占用情况 编写代码 package com.test;public class PrintMemoryDemo {public static void main(String[] args) {// 堆内存总量long totalMemory Runtime.getRuntime().totalMemory();// jvm 试图使用的最大堆内存long maxMemory Runtime.getRuntime().maxM…...
Django(十)
1. Ajax请求 浏览器向网站发送请求时:URL 和 表单的形式提交。 GETPOST 特点:页面刷新。 除此之外,也可以基于Ajax向后台发送请求(偷偷的发送请求)。 依赖jQuery编写ajax代码 $.ajax({url:"发送的地址"…...
OpenHarmony开源鸿蒙开发之旅
文章目录 一、op系统架构二、op系统构建1. op源代码目录2. op系统构建3. op开发环境搭建 三、op系统的子系统四、op系统芯片移植五、op系统启动流程六、op系统组件七、驱动框架 一、op系统架构 二、op系统构建 1. op源代码目录 2. op系统构建 3. op开发环境搭建 三、op系统…...
SpringBoot之整合PageHelper分页插件
SpringBoot之整合PageHelper分页插件 文章目录 SpringBoot之整合PageHelper分页插件1. 引入坐标2. application.yml配置3. 基本使用4. 对多个查询执行分页1. 默认第一个Select语句会执行分页2. 让Pagehelper也能执行多个分页的方法3. 完整案例 详细配置请查看官网或MyBatis分页…...
Android java基础_类的封装
一.面向对象编程的引入 写一个简单的程序输出张三,李四的名字 class Person {String name;String getName() {return "guangdong "name;} };public class Oop {public static void main(String args[]) {Person p1 new Person();p1.name "zhangs…...
Vue-57、Vue技术路由的参数如何传递
query参数传递 1、传递参数 <!-- 跳转路由并携带query参数,to的字符串写法--> <router-link :to"/home/message/detail?id${p.id}&title${p.title}"> {{p.title}} </router-link><!-- 跳转路由…...
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
文章目录 1.1 MySQL 概览:版本、特性和生态系统1.1.1 基础知识1.1.2 重点案例:使用 Python 实现 MySQL 数据的 CRUD 操作1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据 1.2 安…...
Linux 软件管理(YUM RPM)
1 YUM yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次…...
【Makefile语法 05】动静态库编译链接
目录 一、多文件项目源代码 二、静态库编译链接 三、动态库编译链接 一、多文件项目源代码 // include/add.hpp#pragma once int add(int a, int b); // include/sub.hpp#pragma once int sub(int a, int b); // src/add.cpp#include "add.hpp"int add(int a, …...
JS - 处理元素滚动
业务功能中时常有元素滚动的功能,现在就总结一下一些常用的事件。 一、定位滚动元素 做一切滚动操作之前都应该先定位到滚动元素,再做其他操作,如滚动顶部,获取滚动距离、禁止滚动等。 把以下代码复制粘贴到浏览器 Console 面板…...
JavaScript滚动事件
🧑🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ✨ 前言 滚动是网页交互不可或缺的一部分。监听页面和元素的滚动事件,可以帮助…...
在MATLAB中调用与可视化Lingbot-Depth-Pretrain-ViTL-14的深度估计结果
在MATLAB中调用与可视化Lingbot-Depth-Pretrain-ViTL-14的深度估计结果 对于很多从事计算机视觉、机器人或者测绘相关研究的工程师和学者来说,深度估计是一个基础又关键的任务。它能从一张普通的二维图片中,推测出每个像素点距离相机的远近,…...
Applied Intelligence投稿实战:从格式要求到高接受率的5个关键策略
1. 精准匹配期刊范围:避免编辑秒拒的第一道防线 投稿Applied Intelligence期刊时,最容易被忽视却最关键的一步就是研究范围匹配。我审过30篇稿件,发现80%的"desk rejection"(编辑直接拒稿)都源于研究方向与…...
【Oracle篇】基于OGG 21c全程图形化实现9TB数据从Oracle 11g到19c的不停机迁移(上):微服务架构详解与微服务部署,及同步问题总览(第一篇,总共三篇)
💫《博主主页》: 🔎 CSDN主页: 奈斯DB 🔎 IF Club社区主页: 奈斯、 🔎 微信公众号: 奈斯DB 🔥《擅长领域》: 🗃️ 数据库…...
突破性AMD Ryzen硬件调试方案:SMUDebugTool深度解析与实战指南
突破性AMD Ryzen硬件调试方案:SMUDebugTool深度解析与实战指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…...
【ArkTS】基础语法
一、ArkTS 语言简介 ArkTS 是一种设计用于构建高性能应用的编程语言。它在继承 TypeScript 语法的基础上进行了优化,以提供更高的性能和开发效率。 许多编程语言在设计之初未考虑移动设备,导致应用运行缓慢、低效且功耗大。随着移动设备在日常生活中越来越普遍,针对移动环境…...
软文SEO的常见指标有哪些_如何撰写有吸引力的软文标题
<h2>软文SEO的常见指标有哪些</h2> <p>在当今的数字营销领域,软文(Soft Article)已经成为推动网站流量和品牌知名度的重要工具。要让软文真正发挥作用,我们必须了解软文SEO的常见指标,这些指标可以帮…...
Mojo加速Python科学计算:如何在72小时内将AI推理速度提升8.6倍(附完整可运行代码)
第一章:Mojo与Python混合编程概述Mojo 是一种为 AI 系统量身打造的现代系统编程语言,兼具 Python 的易用性与 C/C 的执行效率。它原生兼容 Python 生态,允许开发者在同一个项目中无缝调用 Python 模块、复用现有 NumPy/Torch 代码,…...
Java学习——String 类的不可变性、底层实现(JDK1.8+)
目录 一、核心定义与设计思想 1. 核心定义 2. 核心设计思想 二、底层实现原理(含 JDK 源码分析 / 反编译验证) 1. JDK1.8 String 核心源码解析 2. 字符串常量池(JDK1.8 底层) 3. 反编译验证(不可变性 编译器优…...
cas:1644644-96-1,甲基四嗪-琥珀酰亚胺酯,Methyltetrazine-NHS ester的应用
Methyltetrazine-NHS ester 是一种结合了甲基四嗪基团和N-羟基琥珀酰亚胺(NHS)活性酯的化合物,具有独特的化学性质和广泛的应用价值。一、基本信息中文名称:甲基四嗪-NHS酯(或甲基四嗪-琥珀酰亚胺酯)英文名…...
视频硬字幕提取终极指南:用本地AI工具10倍提升你的字幕制作效率
视频硬字幕提取终极指南:用本地AI工具10倍提升你的字幕制作效率 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测…...
