艾里斑大小与像元尺寸的匹配问题

写给自己看的学习记录:

光具有波粒二象性,由此衍生出了几何光学与衍射光学。在光学设计软件中,最常用的判断标准是查看点列图的RMS半径以及MTF图的曲线,这两者分别代表了两种传播性质的评价方式。

在刚接触光学设计时,我误认为评价标准是,将RMS半径优化到小于像元尺寸的一半即可。认为点列图好了,MTF肯定也好了,其实这是不对的,忽视了艾里斑是最小光斑的衍射理论。

后来才了解到,当点列图小于艾里斑时,RMS半径便不再可靠。用zemax软件优化过程中,主要就是衍射与几何相互对抗的过程,当RMS半径值远大于艾里斑半径时,主要看点列图;当点列图满足要求时,尽量把MTF曲线往衍射极限上优化。

艾里斑半径R=1.22λF,由于λ是设计要求,那么F的选取就很重要,艾里斑过大或者过小都会带来问题,一般来说,让艾里斑半径等于所选探测器的像元尺寸。

具体原因在

薇洛的打火机/衍射极限、MTF与相机分辨率(1)这篇博客里有很详细的介绍。

大致如下:

在空间域中,成像系统的光斑是理想图像与点扩散函数h(t)卷积的结果,而调制传递函数MTF就是系统点扩散函数h(t)经过Fourier变换的结果。

MTF是一个频域的概念,代表不同频率成分对比度的衰减,在光学评价方法中,它的单位是lp/mm,即每毫米/线对,代表每mm范围内,有几个明暗相间的正弦条纹。测试一个光学系统的MTF,就是测试对不同疏密(lp/mm为单位)的条纹的对比度衰减。(lp/mm通常是指像平面上的线对数。)

根据Shannon采样定理,对于频率为f 的信号,我们至少要用2f的频率来采样,才能把它恢复出来。从前面的叙述,我们知道,空间频率一般是用探测器上每毫米线对数来表示的,我们至少需要两个像素来采样它,即两个像素尺寸对应一个线对宽度。这也就是光学设计中奎奈斯特截止频率计算公式的由来,即:

截止频率=1/(2*像元尺寸)

那么回到最初的问题,艾里斑多大才与我们的像元尺寸相匹配,这决定了我们光学设计中F数的选择。

根据瑞利判据,当两个相邻的艾里斑距离为其半径时,这两个艾里斑勉强能够分辨出来。

即一个线对宽度等于艾里斑的半径,在这个频率往上,系统是衍射受限的。哪怕没有任何像差,MTF都很差,细节几乎不可分辨。

即艾里斑直径最大不能超过两个像元尺寸,否则该系统将无意义。

但是在设计中,没必要做的这么极限,另外还要考虑公差对像质的影响。

所以,一般取线对宽度等于艾里斑的直径,即一个像元尺寸等于艾里斑的半径,此时截止频率处衍射极限的MTF值约为0.5,是可以接受的。

 当然艾里斑可以更小,这样截止频率处的MTF值会更高,但是F数太大在光学设计中是件很头疼的事,各种像差带来的影响也很难使MTF接近衍射极限。

毕竟光学设计本身就是一件不断取舍的工作。

所以我们在设计中,常取F数,使得艾里斑半径等于像元尺寸大小即可。

注1:在红外设计中,将点列图优化到艾里斑内并将MTF曲线优化到接近衍射极限即可,不必太关注RMS半径值。

注2:在需求中,F数是有要求的,比如红外常要做到F1.0,反过来即可,即挑选合适的探测器。如果探测器也选定,且像元尺寸很小,那只能BIN了,牺牲分辨率。

注3:原文链接:https://blog.csdn.net/glorydream2015/article/details/44966369

(原文作者的一个例子,懒得打字,直接引用)

对于一个F数为2.8的镜头,假设我们用555nm的黄绿光来成像,像素大小做到多少合适呢?我们取线对宽度等于艾里斑的直径大小作为依据,此时只考虑衍射的话,MTF约有0.5,也还算可以了。一个线对对应两个像素,那么一个像素大小就相当于艾里斑的半径,也就是1.22λF,算出来约为1.9微米。如果固定传感器大小的话,那么它的像素数就是有上限的。到达一个限度,再增加像素数,就会导致像素小于1.9微米,再增加的像素已经提供不了新的信息了。

(批注:即艾里斑半径大于一个像素,像素和像素之间是模糊的,如果BIN的话,其实还是分辨率变少,所以现在市场上的超高像素相机或者手机实在是噱头,以致于只能宣传BIN的好处。)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护

本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一、Service简介:Java.lang.Object ↳Android.content.Context ↳android.content.ContextWrapper ↳android.app.Service Service是应用程序Applicati…

【mmdetection2.0错误】——ModuleNotFoundError: No module named ‘mmdet‘

一开始以为是安装包导入的相对路径的问题,结果鼓捣了一上午都没有用,最后才发现再进行mmdet2.0环境配置的时候忘记编译了 也就是如下语句: python setup.py develop

聊聊分布式事务

事务就是一个会话过程中,对上下文的影响是一致的,要么所有的更改都做了,要么所有的更变都撤销掉。就要么生,要么死。没有半死不死的中间不可预期状态。参考下薛定谔的猫。 事务是为了保障业务数据的完整性和准确性的。分布式事务&…

PLSQL DBMS_DDL.ANALYZE_OBJECT

