当前位置: 首页 > news >正文

相机,棱镜和光场

一、成像方法

Imaging = Synthesis + Capture

1.Synthesis(图形学上)合成:比如之前学过的光线追踪或者光栅化

2.Capture(捕捉):把真实世界存在的东西捕捉成为照片

二、相机

1.小孔成像

  • 利用小孔成像的相机叫做针孔相机
  • 相机的各个部位
    • 快门(Shutter):控制光进入相机
    • 传感器(Sensor): 捕捉光并记录下来(记录 Irradiance)
  • 如果没有透镜,相机就拍不了了
    因为如果直接把感光元件放在一个人的面前,感光元件上任何一个点都可能收集到不同方向过来的光,而且作为传感器的它不会区分来自各个方向的光线,所以会糊
  • 针孔相机拍出的东西是没有深度可言的
    也就是任何地方都是锐利清楚的,都不会是虚化的
    因为透镜的存在所以会产生虚化,这个之后会提到
    并且我们之前做光线追踪的时候用的就是针孔相机的模型,所以我们也得不到景深的模糊效果
    所以如果我们可以模拟光线和透镜的作用,那么我们也可以作出景深的渲染效果

2.FOV(field of view 视场)

  视场说的是能看到多大的范围
h: 传感器高度(宽度)
f: 焦距,传感器与 透镜/小孔 的距离

同样大小的传感器,焦距越大,视场越窄
同样焦距,传感器越大,视场越宽
同样视场,焦距和传感器等比

-焦距(Focal Length)

    • 历史原因,通常以35mm的胶片为基准(eg.17mm为广角)
    • 手机对应的基准会小很多(等效为35mm)

-传感器大小(Sensor Size)

    • 区分传感器和胶片:传感器记录收到的Irradiance; 胶片是存成图像格式

3.Exposure 曝光

曝光记录的是总共的能量,是T×E
曝光时间T由快门控制
Irradiance(E)由光圈与焦距决定

影响照片亮度的三要素:光圈、快门、感光度

三者的关系:

光圈

光圈是个挡光的东西,有大小,由F数控制,光圈是一种仿生学的设计,仿照人的瞳孔放大缩小

  • F-Number (F-Stop):描述光圈的大小
    • 有两种写法:FN or F/N(这些不重要,重要的是N)
快门
  • 快门:控制光通过的时间(我们关心从关闭到打开的过程)
    • 两个现象

  更长的曝光时间/更快的物体运动速度 容易造成运动模糊
  类似于在时间上采样

快门开启需要时间,这个会造成高速运动物体的扭曲,比如下图飞机的螺旋桨

ISO gain(感光度)
  • ISO :可以理解为乘了一个数(就是一个简单的增倍eg.ISO200就是ISO100的两倍)
  • ISO做简单放大的同时也会放大噪声,所以当倍数过大的时候可能会造成图片上很多白点

进光量~F-Stop² / Shutter Speed
(F数理解为直径分之一,与面积是平方关系,所以为了曝光量平衡,与快门速度也是平方关系)
即使比例关系做对了
但是大光圈会有浅景深的效果,快门时间会导致运动模糊等效果,需要权衡

  • 应用:
    高速摄影,每秒极高帧率,快门时间受限需要用更大光圈或者高ISO
  • 延时摄影,快门时间很长,光圈变小
  • 萤火虫长时间的飞构成了图片

三、透镜

真实的透镜并不那么理想,有些透镜无法将光线聚于一点 出现 Aberrations

理想化的透镜:

所有进入透镜的平行光线都通过透镜的焦点
穿过焦点的所有光线在通过透镜后将是平行的
焦距可以任意改变(实际上用透镜组改变焦距)

1 薄透镜方程

定义:zo(物距) zi(像距)f(焦距)

1/f =1/zi + 1/zo

推导过程:

2.Defocus Blur(焦散模糊) ——景深的原因

为了解释景深,我们引入Circle of Confusion (CoC)
左边有一个Focal Plane,其上的东西会成像到Sensor Plane上
如果Object不在Focal Plane上,如下图可能会聚焦在Image上,然后光线继续传播到Sensor Plane上,这时候在Sensor Plane上形成的圆就是CoC

CoC告诉我们看到的东西模糊不模糊,取决于光圈的大小,大光圈容易有模糊的效果

因为说CoC大小与光圈成正比,所以我们回头看光圈
之前我们说F数它是直径分之一,其实不对
F数的明确定义是焦距除以直径

