在光学设计中,像元尺寸、探测器阵列、焦距与视场角等几何关系,是每一位光学设计师都会频繁使用的基础计算。这些参数不仅在系统方案论证阶段至关重要,在镜头选型、探测器匹配、系统集成乃至标定环节中也被反复用到。

然而,尽管这些计算公式相对简单,手工计算过程仍然繁琐、容易出错,且难以快速对比多组参数结果。对于科研人员、工程师乃至教学用户来说,缺乏一个可视化、可交互的轻量级工具,往往意味着需要频繁地打开计算器、查表、甚至手写推导。基于这种普遍需求,我们制作了这一款Matlab光学计算小工具。

之晓光学一直致力于搭建光学一站式平台,让光学设计与分析更高效、更智能。我们希望通过开发一系列实用的小型计算与仿真程序,为光学工程师、科研人员和爱好者提供即开即用的辅助工具。

这次开发的小工具它覆盖了视场角计算、焦距计算与角度弧度转换等常用的几类光学计算任务,让使用者能够快速、准确、直观地得到结果。

一、功能及原理介绍

功能一:根据焦距计算视场角

此功能模块的核心任务是根据用户输入的传感器参数(水平像素数、垂直像素数、像元大小)和镜头焦距,精确计算出光学系统在水平、垂直和对角线三个方向上的视场角。视场角是衡量光学系统能够捕捉到的场景范围的关键指标,通常以角度表示。一个较大的视场角意味着更宽广的视野,而较小的视场角则对应于更窄、更放大的视野。在进行视场角计算之前,必须首先确定图像传感器的物理尺寸。传感器的尺寸直接决定了在给定焦距下能够成像的范围。用户输入的参数通常包括传感器的水平像素数、垂直像素数和单个像元的尺寸(Ps,单位为微米)。传感器的物理尺寸可以通过将这些参数相乘得到。具体计算公式如下:

图片

在获得传感器的物理尺寸后,可以利用其与焦距(f)的关系来计算视场角。视场角的计算基于理想针孔相机模型,其中光线从物体通过镜头中心(光学中心)直线传播到传感器上。视场角是传感器边缘到镜头中心连线与光轴之间的夹角的两倍。这个关系可以通过反正切函数(arctan)来描述。

具体的计算公式如下,其中焦距的单位需要与传感器尺寸的单位保持一致(为毫米):

图片

功能二:根据视场角计算焦距

此功能模块与功能一相反,它根据用户期望的视场角和已知的传感器参数,反向计算出所需的光学系统焦距。该功能的实现同样基于针孔相机模型,通过对视场角公式的变形来求解焦距。

在光学系统中,视场角可以分为物方视场角和像方视场角。物方视场角是指从镜头中心看,物方空间中被系统能够成像的最大范围所张的角度。而像方视场角则是指从镜头中心看,像方空间(即对于传感器平面)所张的角度。在理想光学系统中,物方视场角和像方视场角是相互关联的,并且可以通过系统的放大倍率进行转换。

在本功能模块中,请求用户输入的视场角指的是像方对角线视场角。

基于上述假设,我们可以将功能一的视场角计算公式进行变形,以求解焦距(f)。以对角线视场为例,使用对角线视场角和对角线传感器尺寸进行计算。

图片

功能三:角度与弧度转换

此功能模块提供了一个独立的、双向的角度与弧度转换工具。在光学计算、数学分析和编程中,角度和弧度是两种常用的角度度量单位。角度(degree)是我们日常生活中最常用的单位,一个完整的圆为360度。而弧度(radian)是国际单位制中的标准单位,定义为弧长等于半径的圆心角,一个完整的圆为2π 弧度。在涉及三角函数的计算中,大多数编程语言和数学库(包括Matlab)默认使用弧度作为输入单位。因此,一个便捷的转换工具对于避免计算错误和提高工作效率至关重要。

将角度转换为弧度的公式非常直接,基于两者之间的比例关系:

图片

二、案例展示

下图为小工具运行界面,分为三个独立的功能分区。

图片

假设我们有一个工业相机,其传感器规格和所配镜头参数如下:水平像素数: 1920、垂直像素数: 1080、像元大小: 3.45 微米 (μm)、焦距: 16 毫米 (mm)。在工具的“视场角计算”选项卡中,将上述数值分别输入到对应的编辑字段中。即可得到水平、垂直、对角的视场角大小。

图片

我们利用 Matlab 开发的这款光学计算小工具,围绕光学系统中最常用、最基础却又最关键的三个计算任务——视场角计算、焦距反算与角度弧度转换,实现了高效、直观、可交互的功能整合。

完整源代码和小程序已同步到我们的知识星球,想要获取的朋友可以在那里查看。