[光路解析] 浅谈光源的远心光路

2023-10-12 13:59

本文主要是介绍[光路解析] 浅谈光源的远心光路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
远心光路是一种专门为了纠正普通光路视差所设计的一种光路,这种光路和普通光路稍有不同,可以在一定物距范围内,令图像放大倍率不会变化,并且可以矫正畸变,目前广泛应用于精密测量中。而非远心光路成像则是近大远小。

对于远心光路的原理,其实可以简单一句话就能说清楚,它就是普通的光学镜头在焦面上加上光阑,即普通光路加小孔成像。
在这里插入图片描述
上图是一种传统的光路,可以看到,相同大小的物体,因为和成像系统的距离不同,成像的大小不同,这就是我们刚才说的视差,也即近大远小问题。而如果把这个系统做成远心光路,则会变成下图。
在这里插入图片描述
可以看到,只是在像方焦平面上加了个光阑,远近两个相同大小的物体就可以成一样大小的像,近大远小的问题也就被消除了。至于像具体的大小,可以根据需要设置像面的远近来进行调节。这种光路因为光线在物方是平行光,所以被称为物方远心光路。

物方远心光路优势在于,像面位置确定之后,放大倍率只和物体大小有关,从而解决了探测的景深问题。而它的劣势在于,像面的位置和放大倍数有直接的关系,所以相机的位置对于测量结果存在很大影响,所以每次使用都需要重新标定放大倍数。
在这里插入图片描述
像方远心光路则和物方远心光路相反,它的光阑是放在物方焦平面上,可以看出这种光路的放大倍数和像面的远近无关,因此相机位置并没有什么影响。

像方远心光路的优势在于,这种设计的放大倍率不会随着像面位置变化,从而解决放大倍率变化问题,像面的照度较为均匀。劣势在于,探测景深会受到系统孔径大小的限制。
在这里插入图片描述
图中这种光路叫做双侧远心光路,这种光路是将光阑放在了光学系统的中间,兼具了物方远心光路和像方远心光路的优点,无论是物体的远近还是相机的远近都不影响放大倍数,因此广泛应用在机器视觉测量监测领域。

双侧远心光路的优势在三点,第一是提高测量的分辨率,第二是稳定放大倍率,第三是加深测量的景深。劣势在于,系统要探测多大的物体,就需要多大的孔径,这就意味着可能要把体积做的很大。其次,由于光路是滤出了大部分的光,只留下能通过光阑的部分,因此如果使用平行度不够高的光源,如自然光源,可能会造成像面的照度不足。

目前,远心光路常常用于检测三维物体,或者图像尺寸和形状准确性非常重要的情况。根据远心光路的原理特征和独特优势,当检测物体遇到以下六种情况下,可以使用远心光路。

1、当需要检测有厚度的物体的时候(厚度大于0.1倍FOV直径);

2、需要检测不再同一平面的物体的时候;

3、当不清楚物体到镜头的距离究竟是多少时;

4、当需要检测带孔径、三维的物体时;

5、当需要低畸变、图像效果亮度几乎完全一致时;

6、当缺陷只在同一方向平行照明下才能检测到时。

这篇关于[光路解析] 浅谈光源的远心光路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/196319

相关文章

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、