一些例子:

3.在光线追踪中使用薄透镜近似

(略)

4.景深 Depth of Field

  • 用大/小 光圈会影响模糊的范围
  • 景深就是指实际场景中有一段深度,经过透镜后会在成像屏幕附近形成一段区域,我们认为这段区域的CoC都是足够小的。(可以理解为CoC和pixel一样小时,形成的image就是锐利的)
    • 所谓的景深的这一段就是对应CoC足够小的一段也就是清晰的一段
  • Depth of Field(FYI)
  • 考虑景深的最远处和最近处,推一下公式,把这些深度和焦距联系起来
    也就是某个位置穿过透镜会到某个地方
    • 把DF DN DS dF dS dN 联系起来(深度和焦距联系起来)
    • DOF = DF - DN

四.光场

Light Field / Lumigraph 两个词指同一东西,属于历史遗留问题,是由两个组独立几乎同时发现的同样东西,叫法不一样
要说光场,我们就从看到的世界是什么说起

我们看到这个三维世界,在我们眼睛里类似就是一幅图
那如果我们直接看到一幅图,这幅图完全记录了之前看到的光线信息,我们也能得到同样的结果
这也是类似虚拟现实的原理,用一个平面的成像设备,让人误以为在三维环境中

1.全光函数 The Plenoptic Function(描述我们可以看到的世界)

  • 从简单说:站在一个场景,位置固定,我们往四面八方看,定义任意一个方向

  • 改进:引入波长(颜色) → 彩色

  • 拓展:时间t → 电影

  • 再拓展:位置不固定,在三维空间内任意移动 VX VY VZ → 全系电影

  • 再改进:把函数理解为在任意位置,往任意方向看,在任意时间看到不同的颜色

→ 这就是我们看的世界

  • 可以从全光函数提取一些信息出来,用来表示更复杂的光

2.采样全光函数 Sampling Plenoptic Function

光场其实就是全光函数的小部分,在定义光场前我们先定义光线,定义一条光线需要的是二维的位置和二维的方向(在下面会阐述)

要记录一个物体向四周展示的样子,只需要记录包围盒上表面各个点往各个方向发射的光线的信息
这也就是光场记录的东西
在物体表面任何一个位置往任何一个方向去的光线的强度
怎么理解二维的位置与二维的方向呢?
物体的表面是二维的,方向也是二维的,所以用这个四个信息当变量的函数就是光场

我们把物体变成光场,记录下光场后也就相当于记录下了物体的观测

我们还可以理解成我们取一个平面,平面右边是一个物体,它的光会穿过这个平面来到左边
我们不需要知道右边有什么,我们只需要知道对于平面上任意一个点的任意一个方向会发出什么

相关文章:

相机,棱镜和光场

一、成像方法 Imaging Synthesis Capture 1.Synthesis(图形学上)合成:比如之前学过的光线追踪或者光栅化 2.Capture(捕捉):把真实世界存在的东西捕捉成为照片 二、相机 1.小孔成像 利用小孔成像的相…...

【图像版权】论文阅读:CRMW 图像隐写术+压缩算法

不可见水印 前言背景介绍ai大模型水印生成产物不可见水印CRMW 在保护深度神经网络模型知识产权方面与现有防御机制有何不同?使用图像隐写术和压缩算法为神经网络模型生成水印数据集有哪些优势?特征一致性训练如何发挥作用,将水印数据集嵌入到…...

代码随想录算法训练营第31天—贪心算法05 | ● 435. 无重叠区间 ● *763.划分字母区间 ● *56. 合并区间

435. 无重叠区间 https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html 考点 贪心算法重叠区间 我的思路 先按照区间左坐标进行排序,方便后续处理进行for循环,循环范围是0到倒数第二个元素如果当前区间和下一区间重叠…...

2024《》

vue-cli到哪做了那些事 vue-cli是vue.js的脚手架,用于自动生成vue.jswebpack的项目模板,快速搭建Vue.js项目。 vue cli内置了webpack的一些功能,这些是用webpack打包时需要我们自己配置的,例如: 1.ES6代码转换成ES5代…...

【Web】Java反序列化之从CC3看TemplatesImpl的利用

目录 关于TemplatesImpl 关于TemplatesImpl加载字节码 CC3链分析 纯CC3demo 根据CC3改CC6 关于TemplatesImpl TemplatesImpl 是 Java 中的一个类,通常与 Java 反序列化漏洞相关的攻击中被使用。该类位于 Java 标准库中的 javax.xml.transform 包下。 在 Java…...