http://space.itpub.net/11893231/viewspace-683241 本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/11/30/2795775.html,如需转载请自行联系原作者

【深度学习mmdetection错误】——mmdetection 运行报错KeyError:‘ConvWS is already registered in conv layer‘

于是修改以下mmdetection的安装文件: site-packages/mmdet-2.1.0unknown-py3.7-linux-x86_64.egg/mmdet/ops/conv_ws.py" 把 CONV_LAYERS.register_module(ConvWS) 修改为: CONV_LAYERS.register_module(nameConvWS, forceTrue)

ABB RAPID 在 Notepad++ 中语法高亮的实现

ABB RAPID 在 Notepad 中语法高亮的实现 分类: Misc2014-04-08 15:43 145人阅读 评论(0) 收藏 举报notepadNotepad 内置了一个称为 UDL2.0 (User Defined Language) 的引擎,来实现用户自定义语法高亮,使用它,可以定制自己的代码语…

Redis服务器的启动过程分析

转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/127.html?1455808771 本文将通过分析代码来介绍Redis的启动过程,通过查看Redis 的启动脚本,得知Redis的启动时从Redis.c的main方法开始的。Redis启动可以分为以下几个步骤…

MyEclipse运行时自动保存

今天第一次用MyEclipse,我发现我的代码明明修改了,但运行结果发现总是修改前的代码结果。后来发现,是代码修改后必须保存,再点运行。这个功能明显不合适,所以需要更改MyEclipse的配置。红框是修改后的结果。 转载于:ht…

PLSQL中INDEX BY TABLE 的 prior 和 next 操作学习

开始 --INDEX BY Table SET SERVEROUTPUT ON;DECLARETYPE enm_tab_type IS TABLE OFemp.ename%TYPEINDEX BY BINARY_INTEGER;enm_table enm_tab_type; BEGINenm_table(1):1001;enm_table(2):1002;enm_table(3):1003;enm_table(4):1004;enm_table(6):1006;dbms_output.put_line(…

【深度学习torch——error】——“xxx.pt is a zip archive(did you mean to use torch.jit.load()?)

这个问题是在进行权重文件加载进行预测的时候发生的,原因其实就是torch版本不对 我是用的工作站训练使用的是torch1.7.0,然后用自己的电脑进行预测,就报错了,原因就是自己的电脑是torch1.2.0版本的 因为在1.6版本以上的模型改变…

ABB 机器人 IRBP系列转台的一段代码注释

PROC IndexToStn1() //检测变位机状态 并设置要运行到的角度位置 并对不同的GetNextPartAdv返回值情况 进行处理 VAR bool bActive;VAR jointtarget jtCurrent; //声明一个位置变量IF (NOT bInterchCalib1) CalibIntch1; ! reset inpo…

如何写一个bootloader

声明:本文为学习Codeproject文章的个人总结性文章, 原文:http://www.codeproject.com/Articles/664165/Writing-a-boot-loader-in-Assembly-and-C-Part 本人开发环境: 操作系统:Ubuntu 32位(64位的会有push…

定时执行某段程序

有时候我们需要每天 定时的 自动 去执行某段程序,那么这个功能如何实现呢? 经过百度,定时器就可以实现,总结如下: 我用控制台写了一个程序,用来在指定时间内 打印 “我执行了” 上面就是程序的运行结构&…

【error】深度优先搜索TypeError: unhashable type: ‘list‘

查网上的原因是: python字典的key不支持list类型和dict类型,需要转换 但是我没有使用到key,后来仔细查看发现是增加了一个装饰器导致的,functions.lru.cache 把装饰器注释掉即可 # 利用深度搜索进行查找 lru_cache(None) def …

Okhttp 插入缓存拦截器 解析

我们在做网络请求的时候,如果网络请求过于频繁而且请求的数据变动不大,或者基本没有变动,这个时候如果没有缓存功能,我们想一下 会浪费掉多少资源,一次请求刷新一次,去请求一次,不但会消耗用户的…

浅谈PROFINET IO通信的实时性

PROFINET由PROFIBUS国际组织(PROFIBUS International,PI)推出,是新一代基于工业以太网技术的自动化总线标准。作为一项战略性的技术创新,PROFINET为自动化通信领域提 供了一个完整的网络解决方案,囊括了诸如…

目标

学习计划以及目标---------------------------------------------------------------------------------------------------------------------------------------------------------------- 正文 在上大学之前,可以说我完全是一个…

今日头条核心技术“个性推荐算法”揭秘

今日头条核心技术“个性推荐算法”揭秘 最近面试华兴资本, 他们比较关注今日头条算法的实现, 今天特转载网上 今日头条算法解密【IT168 评论】互联网给用户带来了大量的信息,满足了用户在信息时代对信息的需求,也使得用户在面对大…

PROFINET及其同步实时通讯分析

1 概述 PROFINET实时以太网是由Profibus International(PI)组织提出的基于以太网的自动化标准。从2004年4月开 始,PI与Interbus Club总线俱乐部联手,负责合作开发与制定标准。PROFINET构成从I/O级直至协调治理级的基于组件的分…

【剑指offer15.二进制中1的个数】——位操作(左移右移等)

目录 二进制的表示 二进制的位操作 应用: 剑指offer15.统计二进制中1的个数(多种方法,位右移操作、与操作等) 转自:https://www.jianshu.com/p/3a31065a8e58 红色为自己添加 我们都知道在计算机中所有的信息最终都…