光学成像原理之景深(Depth of Field)

2023-10-26

1. 概述

先看两个例子,拍摄花、昆虫等照片时,背景拍的比较模糊,突出被拍物。但当拍摄纪念照、风景等照片时,却会把背景拍摄得和被拍对象一样清晰。这两者就是不同景深。前者为浅景深,拍摄聚焦到被拍物上,只能拍清一小段距离,被拍物前后的景色都被虚化,清晰范围较小。而后者为大景深,清晰范围较大。

浅景深 大景深

景深(depth of field)定义:摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。通俗讲即被拍摄物体对焦点(focus point)平面处的景物,在胶片上会形成清晰影像,在对焦点平面的前方某处到其后方某处有一个范围,其内的景物都能形成清晰影像,这一范围称为景深,讨论景深,一般我们用“深浅”形容,即浅景深(narrow depth of field)或大景深(large depth of field)。

2. 景深原理

理解景深原理前,我们必须明白一件事:当我们对焦时,其实只有一个平面是真正合焦的。这个平面与像平面(可以简单理解为胶片或者传感器平面)平行。凡是在这个平面之前或者之后的都不是合焦状态。合焦平面上物体某点发出不同角度的光在像平面成像都汇聚于一点,而非合焦物体的某点发出不同角度的光会落在像平面不同点上,形成一个模糊圆,这个圆术语叫做弥散圆(circle of confusion)。
在这里插入图片描述所以没有对上焦的东西,在底片上看起来就是模糊的。如果拍的是一个灯泡的话,就会看起来像是一个圈。
下面看看弥散圆和对焦距离的关系,非合焦平面1距离合焦平面较远,其在像平面弥散圆越大,而非合焦平面2距离合焦平面较近,像平面上弥散圆较小。因此离合焦平面得越近,弥散圆就越小。
在这里插入图片描述
如果弥散圆小到人眼无法鉴别(或者说弥散圆直径小于传感器像元的大小),模糊圆可被视为点的成像,看起来就和对上焦的东西一样清晰,此无法分辨的弥散圆称为容许弥散圆(permission circle of confusion)。在被摄物体(对焦点或合焦平面)前后纵深,有一段距离,其影像在像平面的模糊程度肉眼无法分辨,比较清晰,都在容许弥散圆限定范围内,它们之间距离称为景深。
在这里插入图片描述

3. 景深计算

通用计算公式

在这里插入图片描述

参数 物理意义
L L L 合焦物距(拍摄距离)
δ \delta δ 容许弥散圆直径
F F F 镜头光圈值
f f f 镜头焦距
  • 前景深 Δ L 1 = F δ L ( L − f ) f 2 + F δ ( L − f ) \Delta {{L}_{1}}=\frac{F\delta L(L-f)}{{{f}^{2}}+F\delta (L-f)} ΔL1=f2+Fδ(Lf)FδL(Lf)
  • 后景深 Δ L 2 = F δ L ( L − f ) f 2 − F δ ( L − f ) \Delta {{L}_{2}}=\frac{F\delta L(L-f)}{{{f}^{2}}-F\delta (L-f)} ΔL2=f2Fδ(Lf)FδL(Lf)
  • 景深 D O F = Δ L 1 + Δ L 2 = 2 f 2 F δ L ( L − f ) f 4 − F 2 δ 2 ( L − f ) 2 DOF=\Delta {{L}_{1}}+\Delta {{L}_{2}}=\frac{2{{f}^{2}}F\delta L(L-f)}{{{f}^{4}}-{{F}^{2}}{{\delta }^{2}}{{(L-f)}^{2}}} DOF=ΔL1+ΔL2=f4F2δ2(Lf)22f2FδL(Lf)
    从公式结果可知,前景深<后景深

普通相机计算公式简化