【Elasticsearch索引】Recovery恢复索引

文章目录 索引恢复恢复列表获取恢复信息响应详细信息正在进行的恢复响应解析高级设置 本地分片恢复事务日志 索引恢复 索引恢复提供了对正在进行的索引分片恢复的洞察。恢复状态可以针对特定的索引报告,也可以在集群范围内报告。 恢复列表 recovery命令是索引分片…...

如何在 Linux 中快速清空文件而不删除它们?

在Linux系统中,清空文件而不删除它们是一种常见的需求,特别是在需要保留文件结构或权限的情况下。本文将详细介绍如何在Linux环境中快速清空文件内容的多种方法,以及每种方法的优缺点。清空文件通常涉及到文件内容的擦除,但并不涉…...

SpringBoot 配置文件${variable:default}用法

${variable:default}用法,variable​是变量名,default​是默认值。如果配置文件中未指定该变量的值,则会使用默认值来替代。 解释代码: ip: ${NACOS_IP:nacos.ip} 该yaml函数是一个配置项,用来指定Nacos服务器的IP地…...

CUDA学习笔记02:测试程序hello world

参考资料 Win10下在VS2019中配置使用CUDA进行加速的C项目 (配置.h文件,.dll以及.lib文件等)_vs2019 cuda-CSDN博客 配置流程 1. 新建一个一般的项目 2. 项目建好后,在项目里添加.cu测试文件 测试的.cu文件命名为cuda_utils.cu&…...

2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

2023年第十四届蓝桥杯大赛软件类省赛C/C大学A组部分真题和题解分享 文章目录 蓝桥杯2023年第十四届省赛真题-平方差思路题解 蓝桥杯2023年第十四届省赛真题-更小的数思路题解 蓝桥杯2023年第十四届省赛真题-颜色平衡树思路题解 蓝桥杯2023年第十四届省赛真题-买瓜思路题解 蓝桥…...

项目部署发布

目录 上传数据库 修改代码中的数据源配置 修改配置文件中的日志级别和日志目录 打包程序 ​编辑​编辑 上传程序 查看进程是否在运行 以及端口 云服务器开放端口(项目所需要的端口) 上传数据库 通过xshell控制服务器 创建目录 mkdir bit_forum 然后进入该目录 查看路…...

MATLAB环境下基于离散小波变换的心电信号伪影去除及PQRST波检测

可穿戴个人健康监护系统被广泛认为是下一代健康监护技术的核心解决方案。监护设备不断地感知、获取、分析和存储大量人体在日常活动中的生理数据,为人体的健康状况提供必要的、准确的、集成的和长期的评估和反馈。在心电监测领域,可穿戴传感器具有以下应…...

SwiftUI 在 App 中弹出全局消息横幅(下)

功能需求 在 SwiftUI 开发的 App 界面中,有时我们需要在全局层面向用户展示一些消息: 如上图所示:我们弹出的全局消息横幅位于所有视图之上,这意味这它不会被任何东西所遮挡;而且用户可以点击该横幅关闭它。这是怎么做到的呢? 在本篇博文中,您将学到以下内容 功能需求…...

2023年06月CCF-GESP编程能力等级认证Scratch图形化编程三级真题解析

本文收录于专栏《Scratch等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(共15题,共30分) 第1题 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。 A:编辑 B:保存 C:调试 D:编译 答案:D 第2题 小球角色,执行以下程序…...

升级openssl

openssl版本一键升级(需要修改tar包名称和路径) --- - name: Install OpenSSLhosts: openssltasks:- name: Copy OpenSSL tar.gz to /tmpcopy:src: /root/shl/soft/openssl-1.1.1v.tar.gzdest: /tmp # remote_src: yes # 如果源文件在控制主机上…...

软考基础知识2

1.DMA控制方式:直接内存存取。数据在内存与I/O设备间直接成块传送,不需要CPU的任何干涉,由DMA硬件直接执行完成。 例题: 2.程序计数器总是存下一个指令的地址。 例题: 3.可靠度的计算: 例题&#xff1a…...

Python基本数据类型介绍

Python 解释 Python是一种高级编程语言,以其简洁、易读和易用而闻名。它是一种通用的、解释型的编程语言,适用于广泛的应用领域,包括软件开发、数据分析、人工智能等。python是一种解释型,面向对象、动态数据类型的高级程序设计…...

