成像基础 -- 景深计算
景深计算
景深(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=DOFfar−DOFnear
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+(do−f)H⋅do
后景深计算公式(最远可清晰成像的距离):
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−(do−f)H⋅do
其中:
- 超焦距(Hyperfocal Distance, H H H):指的是当镜头对焦在此距离时,从相机到无限远的范围内都能清晰成像。计算公式为:
H = f 2 N ⋅ c + f H = \frac{f^2}{N \cdot c} + f H=N⋅cf2+f
4. 景深计算的步骤
步骤 1:计算超焦距 H H H
H = f 2 N ⋅ c + f H = \frac{f^2}{N \cdot c} + f H=N⋅cf2+f
其中:
- f f f 是镜头的焦距
- N N N 是光圈值
- c c c 是模糊圆的直径,根据感光元件大小确定(例如,对于全画幅相机, c ≈ 0.03 mm c \approx 0.03 \, \text{mm} c≈0.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+(do−f)H⋅do
步骤 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−(do−f)H⋅do
步骤 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=DOFfar−DOFnear
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+50≈29811.9mm≈29.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+(2−0.05)29.81×2=29.81+1.9559.62≈31.7659.62≈1.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−(2−0.05)29.81×2=29.81−1.9559.62≈27.8659.62≈2.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=DOFfar−DOFnear=2.14−1.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 富文本编辑器,开箱即用,配置简单 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(k8s)中最小的资源管理组件,也是最小化运行容器化应用的资源对象。以下是对Pod的详细介绍: 一、Pod的基本概念 定义:Pod是Kubernetes中可以创建和管理的最小单元,是资源对象模型中由用户创…...
软件测试面试题大全
什么是软件测试? 答案:软件测试是一系列活动,旨在评估软件产品的质量,并验证它是否满足规定的需求。它包括执行程序或系统以识别任何缺陷、问题或错误,并确保软件产品符合用户期望。 软件测试的目的是什么?…...
SQL第16课挑战题
1. 美国各州的缩写应始终用大写。更新所有美国地址,包括供应商状态(Vendors表中的vend_state)和顾客状态(customers表中的cust_state),使它们均为大写。 2. 第15课挑战题1要求将自己添加到customers表中,现在删除自己,…...
Python3 爬虫 中间人爬虫
中间人(Man-in-the-Middle,MITM)攻击是指攻击者与通信的两端分别创建独立的联系,并交换其所收到的数据,使通信的两端认为其正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中…...
Leetcode 50. Pow ( x , n ) 快速幂、取模 C++实现
问题:Leetcode 50. Pow ( x , n ) 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数。 算法: 具体实现流程如下: 代码: 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(Java Platform,Standard Edition): Java 平台标准版,Java 编程语言的基础,它包含了支持 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 注释: priority1 #数字越小代表优先级越高ÿ…...
做一个不断更新的链接库
做一个不断更新的链接库 anaconda anaconda官方镜像源 anaconda清华镜像源 社区 CSDN CSDN-华为开发者空间 python开发库 股票爬虫 - akshare...
Ping32企业加密软件:保护数据安全
在数字化时代,数据安全已成为每个企业不可忽视的重要课题。无论是客户信息、财务报表,还是商业机密,数据的安全性直接关系到企业的声誉与运营。为了应对不断变化的安全威胁,选择一款可靠的企业加密软件尤为重要。在这里࿰…...
【Java】异常的处理-方式【主线学习笔记】
文章目录 前言1、处理概述2、Java异常处理机制(方式)方式一(抓抛模型):try-catch-finally方式二:throws 异常类型总结 前言 Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
