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

成像基础 -- 景深计算

景深计算

景深(Depth of Field, DOF)指的是在摄影中,能够清晰成像的物体前后距离的范围。景深的大小取决于多个因素,包括焦距、光圈值、物距以及相机感光元件的尺寸。

1. 景深的主要参数

  • 焦距( f f f):镜头的焦距,通常以毫米(mm)为单位。
  • 光圈( N N N):镜头的光圈值(f-stop),如 f/2.8、f/4 等。
  • 物距( d o d_o do):物体与镜头之间的距离,通常以米(m)为单位。
  • 感光元件的直径(Circle of Confusion, c c c):模糊圆的直径,通常是根据感光元件大小预设的一个数值。

2. 景深的计算公式

景深通常分为两个部分:

  • 前景深(Near Depth of Field, D O F n e a r DOF_{near} DOFnear
  • 后景深(Far Depth of Field, D O F f a r DOF_{far} DOFfar

景深总和为前景深和后景深的和:

D O F = D O F f a r − D O F n e a r DOF = DOF_{far} - DOF_{near} DOF=DOFfarDOFnear

3. 焦点前后的距离计算公式

前景深计算公式(最近可清晰成像的距离):

D O F n e a r = H ⋅ d o H + ( d o − f ) DOF_{near} = \frac{H \cdot d_o}{H + (d_o - f)} DOFnear=H+(dof)Hdo

后景深计算公式(最远可清晰成像的距离):

D O F f a r = H ⋅ d o H − ( d o − f ) DOF_{far} = \frac{H \cdot d_o}{H - (d_o - f)} DOFfar=H(dof)Hdo

其中:

  • 超焦距(Hyperfocal Distance, H H H):指的是当镜头对焦在此距离时,从相机到无限远的范围内都能清晰成像。计算公式为:
    H = f 2 N ⋅ c + f H = \frac{f^2}{N \cdot c} + f H=Ncf2+f

4. 景深计算的步骤

步骤 1:计算超焦距 H H H

H = f 2 N ⋅ c + f H = \frac{f^2}{N \cdot c} + f H=Ncf2+f

其中:

  • f f f 是镜头的焦距
  • N N N 是光圈值
  • c c c 是模糊圆的直径,根据感光元件大小确定(例如,对于全画幅相机, c ≈ 0.03 mm c \approx 0.03 \, \text{mm} c0.03mm

步骤 2:计算前景深 D O F n e a r DOF_{near} DOFnear

D O F n e a r = H ⋅ d o H + ( d o − f ) DOF_{near} = \frac{H \cdot d_o}{H + (d_o - f)} DOFnear=H+(dof)Hdo

步骤 3:计算后景深 D O F f a r DOF_{far} DOFfar

D O F f a r = H ⋅ d o H − ( d o − f ) DOF_{far} = \frac{H \cdot d_o}{H - (d_o - f)} DOFfar=H(dof)Hdo

步骤 4:计算总景深 D O F DOF DOF

D O F = D O F f a r − D O F n e a r DOF = DOF_{far} - DOF_{near} DOF=DOFfarDOFnear

5. 具体例子:

假设我们使用以下参数:

  • 焦距 f = 50 mm f = 50 \, \text{mm} f=50mm
  • 光圈 N = 2.8 N = 2.8 N=2.8
  • 物距 d o = 2 m d_o = 2 \, \text{m} do=2m(被摄物体距离相机 2 米)
  • 模糊圆 c = 0.03 mm c = 0.03 \, \text{mm} c=0.03mm(全画幅感光元件)

步骤 1:计算超焦距 H H H

H = 5 0 2 2.8 × 0.03 + 50 = 2500 0.084 + 50 ≈ 29811.9 mm ≈ 29.81 m H = \frac{50^2}{2.8 \times 0.03} + 50 = \frac{2500}{0.084} + 50 \approx 29811.9 \, \text{mm} \approx 29.81 \, \text{m} H=2.8×0.03502+50=0.0842500+5029811.9mm29.81m

步骤 2:计算前景深 D O F n e a r DOF_{near} DOFnear

D O F n e a r = 29.81 × 2 29.81 + ( 2 − 0.05 ) = 59.62 29.81 + 1.95 ≈ 59.62 31.76 ≈ 1.88 m DOF_{near} = \frac{29.81 \times 2}{29.81 + (2 - 0.05)} = \frac{59.62}{29.81 + 1.95} \approx \frac{59.62}{31.76} \approx 1.88 \, \text{m} DOFnear=29.81+(20.05)29.81×2=29.81+1.9559.6231.7659.621.88m

步骤 3:计算后景深 D O F f a r DOF_{far} DOFfar

D O F f a r = 29.81 × 2 29.81 − ( 2 − 0.05 ) = 59.62 29.81 − 1.95 ≈ 59.62 27.86 ≈ 2.14 m DOF_{far} = \frac{29.81 \times 2}{29.81 - (2 - 0.05)} = \frac{59.62}{29.81 - 1.95} \approx \frac{59.62}{27.86} \approx 2.14 \, \text{m} DOFfar=29.81(20.05)29.81×2=29.811.9559.6227.8659.622.14m

步骤 4:计算总景深 D O F DOF DOF

D O F = D O F f a r − D O F n e a r = 2.14 − 1.88 = 0.26 m DOF = DOF_{far} - DOF_{near} = 2.14 - 1.88 = 0.26\, \text{m} DOF=DOFfarDOFnear=2.141.88=0.26m

6. 总结

在这个例子中,当使用 50mm 焦距、f/2.8 光圈值,并对焦在 2 米远的物体上时,总景深约为 0.26米,其中:

  • 前景深(最近清晰的距离)为 1.88米
  • 后景深(最远清晰的距离)为 2.14米

相关文章:

成像基础 -- 景深计算

景深计算 景深(Depth of Field, DOF)指的是在摄影中,能够清晰成像的物体前后距离的范围。景深的大小取决于多个因素,包括焦距、光圈值、物距以及相机感光元件的尺寸。 1. 景深的主要参数 焦距( f f f)&a…...

Git中从dev分支恢复master分支

问题 需要从dev分支恢复master分支。之前搞错远程地址了,把master分支搞乱了,现在需要从dev分支恢复代码到master分支。 步骤 git checkout dev # 切换到 dev 分支 git branch -D master # 删除本地 master 分支 git checko…...

12.5 Linux_进程间通信_信号灯

概述 什么是信号灯: 信号灯也称为信号量,代表的是一类资源,其值表示系统中该资源的数量。 主要用途是实现进程、线程的同步。 什么是P/V操作: P操作就是申请资源,V操作就是释放操作。 信号灯的种类: …...

Linux——cp-mv-rm命令

cp命令 复制文件 cp test01.txt test02.txt 复制文件夹 cp -r hsy01 hsy02 mv命令 移动文件/文件夹 rm命令 删除文件 rm test.txt 删除文件夹(目录 rm -r hsy01 通配符 * 匹配任意内容 注意* 位置 强制删除-f root超级管理员...

上升点列

题目描述 在一个二维平面内,给定 n 个整数点 (xi​,yi​),此外你还可以自由添加 k 个整数点。 你在自由添加 k 个点后,还需要从 nk 个点中选出若干个整数点并组成一个序列,使得序列中任意相邻两点间的欧几里得距离恰好为 1 而且…...

刷题 链表

面试经典150题 - 链表 141. 环形链表 class Solution { public:bool hasCycle(ListNode *head) {ListNode* slow head, *fast head;while (fast ! nullptr && fast->next ! nullptr) {slow slow->next;fast fast->next->next;if (slow fast) {return…...

SQL 语法学习指南

目录 前言1. SQL 的基本概念1.1 SQL 的作用1.2 SQL 的特点 2. SQL 的基础语法2.1 数据查询 - SELECT 语句2.2 数据插入 - INSERT 语句2.3 数据更新 - UPDATE 语句2.4 数据删除 - DELETE 语句 3. SQL 的进阶语法3.1 聚合函数3.2 表连接 - JOIN3.3 子查询 4. SQL 学习建议4.1 多实…...

低代码可视化-uniapp商城首页小程序-代码生成器

在设计一个小程序的首页时,包含轮播图、通知栏和商品列表这三个元素是非常常见且有效的布局方式。这样的设计既能够吸引用户的注意力,又能够高效地展示信息和商品。 轮播组件 小程序首页幻灯片通常位于小程序的顶部或显著位置,通过滑动屏幕可…...

Vue3 富文本:WangEditor

wangEditor 开源 Web 富文本编辑器&#xff0c;开箱即用&#xff0c;配置简单 wangEditor 1. 安装依赖包 npm install wangeditor/editor-for-vuenext --save 2. 在引用页面加入如下代码 <template><div style"border: 1px solid #ccc"><Toolbar …...

Unity实现自定义图集(四)

以下内容是根据Unity 2020.1.0f1版本进行编写的   在之前的篇章中已经把自定义图集在编辑器上的使用,以及运行时所需的信息都准备好了,接下来就是魔改UGUI的Image组件,使其能够像Image那样运行时如果引用的资源有打自定义图集,则加载对应自定义图集的Texture。 1、思路 …...

k8s-pod的管理及优化设置

Pod是Kubernetes&#xff08;k8s&#xff09;中最小的资源管理组件&#xff0c;也是最小化运行容器化应用的资源对象。以下是对Pod的详细介绍&#xff1a; 一、Pod的基本概念 定义&#xff1a;Pod是Kubernetes中可以创建和管理的最小单元&#xff0c;是资源对象模型中由用户创…...

软件测试面试题大全

什么是软件测试&#xff1f; 答案&#xff1a;软件测试是一系列活动&#xff0c;旨在评估软件产品的质量&#xff0c;并验证它是否满足规定的需求。它包括执行程序或系统以识别任何缺陷、问题或错误&#xff0c;并确保软件产品符合用户期望。 软件测试的目的是什么&#xff1f…...

SQL第16课挑战题

1. 美国各州的缩写应始终用大写。更新所有美国地址&#xff0c;包括供应商状态&#xff08;Vendors表中的vend_state)和顾客状态&#xff08;customers表中的cust_state),使它们均为大写。 2. 第15课挑战题1要求将自己添加到customers表中&#xff0c;现在删除自己&#xff0c;…...

Python3 爬虫 中间人爬虫

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

Leetcode 50. Pow ( x , n ) 快速幂、取模 C++实现

问题&#xff1a;Leetcode 50. Pow ( x , n ) 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数。 算法&#xff1a; 具体实现流程如下&#xff1a; 代码&#xff1a; class Solution { public:double myPow(double x, int N) {double ans 1;long long n N;if (n <…...

Java SE vs Java EE 与 JVM vs JDK vs JRE

Java SE&#xff08;Java Platform&#xff0c;Standard Edition&#xff09;: Java 平台标准版&#xff0c;Java 编程语言的基础&#xff0c;它包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java SE 可以用于构建桌面应用程序或简单的服务器应用程序。…...

Linux YUM设置仓库优先级

1.安装yum-plugin-priorities优先级插件 yum install yum-plugin-priorities -y 2.设置仓库优先级 vim /etc/yum.repos.d/local.repo [local] namecentos7.5 baseurlfile:///mnt enable1 gpgcheck0 priority1 注释&#xff1a; priority1 #数字越小代表优先级越高&#xff…...

做一个不断更新的链接库

做一个不断更新的链接库 anaconda anaconda官方镜像源 anaconda清华镜像源 社区 CSDN CSDN-华为开发者空间 python开发库 股票爬虫 - akshare...

Ping32企业加密软件:保护数据安全

在数字化时代&#xff0c;数据安全已成为每个企业不可忽视的重要课题。无论是客户信息、财务报表&#xff0c;还是商业机密&#xff0c;数据的安全性直接关系到企业的声誉与运营。为了应对不断变化的安全威胁&#xff0c;选择一款可靠的企业加密软件尤为重要。在这里&#xff0…...

【Java】异常的处理-方式【主线学习笔记】

文章目录 前言1、处理概述2、Java异常处理机制&#xff08;方式&#xff09;方式一&#xff08;抓抛模型&#xff09;&#xff1a;try-catch-finally方式二&#xff1a;throws 异常类型总结 前言 Java是一门功能强大且广泛应用的编程语言&#xff0c;具有跨平台性和高效的执行…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...