拍照大多是中长拍摄距离,即 L L L远大于 f f f,根据成像公式
1 u + 1 v = 1 f \frac{1}{u}\text{+}\frac{1}{v}\text{=}\frac{1}{f} u1+v1=f1
其中, u u u为物距,即 L L L v v v为像距,因此像距 v v v接近于 f f f,此时成像平面接近于焦平面,计算景深光学通路可简化为
景深计算公式可简化为
D O F ≈ 2 f 2 F δ L 2 f 4 − F 2 δ 2 L 2 DOF\approx \frac{2{{f}^{2}}F\delta {{L}^{2}}}{{{f}^{4}}-{{F}^{2}}{{\delta }^{2}}{{L}^{2}}} DOFf4F2δ2L22f2FδL2

4. 影响因素

由景深计算公式可知,景深与镜头使用光圈、镜头焦距、拍摄距离以及对像质的要求(表现为对容许弥散圆的大小)有关。这些因素对景深的影响如下:

  • 镜头光圈:光圈越大,景深越小;光圈越小,景深越大;
  • 镜头焦距:镜头焦距越长,景深越小;焦距越短,景深越大;
  • 拍摄距离:距离越远,景深越大;距离越近,景深越小。

镜头光圈

光圈大小无疑是我们控制景深最为有效的因素了。我们可以借用下面这张图来看一下景深的作用效果:

光圈大小与景深深浅成反比,光圈越大,景深越浅。

镜头焦距

镜头焦距的长短同样也左右着景深的效果。以下图为例,在同样的光圈和拍摄距离下,同样一张照片,仅仅是焦距的变化(左边:24MM;右边:70MM),景深也随之变化。

焦距较长的镜头能提供较浅的景深,以及较大的前景深,这可以更加突显出焦点的部份,因为模糊部份被扩大了。

成像距离

拍摄距离的远近也是影响景深大小的重要因素。被拍摄的物体距离镜头越近,景深就会越浅。

弥散圆直径选择

以下为普通数码相机弥散圆计算方式
通常情况下,肉眼分辨率为而千分之一至五千分之一。人眼在明视距离(眼睛正前方30厘米)能够分辨的最小物体尺寸大约为0.125mm。所以,弥散圆放大在7寸照片(这是个常用尺寸)也只能是0.125mm以内,也就是图像对角线长度的1/1730左右。这个1/1730左右的弥散圆大小对于任何大小的底片或者CCD都适用,因为它们放大出的7寸照片,都可以将弥散圆控制在0.125mm。所以蔡斯公司制定的标准就是弥散圆直径 δ=1/1730 底片对角线长度。
在这里可以看出:景深是相对的,不是绝对的,和弥散圆直径 δ的取值大小有着直接的关系。
容许弥散圆直径的计算公式 δ = d / 1730 \delta = d/1730 δ=d/1730 d d d为CCD芯片对角线长度(芯片尺寸)

5. 工业相机应用

工业相机一般拍摄近距离物体,放大倍率 M M M值较大,根据成像放大倍率公式
M = f L − f M= \frac{f}{L-f} M=Lff
景深公式简化为:
D O F = 2 f 2 F δ ( 1 + M ) M 2 f 2 − F 2 δ 2 ≈ 2 F δ ( 1 + M ) M 2 DOF= \frac{2{f}^2F\delta(1+M)}{{M}^2{f}^2-{F}^2{\delta}^2}\approx \frac{2F\delta(1+M)}{{M}^2} DOF=M2f2F2δ22f2Fδ(1+M)M22Fδ(1+M)

  • 镜头光圈:光圈越大,景深越小;光圈越小,景深越大;
  • 容许弥散圆直径:容许直径越大,景深越大
  • 放大倍率:倍率越大,景深越小

景深受放大倍率影响较大,随着放大倍率增大快速降低
在这里插入图片描述上图中光圈值 F = 12 F=12 F=12,容许弥散圆直径 δ = 0.04 m m \delta=0.04mm δ=0.04mm