边缘计算网关:连接物理世界与数字世界的桥梁-天拓四方

边缘计算网关是一种硬件设备,通常部署在网络边缘,即物联网设备的接入点。它具备数据采集、处理、存储和传输等功能,能够实现对物联网设备的实时监控和控制。边缘计算网关将原本需要在云端处理的数据在本地进行计算和分析,从而降低…...

NTP网络校时服务器(GPS北斗卫星校时系统)应用场景

NTP网络校时服务器(GPS北斗卫星校时系统)应用场景 NTP网络校时服务器(GPS北斗卫星校时系统)应用场景 随着大数据、云计算时代的到来,各行业信息化建设的不断提升,信息化下的各个系统不再单独处理各自业务,而是趋于协同工作,因此,各…...

Intel 芯片 Mac 如何重新安装系统

使用可引导安装器重新安装(可用于安装非最新的 Mac OS,系统降级,需要清除所有数据,过程确保连接上网络,虽然这种方式不会下载 Mac OS,但是需要下载固件等信息) 插入制作好的可引导安装器&#x…...

5分钟完成Switch注入:TegraRcmGUI终极图形化工具完整指南

5分钟完成Switch注入:TegraRcmGUI终极图形化工具完整指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI Switch注入对于许多Nintendo Switch用户…...

pprint,一个漂亮打印的 Python 库!

在日常编程中,我们经常需要打印复杂的数据结构——嵌套的字典、列表、JSON 响应、配置对象等。使用普通的 print() 会将整个结构挤在一行或简单换行,导致可读性极差,尤其是在调试多层嵌套的 API 返回数据时,简直是一场灾难。pprin…...

终极Zotero插件市场:一站式插件发现与管理完全指南

终极Zotero插件市场:一站式插件发现与管理完全指南 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing and installing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons Zotero插件市场&a…...

Linux服务器安全加固实战:SSH+防火墙+权限最小化三重防护

1. 这不是“加个密码就完事”的安全,而是让服务器真正扛住真实攻击的第一道防线很多人以为 Linux 安全加固就是改个 root 密码、关掉 telnet、再装个 fail2ban 就算交差了。我去年帮一家做跨境电商 SaaS 的客户做渗透复测时,他们运维同事就是这么干的——…...

视频硬字幕提取革命:87种语言本地OCR识别,让字幕提取从未如此简单

视频硬字幕提取革命:87种语言本地OCR识别,让字幕提取从未如此简单 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含…...

萌新学习第九天,python篇,内置函数

内置函数:一句话:Python 自带的、不需要A import 导入就可以直接使用的函数。比如你经常用的 print()、len()、input()、type() 都是内置函数。输出类:函数作用print()打印输出input()从键盘读取输入format()格式化字符串类型转换类:函数作用…...

2026 SSH工具推荐:不装传统面板,还有什么更适合管理 Linux 服务器?

这几年很多人选 SSH 工具,已经不只是为了“远程登上服务器敲命令”。 真正常见的需求其实是:连上服务器之后,还要继续完成文件管理、服务部署、HTTPS 配置、站点检查,甚至多台 VPS 的统一管理。 也正因为这样,到了 202…...

2026 AI搜索迭代下的获客革新:SEOGEO双引擎战略落地实战方案

2026 AI搜索迭代下的获客革新:SEO&GEO双引擎战略落地实战方案摘要:2026年生成式AI全面渗透搜索场景,传统关键词SEO流量遭遇结构性下滑,零点击搜索成为行业常态。本文以泉州本地中小企业数字化服务场景为依托,深度剖…...

“冠珠·美乐童行”公益行动走进广州市增城区高滩小学,唱响爱、筑就美

在520爱家日十周年之际,冠珠瓷砖积极响应国家美育浸润与乡村教育振兴的政策号召,暖心开启 “冠珠美乐童行”公益行动。首站活动由冠珠瓷砖、广州市越秀山体育中心共同主办,以 “乐动童心美育同行” 为主题,走进广州市增城区高滩小…...

运算符的种类以及基本用法

一、算术运算符(最基础) 运算符名称示例说明加法358正数 / 加法运算-减法 / 负号5-32减法或表示负数(如 -5)*乘法3*515注意:不是 ,是 */除法5/22整数除法舍去小数,5.0/22.5%取模(取…...