当前位置: 首页 > news >正文

optiland绘制光学系统的点列图

文章目录

    • 基本概念
    • 测试
    • 评估指标
    • SpotDiagram

基本概念

点列图是光学系统对物点发出光束在像面上截痕的几何投影,就数学意义来说,是入瞳坐标到像面坐标的非线性映射。设入瞳平面坐标为( x p , y p ) (x_p, y_p)(xp,yp),经光学系统的光线追迹后,光线在像面上的交点坐标为( x i , y i ) (x_i, y_i)(xi,yi),点列图即为该映射函数在离散入瞳采样点上的集合

S = { ( x i ( k ) , y i ( k ) ) ∣ ( x p ( k ) , y p ( k ) ) ∈ Pupil , k = 1 , 2 , ⋯ , N } S=\left\{\left(x_i^{(k)},y_i^{(k)}\right)\bigg\vert \left(x_p^{(k)},y_p^{(k)}\right)\in \text{Pupil}, k=1,2,\cdots,N \right\}S={(xi(k),yi(k))(xp(k),yp(k))Pupil,k=1,2,,N}

其中N NN为追迹光线的总数。点列图的形态直接反映了映射函数的非线性畸变程度,即系统的几何像差。

测试

下面以最简单的消色差胶合透镜为例,其结构如下

图中共针对三个物点进行成像,不同颜色的光线代表不同的波长。这三个点的点列图如下

图中可见,位于光轴上的点偏差很小,几乎在微米量级,随着光线逐渐偏离光轴,点列图就越分散。绘图代码如下。

importmatplotlib.pyplotaspltfromoptiland.samplesimportCementedAchromat lens=CementedAchromat()lens.draw()plt.show()fromoptiland.analysisimportSpotDiagram spot=SpotDiagram(lens)spot.view()plt.show()

评估指标

Optiland 在生成点列图时,会计算两个关键的统计指标来量化成像质量,即均方根半径(RMS Radiius)和几何半径(GEO Radius),二者定义为

R r m s = 1 N ∑ k = 1 N [ ( x i ( k ) − x c ) 2 + ( y i ( k ) − y c ) 2 ] R g e o = max ⁡ k ( x i ( k ) − x c ) 2 + ( y i ( k ) − y c ) 2 \begin{aligned} R_{rms}&=\sqrt{\frac{1}{N}\sum^N_{k=1}\left[ \left(x^{(k)}_i-x_c \right)^2+ \left(y^{(k)}_i-y_c\right)^2 \right]}\\ R_{geo}&=\max_k\sqrt{\left(x^{(k)}_i-x_c \right)^2+ \left(y^{(k)}_i-y_c\right)^2} \end{aligned}RrmsRgeo=N1k=1N[(xi(k)xc)2+(yi(k)yc)2]=kmax(xi(k)xc)2+(yi(k)yc)2

式中x c , y c x_c, y_cxc,yc为所有光线交点坐标的算术平均值,代表光斑能量的几何中心

x c = 1 N ∑ k = 1 N x i ( k ) , y c = 1 N ∑ k = 1 N y i ( k ) x_c=\frac{1}{N}\sum^N_{k=1}x^{(k)}_i,\quad y_c=\frac{1}{N}\sum^N_{k=1}y^{(k)}_ixc=N1k=1Nxi(k),yc=N1k=1Nyi(k)

spot.rms_spot_radius()''' [[np.float64(0.0007160560338966489), np.float64(0.00030044346069136213), np.float64(0.0009093546785235328)], [np.float64(0.0062009419004590465), np.float64(0.006478127436073068), np.float64(0.005863964781384811)], [np.float64(0.013193574022352729), np.float64(0.013478204609735837), np.float64(0.012854624142347826)]] '''spot.geometric_spot_radius()''' [[np.float64(0.0012658074102686746), np.float64(0.0005373629890794854), np.float64(0.0012884677713641153)], [np.float64(0.011884205191984965), np.float64(0.012174297091610109), np.float64(0.011247689194430421)], [np.float64(0.024474576587270702), np.float64(0.02457540430166505), np.float64(0.02356916788532737)]] '''

SpotDiagram

【SpotDiagram】即为optiland中的点列图类,在上面的示例中,只输入了一个optic类型的参数,这也是唯一必须输入的参数,其他参数如下

  • 【fields】指定需要计算点列图的视场,默认为’all’
  • 【wavelengths】指定参与光线追迹的波长,默认为’all’
  • 【num_rings】定义入瞳采样的环数,默认为6,上面的点列图中,边缘处可以很清晰地看到,内外共六圈
  • 【distribution】定义光线在入瞳内的空间分布拓扑,'hexapolar’为六角形极坐标网格,能均匀覆盖圆形入瞳,避免矩形网格在角落的无效采样;'uniform’为均匀笛卡尔网格;‘random’: 随机分布,适用于蒙特卡洛公差分析。
  • 【coordinates】定义点列图坐标系的参考框架,默认’local’,以该视场的主光线或质心为原点;如果选’global’,则以像面的全局坐标系原点为参考点。
  • 【reference】定义计算 RMS 和 GEO 半径时的中心点,默认’chief_ray’,表示以主光线与像面的交点为中心;也可以选’centroid’,表示以光斑的能量质心为中心。
http://www.jsqmd.com/news/1119582/

相关文章:

  • 在petalinux2023.2工程中配置ROS2环境
  • 突破GP限制:E-Hentai下载器的终极解决方案与完整指南
  • Correlation Dimension of Auto-Regressive Large Language Models
  • JavaScript前端框架系列 VS Java后端框架全系列
  • 从GitHub Copilot到企业级审查中枢:构建可审计、可回溯、可问责的AI审查流水线
  • 项目看板同步_agent-project-board-sync
  • Windows版本无损转化升级
  • 从 PHP 到 AI + Golang,程序员自救转型手记(二十):前端点选验证码组件实现
  • Claude Code 100个真实案例 - 用AI做工作流引擎(审批流+可视化流程图)
  • 班级学生平时表现记录 积分抽奖系统源码 全开源
  • Advancing Symbolic Integration in Large Language Models: Beyond Conventional Neurosymbolic AI
  • 找个人开发者快速搭建网站:全流程解决客户建站难题(避坑+高效落地)
  • Claude Code 100个真实案例 - 用AI做数据可视化大屏(ECharts+实时数据)
  • 旋变传感器标定全攻略:从原理到对零实操,工程师一看就会
  • uboot2016(基于IMX6ULL)
  • Facebook“ 一刀流 ”暴力测款,低成本测素材快速起量,黑五、成人、特货卖家必看!
  • 永磁同步电机瞬态场仿真与双闭环控制技术解析
  • RoPE魔法:揭秘大模型位置编码的旋转奥秘
  • 银河麒麟V10新盘挂载与本地Yum源搭建实战
  • Large Language Models as Model Organisms for Human Associative Learning
  • 文心5.0高分低能?真实业务场景下的能力压力测试报告
  • 为什么真实AI工程实践选择GPT-4o而非‘新模型’
  • 第五周学习记录
  • 【Jetson】YOLOv8环境搭建与TensorRT加速部署
  • 云数据库无法连通解决
  • 用 Excel / Python 做快消补货周报:从销量、库存、在途生成动作清单
  • 小学期第三周学习笔记
  • v4l2驱动框架——ctrl_handler
  • PCB阻抗设计实战:基于嘉立创480种叠层模板的4层板50Ω单端线宽计算
  • 在 Simulink 中搭建一个基于 Cuk 拓扑的双向主动均衡电路,并实现精准的闭环控制。