一般工业相机弥散圆直径选取0.04mm,而随着近年相机芯片像元尺寸的减小,弥散斑取0.04mm已远大于芯片的分辨能力。而且严格而言,同一个镜头,搭配不同像元尺寸的相机,由于允许的弥散圆直径大小的不同,景深也会有所差异。但习惯上,机器视觉行业各镜头厂商仍以弥散圆直径=0.04mm来计算景深。因此镜头实际测试出的景深值<镜头参数标示出的景深理论值。

6. 参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

光学成像原理之景深(Depth of Field) 的相关文章

  • 医疗器械维修工程师好做吗?赚钱吗?

    彩虹医疗器械维修培训第二期长期班安排 学技术 考证书 工作技术支持 彩虹介绍 彩虹医械维修培训中心成立于2003年 至今已有十余年的时间 为满足社会需求 推进医疗器械维修技术发展 开展医疗器械的维修技术培训 在社会上取得了良好的反应和口碑
  • 嵌入式Linux驱动开发(I2C专题)(四)

    编写APP直接访问EEPROM 参考资料 Linux驱动程序 drivers i2c i2c dev c I2C Tools 4 2 https mirrors edge kernel org pub software utils i2c
  • 在 Kubernetes 上体验 EMQX 5.0 的 MQTT over QUIC 特性

    引言 作为全球领先的开源分布式 MQTT Broker EMQX 在 5 0 版本中引入了 MQTT over QUIC 将 MQTT 协议的优势与 QUIC 的特性相结合 通过充分利用 QUIC 协议低连接开销和多路复用的特点 MQTT
  • 入职避坑指南(杭州)

    前言 求职都说金三银四 今天和大家分享一个亲身经历的事情 今天讲的是杭州 群电商公司 规模500人左右 说说我被公司白瞟的亲身经历 希望看到这篇文章的同学能避开这些坑 面试过程 公司比较远 附近没有地铁 大概坐了一个多小时的公交车去面试 到
  • CompletableFuture使用详解

    https blog csdn net admin123404 article details 111168902
  • Centos7.9搭建kafka-3.2.0集群,三台机器组成,并安装安装eagle 监控

    目录 1 准备工作 2 搭建zookeeper集群 3 搭建kafka集群 4 测试kafka集群 4 1 命令测试 4 2 java代码测试 5 安装eagle 监控 1 准备工作 kafka 3 2 0的单机安装教程如下 CentOS7
  • MySQL的全连接

    从这篇博客开始 从高端大气的计算机视觉方向转行做JAVA开发了 接下来的博客就是JavaJavaJava了没有世界上最好用的pythonpythonpython 由于MySQL不支持FULL JOIN 所以 需要使用UNION来实现全连接
  • 一、多路复用

    1 什么是多路复用 数据通信系统或计算机网络系统中 传输媒体的带宽或容量往往会大于传输单一信号的需求 为了有效地利用通信线路 希望一个信道同时传输多路信号 这就是所谓的多路复用技术 Multiplexing 采用多路复用技术能把多个信号组合
  • 第三章 Jinja2模板

    第三章 Jinja2模板 在前面的实例中 视图函数的主要作用是生成请求的响应 这是最简单请求 实际上 视图函数有两个作用 处理业务逻辑 返回响应内容 在大型应用中 把业务逻辑和表现内容放在一起 会增加代码的复杂度和维护成本 模板其实是一个包
  • 因误删文件导致CentOS7开机卡死无法进入图形登录界面

    目录 1 背景 2 解决步骤 1 背景 这几天在清理电脑 需要删除虚拟机 为此写下了Linux系统下卸载VMware Workstation软件 nanke yh的博客 CSDN博客 但是同时怕有残留 自己全局搜索了vm 删除了部分带有vm
  • SpringBoot之整合Shiro(最详细)

    1 SpringBoot整合Shiro思路 2 环境搭建 2 1 创建项目 2 2 引入依赖 pom xml
  • 微信小程序html2canvas,微信小程序之Canvas填坑

    1用能境战求道 重件开又是正易里是了些之框 WXML CANVAS隐藏问求圈分件圈浏第用代是水刚道 的它还题 2需朋者说上事是础一发一开程和开数的目前间 JS CANVAS 新直能分支调二浏页器朋代说 事刚绘制图片 这里要注意的遇新是直朋能
  • [npm] npx 介绍与使用说明

    npm npx 介绍与使用说明 npm 的由来 npx 是什么 npx 特点 npx 的特点 项目安装包的使用 全局安装包的避免 指定工具包版本 no install 参数和 ignore existing 参数 使用不同版本的 node
  • linux开启vt虚拟化,VT虚拟化如何开启

    VT虚拟化如何开启 VT是什么意思 VT虚拟化怎么开启呢 下面小编为大家分享VT虚拟化开启技巧 欢迎大家参考 VT是什么意思 VT是英文virtualizationtechnology的缩写 其意思是CPU虚拟化技术 我们安装的手游助手就是
  • 【机器学习】如何根据数据集选择适合的模型

    Is it because we have many features in our data sheet 因为我们的数据表中有很多特征吗 Or is it because the feature list does not only co
  • SpringBoot(四)SpringBoot搭建简单服务端

    通过之前的几篇文章相信大家已经对SpringBoot项目开发有了一个基本的了解 本篇 介绍下如何使用SpringBoot搭建一个简单的服务端 实现一个新用户注册的场景 供前端和移动端去使用 本篇需要你对SpringBoot的starter
  • Windows常用命令整理

    之前写了一篇关于Windows快速打开服务 陌客依天涯的博客 CSDN博客 服务快捷键 的文章 有表示windows还有很多常用的 那就整理一下 分享跟多点 希望对大家有用 1 mstsc 快速开启远程连接客户端 2 regedit 快速打
  • 节流防抖详解及代码实现

    防抖 原理 在事件被触发n秒后再执行回调 如果在这n秒内又被触发 则重新计时 适用场景 按钮提交 防止多次提交按钮 只执行最后提交的一次 搜索框联想 防止联想发送请求 只发送最后一次输入 防抖小例子

