optiland计算光线通过光学系统的光程差 文章目录OPD简介和测试OPD初始化参数核心方法小结OPD简介和测试光程差(Optical Path Difference, OPD)是非常经典的一个概念表示从物点发出、经过入瞳不同位置的光线到达像面参考球面时其实际光程与理想光程之差。在optiland中wavefront中提供了OPD类用于测试光学系统波前的光程差。下面以消色差胶合透镜为例其结构如下图中共针对三个物点进行成像不同颜色的光线代表不同的波长。但在OPD测试中并不会用到模型中的波长信息而是针对重新指定的波长进行计算。550nm的平面波通过上述光学系统后其波前光程差为代码如下importmatplotlib.pyplotaspltfromoptiland.samplesimportCementedAchromat lensCementedAchromat()lens.draw()plt.show()fromoptiland.wavefrontimportOPD opdOPD(lens,field(0,1),wavelength0.65)opd.view()plt.show()在上述代码中OPD在实例化时除了需要输入光学系统之外还要指定视场范围和波长。OPD初始化参数除了Optic类型的光学系统之外【OPD】在初始化时还可以传入以下参数【field】视场范围格式是H x , H y H_x, H_yHx​,Hy​代表的是视场边缘位置。【wavelength】波长除了可以输入以微米为单位的浮点型数值外还可以输入‘primary’表示光学系统的主波长。【num_rings】定义入瞳采样的环数默认为15.【strategy】计算策略可选参数包括chief_ray(以主光线为参考), centroid(以光斑质心为参考)和best_fit(以最佳拟合球面为参考)默认chief_ray.【afocal】布尔型默认为False。当其被设为True时使用平面参考几何False 时使用球面参考几何。【remove_tilt】布尔型是否在计算结果中自动移除“倾斜 (Tilt)”和“活塞(Piston)”项这两项通常不影响成像清晰度仅代表参考系的偏移。核心方法在衡量波前光程差时一个最直观的参数就是均方根误差rms。RMS 是衡量光学系统成像质量的核心指标RMS 越小像差越小成像越接近衍射极限。上述系统的RMS值为μ \muμm。opd.rms()# 0.8172024655214613【generate_opd_map】可将将离散的光线采样数据插值为规则的二维网格并返回包含 ‘x’, ‘y’, ‘z’ (即 OPD 值) 的字典方便后续进行图像处理或导出据此可绘制三维波前图代码如下opdMapopd.generate_opd_map()axplt.subplot(projection3d)ax.plot_surface(opdMap[x],opdMap[y],opdMap[z])plt.show()【fit_and_remove_tilt】是个静态方法用于数据去趋势。使用加权最小二乘法从原始 OPD 数据中拟合并移除Piston(整体平移)项和Tilt波前倾斜)项。这在提取高阶像差如 Zernike 多项式前是标准预处理步骤。小结本文介绍了光程差(OPD)的概念及其在光学系统中的测试方法。以消色差胶合透镜为例展示了使用Python库optiland计算OPD的过程包括系统建模、参数设置和结果可视化。重点讲解了OPD类的初始化参数视场、波长、采样策略等及其核心功能RMS误差计算、波前图生成和倾斜项去除。通过代码示例演示了如何获取系统的波前光程差分布并分析成像质量为光学系统像差评估提供了实用工具。这些方法能有效评估光学系统的成像性能判断其是否接近衍射极限。