浅谈Matlab数值计算在傅里叶光学课程教学中的应用
2023-10-12杨慧哲梁永辉刘进万晶
杨慧哲 梁永辉 刘进 万晶
[摘 要] 將Matlab数值计算融入傅里叶光学课程教学中,以光的衍射、透镜成像和传递函数为示例,展现其对教师理论讲授和学生能力培养的助力。
[关 键 词] 傅里叶光学;数值计算;Matlab
[中图分类号] G642 [文献标志码] A [文章编号] 2096-0603(2023)27-0109-04
*通讯作者:杨慧哲(1988—),女,汉族,内蒙古呼和浩特人,博士,讲师,研究方向:自适应光学与图像处理。
傅里叶光学是光学领域中的一个重要分支,主要研究光的传播、成像等现象,以及傅里叶光学方法在这些现象中的应用。傅里叶光学作为光电类专业人才培养计划中的核心课程之一,承接应用光学和物理光学两门光学基础课程,作用是利用物理光学所建立的电磁波理论对应用光学所描述的光学系统与仪器进行定量计算和评估。光学系统的精确建模与定量评估是现代光学系统设计与应用的必备手段,也是光学工程专业必须具备的核心能力之一。傅里叶光学本应成为这一核心能力构建的关键课程,但目前该课程普遍存在教学模式单一、理论推导过多、联系实际不足的问题,导致出现学生能力素质培养较弱的局面。在教学中增加基于Matlab编程语言的数值计算,一方面可以增强复杂理论推导的直观性,便于学生理解。另一方面可以培养学生对光学系统建模的兴趣,通过实际案例的数值仿真建模提高应用理论知识解决实际问题的能力。本文以光在自由空间的衍射(或传输)、光学系统成像和传递函数计算三个示例,浅谈如何将Matlab数值计算应用到傅里叶光学课程教学中。
一、光在自由空间的衍射
光的衍射(传输)是傅里叶光学(波动光学)中的一个重要概念,它在光学中起着至关重要的作用。衍射现象的研究帮助我们理解光的波动性质,以及光的传播和干涉行为。在光线通过物体或孔径时,光波会在边缘或物体表面发生弯曲和散射,从而产生衍射现象。衍射图样的特征取决于多个因素,其中最重要的是光的波长和衍射孔径或物体的尺寸。当衍射孔径或物体的尺寸与光的波长相当或大于波长时,衍射现象更为显著。在这种情况下,衍射图样可能包括中央亮斑(中央最亮的区域)和一系列暗纹或衍射环(辐射出的环状模式)。衍射现象在许多实际应用中发挥着重要作用,例如衍射光栅,通过将入射光分解为不同的波长来实现分光效果。此外,激光衍射、光学信息处理和干涉测量等领域也利用了衍射现象的原理和方法。了解和研究光的衍射不仅对光学科学家和研究人员而言至关重要,对工程师和设计师来说也是必要的。通过理解衍射现象,我们可以更好地设计光学元件和系统,优化其性能并满足特定需求。
利用Matlab数值仿真来模拟光的衍射,在傅里叶光学课程教学中具有重要的作用。通过数值仿真,我们可以研究和预测不同光场下不同孔径的衍射图样。例如,当光波通过一个狭缝或圆孔时,可以模拟衍射图样的形成,包括中央亮斑和衍射环的分布。同时,通过调整光波的波长、孔径尺寸、入射角度等参数,可以观察到不同衍射图样的变化规律。光的衍射数值仿真还可以用于设计和优化光学器件,例如,在光学显微镜中,通过数值仿真可以预测和优化系统的分辨率和图像质量。在衍射光栅设计中,通过数值仿真可以确定最佳的衍射光栅参数,以实现所需的光谱分散效果。此外,光的衍射数值仿真也有助于理论与实验的比较和验证。通过将仿真结果与实际测量数据进行对比,可以验证和修正理论模型,进一步增强衍射理论的准确性和适用性。
傅里叶光学课程的理论基石是基于波动光学的标量衍射方程,在此基础上通过对传输距离r01的近似,得到两种最常见的衍射形式:菲涅尔衍射和夫琅禾费衍射。其中,夫琅禾费衍射可以看作是菲涅尔衍射在远距离传输条件下的特殊形式,其本质仍可以用菲涅尔衍射方程描述。由此,可以利用菲涅尔衍射公式来描述全部自由空间的光的衍射问题。图1给出了利用菲涅尔衍射公式计算不同孔径、不同距离下衍射图样的仿真GUI界面。该界面可以设置基本参数,如光瞳大小D、采样像素数N等,通过给定起始距离d1和终止距离d2可以动态显示在传输距离范围内(d1到d2之间)衍射光斑的形态变化。该程序支持对不同类型孔径的仿真,包括常规的圆孔或方孔,也可以自定义选择任意复杂孔径。在“显示”选项中,可以选择二维显示或显示x轴截面图,同时支持对观察屏尺寸的选择,如选择auto scale则代表观察平面满足?驻L=λd/L的完全采样条件。该程序可以配合教材中的理论推导来演示方孔、圆孔、正弦振幅光栅和正弦相位光栅的菲涅尔和夫琅禾费衍射,同时将更为复杂的孔径形态(如多边形、望远镜中心遮挡结构等)的衍射作为扩展内容,展现数值计算的强大能力和应用价值。
二、光学系统成像
透镜成像是傅里叶光学的核心内容,其利用波动光学成像原理来解释光的传播和成像过程的原理。在波动光学中,光的传播和成像不再被简化为几何光学中的直线传播,而是考虑光的波动性质和衍射效应。傅里叶光学课程利用波动光学理论对成像系统进行定量描述,提供了对光学系统的定量分析和优化方法。通过波动光学的理论和数学模型,可以对成像系统的光学参数、光源特性、传感器设计等进行优化,这有助于改善成像系统的性能,提高图像的质量和分辨率。
通过基于波动光学的理论推导,可以得到成像系统的卷积模型:即像场等于理想像与系统点扩散函数(point spread function, PSF)的卷积,其中理想像是几何光学预测的像分布(其实质是坐标缩放的物)。具体而言,基于波动光学成像卷积模型的数字模拟可以分为以下几个步骤。
(1)光波的表示:使用光的场振幅(通常是复数形式)来表示物体上的光波场,其中包含光的振幅和相位信息。(2)点扩散函数计算:PSF描述了光在传播过程中经过光学系统时的影响,对于无像差系统可以表示为光学系统出射光瞳函数的夫琅禾费衍射图样。(3)成像过程:通过卷积运算得到像平面的波场(或强度)分布。
除了采用上述卷积模型,对光学成像系统的定量描述还可以使用衍射追迹方法。衍射追迹(Diffraction Ray Tracing)是一种光学计算方法,用于模拟光在衍射效应下的传播和成像过程。相比于传统的几何光学追迹方法,衍射追迹考虑了光的波动性质,能够更准确地描述光的传播和衍射效应。衍射追迹的基本原理是基于标量衍射方程(一般采用菲涅尔近似),使用数值计算方法,将光场分割为小的区域或像素,并在每个区域内计算光的传播和衍射效应。衍射追迹方法可以定量给出各个平面上的光场分布,而不仅仅局限于卷积模型对应的像平面。
利用数值仿真来模拟傅里叶光学系统成像过程具有重要的理论和实际意义,例如:(1)光学系统设计:数值仿真为光学系统的设计提供了有力的工具。通过调整系统的光学参数、元件布局和配置,可以在仿真中评估不同设计方案的成像性能,这有助于加速设计过程,减少实验和制造成本。(2)性能预测和优化:傅里叶光学成像系统中的衍射效应对成像质量有重要影响,数值仿真可以用于分析和评估不同衍射效应对系统的影响。例如,可以研究衍射对分辨率、光学畸变、点扩散函数等的影响,并探索如何通过系统设计和优化来减小衍射引起的不良影响。(3)成像算法开发:数值仿真为新成像算法的开发提供了平台。通过模拟光场传播和成像过程,可以测试和验证新的算法,如超分辨成像算法、相位恢复算法等,这有助于推动成像技术的进步和创新。
在教学中采用成像系统数值仿真GUI,通过模拟光的传播和成像过程,学生可以直观地观察和理解光学现象,如衍射、干涉、成像畸变等,这有助于加深对光学原理的理解,使学生更好地掌握光学的基本概念和原理。同时傅里叶光学成像系统的数值仿真涉及光学、数值计算和编程等多个学科领域的知识,通过在教学中引入数值仿真,可以促进不同学科之间的交叉应用和综合学习。学生可以学习和应用光学原理、数值计算方法和编程技巧,提升他们的综合能力。
图2给出了透镜成像仿真界面。图示为单透镜的成像系统,实际上多透镜组成的一般成像系统可以等效为一个黑匣子,两个端面分别为入瞳和出瞳,系统的衍射效应由出瞳的尺寸限制引起,因此该程序对任意成像系统都是成立的。首先程序导入物体的图片,并对物体进行参数设置,包括其尺寸L,采用像素数N。光学系统的参数设置包括光瞳大小D、物距d1、像距d2、焦距f和照明波长。在模拟方法上,该程序采用了两种方法,一种是基于菲涅爾衍射方程的衍射追迹法,通过面到面的传播给出不同观察面的光场分布。另一种是基于频域传递函数的方法,根据空间相干和非相干卷积模型,计算两种情况下满足几何光学物像关系的像面上的光强分布。在课堂中可以给学生展示采用不同模拟方法给出的光强分布是一致的。该仿真同时支持对空间滤波和像差影响的模拟。
在课堂教学中,上述仿真可以穿插在多个章节的讲述中,如透镜的傅里叶变换性质,该节通过波动光学分析给出透镜的后焦面是输入函数的傅里叶频谱面这一重要结论。基于这一结论,可以通过对后焦面光强进行不同操作实现不同形式的滤波。该软件采用衍射追迹模拟方法时,可以在透镜后焦面施加滤波函数,从而实现对物的滤波操作。在学习像差对成像系统影响时,该程序支持添加不同种类的像差,可以让学生直观感受到像差对系统的降质作用(如文末图3所示),也可配合教材中的聚焦误差示例加深理解,体会复杂的理论运算可以用编程快速实现。结合仿真程序还可以进一步开展对像差的讨论以及像差校正的应用拓展,如球面像差校正可以使用非球面透镜或复合透镜系统,使光线在透镜表面上的弯曲程度与球面像差相互抵消,也可以使用多个透镜元件组成的透镜组来校正球面像差。对于更高阶像差,如大气等引起的波前畸变,需要采用高分辨率实时校正系统,如自适应光学系统(Adaptive Optics, AO)。自适应光学通过实时测量波前畸变并利用补偿装置对其进行校正,以实现高分辨率、清晰度和对比度的成像,广泛应用于天文观测、激光传输、生物成像等领域。通过在授课中引入自适应光学系统等前沿技术,可以开阔学生视野、提升学以致用的能力。
三、传递函数计算
传递函数的引入是傅里叶光学区别于其他光学课程的一个重要方面,因为本课采用的是傅里叶频域分析的方法来研究光学系统的性能,而传递函数就是频域一个最重要的表征函数,直接决定了系统的响应。在傅里叶光学中,传递函数是描述光学系统对点光源响应的频域数学表示,对于相干光学系统称为振幅传递函数,对于非相干光学系统称为光学传输函数(Optical transfer function, OTF)。传递函数可以用于分析光线在光学系统中的传播和成像过程,以及光学系统对输入波前的影响,是光学系统设计、成像分析和图像处理中的重要工具。它提供了一种从频域角度理解光学系统的方法,有助于预测和优化成像质量,并为光学系统的设计和性能评估提供了数学框架。
傅里叶光学传递函数可以通过数值仿真进行计算和分析,具体包括:(1)建立模型:首先需要建立光学系统的数值模型,包括定义光源、物体、光学元件和探测器等组成光学系统的要素,并确定它们之间的位置、形状和光学参数。(2)波前采样:在出射光瞳位置上对波前进行采样,采样的目的是获得波前的相位和振幅信息,用于计算传递函数。(3)计算传递函数:对采样得到的波前进行傅里叶变换,得到系统的点扩散函数,对点扩散函数再求傅里叶变换将其从空域转换到频域,得到传递函数的频域表示。在进行傅里叶光学成像系统传递函数的数值仿真时,需要注意选择适当的数值方法和算法,确保仿真结果的准确性和稳定性。此外,还应考虑波长、采样间距、光学系统的非线性特性等因素,以确保仿真结果与实际系统的行为相符。
图4给出了传递函数仿真界面,该程序可以模拟不同出瞳函数对应的系统的振幅传递函数和光学传递函数(OTF),以及它们对应的点扩散函数(PSF)。OTF的计算一般来说比较复杂,尤其对于复杂的孔径函数,但是利用数值计算方法可以快速得到任意形态光瞳函数的光学系统传递函数,一方面可以让学生感受到数值计算的巨大应用价值,培养编程的兴趣,另一方面可以大大扩展书本的内容,给出更符合实际系统的传递函数。在本成像中也添加了像差的设置,通过选择不同形式的像差可以观察其对传递函数和点扩散函数的影响(见图4)。
四、结束语
针对傅里叶光学课程理论推导复杂、课程难度较大、学生能力培养不足的问题,将Matlab的数值计算融入课程教学中,以光的衍射、透镜成像和传递函数三个仿真为例,一方面可以使枯燥的理论公式更加直观,便于学生理解,另一方面展示出光学建模的重要作用,可以大大拓展教材中光学系统分析范围,培养学生对数值计算和编程的兴趣和能力。
参考文献:
[1][美]Joseph W. Goodman.傅里叶光学导论(第三版)[M].秦克诚,刘培森,陈家璧,等,译.北京:电子工业出版社,2016.
[2]李俊昌,熊秉衡.信息光学教程[M].北京:科学出版社,2017.
[3]苏显渝,李继陶,曹益平,等.信息光学(第二版)[M].北京:科学出版社,2011.
[4]李俊昌.信息数字化时代的信息光学教学[J].云南大学学报,2014,36(S2):103-111.
[5]钱晓凡.信息光学数字实验室[M].北京:科学出版社,2015.