随机推荐

  • C++打开特定编码格式的文件(utf-8)

    FileEncoding cpp 定义控制台应用程序的入口点 include stdafx h include
  • 具身智能综述和应用(Embodied AI)

    什么是具身智能 目前人工智能的进展 在诸多数据源和数据集 Youtube Flickr Facebook 机器计算能力 CPU GPU TPU 的加持下 已经在CV NLP上取得了许多任务 如目标检测 语义分割等 的重大进展 但目前大部分深
  • 一定要先看!Kubernetes+KubeSphere+DevOps的安装与踩坑

    1 安装 本人于2020 9安装的k8s 不同时间段的官方资料会有变动 从而使初学者很抓狂 比如链接404等 所以一定要先看我这篇 尽量一次全部安装成功 不然重装又会出现许多疑难杂症 官方安装文档 首先 我按照文档一步一步操作 前面都没有问
  • 一手好SQL是如何练成的

    一手好SQL是如何练成的 一 Mysql性能 1 1 最大数据量 1 2 最大并发数 1 3 查询耗时0 5秒 1 4 实施原则 二 数据表设计 2 1 数据类型 2 1 避免空值 2 2 text类型优化 三 索引优化 3 1 索引分类
  • 怎么解决java.lang.NoClassDefFoundError错误

    怎么解决java lang NoClassDefFoundError错误 ClassNotfoundException VS NoClassDefFoundError ClassNotfoundException时在编译时JVM加载不到类或
  • Revit API 开发 (2): 显示选中的图元(element)

    如何创建一个Revit AddIn 项目参考 Revit API 开发 1 Hello World 重载IExternalCommand的Execute方法 通过UIApplication ActiveUIDocument Selectio
  • 连接数据库时,出现报错pymysql.err.OperationalError: (2003,“Can‘t connect to MySQL server

    问题 连接数据库时 出现报错pymysql err OperationalError 2003 Can t connect to MySQL server on mtisp m dbsit sfcloud local Errno 10109
  • python读写复制文件

    python读写复制文件 1 读取文件 打开文件 fo open D LPE E python python index txt r print 文件名为 fo name line fo read print 读取的内容 s line 关闭
  • Hudi:初识Hudi

    是什么 Hudi是什么 可以说Hudi是一个数据湖或是数据库 但它又不是数据湖或是数据库 笔者理解为Hudi是除开计算引擎的Hive 众所周知 Hive是一个计算框架 但是现在我们更多的是使用Spark基于Hive对HDFS中文件提供的Sc
  • C++实现在文件中输入26个英文字母

    步骤一 检查文件是否存在 如果不存在就创建文件 步骤二 在文件中输入26个英文字母 首先要了解如何输出26个英文字母 方法如下 include
  • Nginx 配置文件结构解析

    nginx配置文件路径 不同安装方式 nginx的文件存放路径也有所不同 源码安装配置文件路径 在安装目录下的conf目录下 比如我的安装目录是 usr local nginx 那么他的配置文件就在 usr local nginx conf
  • 【Unity & Mecanim】Avatar基础

    什么是 Mecanim Mecanim 是集成到 Unity 中的动画软件的名称 unity集成的动画系统 由于人形骨架在骨骼结构上的相似性 用户可以将动画效果从一个人形骨架映射到另一个人形骨架 从而实现动画重定向功能 除了极少数情况之外
  • python有类似spring_据说比Spring快44倍的web开发框架

    据说比 该框架称为 light 4j 官方网站简介 A fast lightweight and more productive microservices framework 很简单 翻译过来就是 一个快速 轻量级和更高效的微服务框架 为
  • [leetcode]Copy List with Random Pointer

    解题思路1 一个深度的 copy 1 如果只有next 那就好办了 一个挨着一个的copy就好 2 这里有random 最理想的就是 random指哪儿 我们就知道那里对应的copy在哪儿 这个对应 就是map 立刻想到的就是hashmap
  • Go语言实现中序遍历和后序遍历构建二叉树

    思路 1 从后序遍历的数组中找出最后一个值 2 在中序遍历的数组中找到该值的下标 把中序数组分割成两部分 分割点为找到的下标 两部分是除了分割点之外的左右两部分 3 再把后序遍历的数组分割成左右两部分 分割点的下标为2步骤找到的下标 左部分
  • js全屏,模拟F11

    function launchFullscreen element if element requestFullscreencreen element requestFullScreen else if element mozRequest
  • 使用RedisTemplate访问Redis数据结构

    Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射 这5种数据结构类型分别为String 字符串 List 列表 Set 集合 Hash 散列 和 Zset 有序集合 下面来对这5种数据结构类型作简单的介绍 结
  • vs下载安装太慢的问题解决

    悔恨把当初 下载的vs给卸载了 如今下载80kb s折磨人 今天花了十来分钟终于知道怎么加快速度了 网上看了很多资料 最后整合如下 1 站长工具用这个网站查询所在的域名 download visualstudio microsoft com
  • Android13源码下载及全编译流程

    目录 一 源码下载 1 1 配置要求 1 1 1 硬件配置要求 1 1 2 软件要求 1 2 下载环境搭建 1 2 1 依赖安装 1 2 2 工具安装 1 2 3 git配置 1 2 4 repo配置 1 3 源码下载 1 3 1 明确下载
  • 光学成像原理之景深(Depth of Field)

    1 概述 先看两个例子 拍摄花 昆虫等照片时 背景拍的比较模糊 突出被拍物 但当拍摄纪念照 风景等照片时 却会把背景拍摄得和被拍对象一样清晰 这两者就是不同景深 前者为浅景深 拍摄聚焦到被拍物上 只能拍清一小段距离 被拍物前后的景色都被虚化