信息光学专题实验讲义2013.pdf
- 文档编号:14652460
- 上传时间:2023-06-25
- 格式:PDF
- 页数:31
- 大小:518.30KB
信息光学专题实验讲义2013.pdf
《信息光学专题实验讲义2013.pdf》由会员分享,可在线阅读,更多相关《信息光学专题实验讲义2013.pdf(31页珍藏版)》请在冰点文库上搜索。
基于基于Matlab的信息光学专题实验的信息光学专题实验目录目录1基于基于Matlab的数字衍射光学的数字衍射光学-012计算全息实验计算全息实验-093数字全息实验数字全息实验-184空间频谱与空间滤波实验空间频谱与空间滤波实验-23国承山国承山山东师范大学物理与电子科学学院山东师范大学物理与电子科学学院2010年年4月月11基于基于Matlab的数字衍射光学的数字衍射光学1.1、实验目的和内容、实验目的和内容初步学习Matlab的使用。
学会用Matlab模拟光学衍射过程。
具体实验内容:
(1).Matlab的基本使用方法;
(2)用Matlab模拟研究光在自由空间的衍射过程;(3);比较不同模拟算法的差别和适用条件。
1.2、实验原理、实验原理1.2.1光波衍射的数学模型:
光波衍射的数学模型:
(1)基于球面波叠加的衍射计算方法点扩展函数法基于球面波叠加的衍射计算方法点扩展函数法图1基于球面波叠加的衍射计算模型根据惠更斯原理,入射波面可以分解成一系列具有定向传播特性的次波源,衍射光场就是这些次波源所发球面波在衍射空间的线性叠加,如图1所示。
理论分析表明,如果输入平面上光场的复振幅分布为00(,)uxy,则该光场在距离为z的观察屏上的衍射光场的复振幅分布(,)zuxy可表示成下列积分形式:
222000000000000exp()()1(,)(,)exp()(,)(,)zzikzxxyyuxyuxydxdyizikzuxyhxxyydxdyiz+=,
(1)其中22(,)exp2zikhxyxyz=+,
(2)称为自由空间衍射的次波函数或点扩展函数;2/k=,为入射光波的波长。
公式
(1)通常称为菲涅耳衍射积分公式。
对
(1)进行数值计算时,常常采用以下的傅立叶变换算法,即exp()(,)(,)(,)zikzumxnyxyumxnyhmxnyiz=IDFTDFTDFT,(3)其中x和y为入射平面上空间坐标的抽样间隔,DFT和IDFT分别表示离散傅立叶积分和离散逆傅立叶积分。
(2)基于平面波叠加的衍射计算方法传递函数法)基于平面波叠加的衍射计算方法传递函数法根据付立叶光学理论,一个光学系统输入面上的任意二维复振幅光场00(,)uxy还可表示为若干具有不同空间频率的二维简谐光场(与具有不同传播方向的平面波相对应)的线性迭加,即:
20000(,)(,)exp2()uxyUjxydd=+,(4)其中,000000(,)(,)exp2()Uuxyjxydxdy=+,(5)称为入射光场复振幅函数的空间频谱,其中空间频率(,)与相应平面波的传播方向余弦有以下对应关系:
coscoscos,=。
(6)图2基于平面波叠加的衍射计算模型由于每个简谐平面波在自由空间的传播过程中始终保持其简谐平面波的形式,只是随着传播距离z的增加多了一个与平面波的空间频率和传播距离有关的相位因子。
该相位因子具有以下形式222222222214()exp2exp()exp4()izikzkk+=+,(7)通常称为自由空间衍射的传递函数。
对(4)式中的每个空间频率成分增加一个(7)式所示的传递函数后再积分就可得到传播距离z处的衍射光场(,)zuxy,即2221(,)(,)exp2exp2()zuxyUizjxydd=+。
(8)(8)式给出了计算衍射光场的另一途径。
计算过程如图2所示:
先对入射光场做傅立叶变换得到其空间频谱,将得到的空间频谱与(7)式所示的传递函数相承后再做逆傅立叶变换就得到距离z处的衍射光场的复振幅分布。
具体的数值计算公式如下:
(,)(,)(,)oiumxnyIDFTDFTumxnyHpq=,(9)ObservationObservation()()()2221,0XYjzffXyeHff=()(),;0,0xyAffUxy=F()(),;,xyAffzUxyz=F()()(),;,;0,XYXYXYAffzAffHff=()()1,;,;XYUxyzAffz=F3其中,其中(x,y)和(,)分别为入射平面上空间坐标的抽样间隔和空间频谱面上空间频率坐标的抽样间隔,在离散傅立叶变换计算中两者须满足以下关系,11,MxNy=,(10)其中,M和N为分别为输入光场在x和y方向的抽样点数。
(3)算法比较)算法比较图3模拟自由空间光波衍射的算法流程图上述二种算计算方法虽然从原理上看并没有什么本质差别,但在实际计算中却具有截然不同的适用范围。
这主要是因为存在一个其相位因子与衍射距离有关的抽样函数,并且不同的计算方法所对应的抽样函数的最大局域空间频率是不同的。
根据一般相位因子的局域空间频率的下列定义:
()1,2lxyy=,()1,2lxyx=,(11)点扩展函数抽样法所对应的与衍射距离有关的抽样函数的局域空间频率可近似表示为rect2lxxzL=,rect2lyyzL=;(12)这里,我们假设输入面的抽样区域为一个边长为L的正方形区域,且x方向和y方向的抽样间隔相等。
其上的最大局域空间频率为:
lmlmLBz=。
(13)再根据抽样定理的要求,为了确保从离散抽样函数中能够准确恢复被抽样的连续函数,抽样间隔须满足以下条件:
122zxyBL=。
(14)由此,就可推出点扩展函数抽样法的适用条件为:
22XCxLMxzZ=。
(15)其中M为沿x(或y)方向的抽样点数。
4而对于传递函数抽样法,类似的分析可以证明,其适用范围为:
22CMxMxzZL=。
(16)由(15)式和(16)式可见,对上述抽样算法,存在一个可以作为适用判据的特征距离Zc。
当衍射距离z小于等于Zc时,应采用传递函数抽样算法;而当衍射距离z大于Zc时,采用点扩展函数抽样法则更为合适。
图3所示是1.2.2基于基于Matlab的计算机模拟的计算机模拟MATLAB是由美国MathWorks公司推出的用于数值计算和图形处理的应用软件,它除了具备卓越的数值计算能力外,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似。
故用MATLAB来解算问题要比用C、FORTRAN等语言简捷得多。
MATLAB是国际公认的优秀科学计算和模拟软件之一。
图4Matlab6.5的程序界面图4所示是启动Matlab6.5后出现的Matlab程序介面。
它主要包括以下几部分:
命令窗口命令窗口(CommandWindow)、历史命令窗口历史命令窗口(CommandHistory)、当前目录窗口当前目录窗口(CurrentDirectory)、工作空间窗口工作空间窗口(Workspace)和下拉菜单下拉菜单等。
Matlab的初级使用非常简单。
只要在命令窗口(CommandWindow)中输入符合Matlab语法规则的指令语句,然后按回车健(Enter),Matlab就会立即执行该指令并在命令窗口输出计算结果。
为了加快计算过程,避免一些中间计算过程和数据的不必要输出,可在相应语句后以分号(;)结尾。
通过在命令窗口逐行输入的方式进行计算虽然简单,但并不实用,特别是对于过程比较复杂和需要较长程序的情况。
实际上比较常用的方法是在Matlab的文本编辑工具中将程序逐行输入并保存到一个扩展名为m的文本文件中。
这样,只需在Matlab的命令窗口中键入该文件名(不含扩展名),MATLAB就会自动执行该M文件中的各条语句,实现整个计算过程。
MATLAB的M文件大致分为两类:
脚本M文件(ScriptM-files)和函数M文件(functionM-files),它们均是由普通的ASCII码构成的文本文件。
脚本M文件就是一个包含一系列Matlab语句的文本文件,通过在Matlab命令窗口运行文件名,就可使文件中的语句得到顺序执行,和在命令窗口逐行输入并运行的结果是一样的。
程序运行中的数据都保存在当前工作空间。
函数M文件是一种实现Matlab函数功能的文本文件。
函数M文件的第一行必须是由function语句引导的函数定义行,其基本格式如下:
function返回变量列表=函数名(输入变量列表)%注释说明语句段命令窗口历史命令窗口当前目录窗口程序运行空间菜单5输入、返回变量格式的检测语句函数体语句保存函数M文件时所用的文件名(不包含扩展名m)必须与定义语句中的函数名相同。
函数M文件有自己的局域工作空间,只能通过输入变量列表接受外部变量,通过返回变量列表输出内部变量。
函数M文件格式是MATLAB程序设计的主流。
通常脚本M文件也设计成函数M文件的格式。
函数M文件的输入和返回变量的实际个数分别由nargin和nargout两个MATLAB保留变量来给出,只要进入该函数,MATLAB就将自动生成这两个变量,不论您是否直接使用这两个变量。
返回变量如果多于1个,则应该用方括号将它们括起来,否则可以省去方括号。
不同的输入变量和返回变量之间用逗号来分割。
注释语句段的每行语句都应该由百分号%引导,百分号后面的内容不执行,只起注释作用。
用户采用help命令则可以显示出来注释语句段的内容。
此外,正规的变量个数检测也是必要的。
如果输入或返回变量格式不正确,则应该给出相应的提示。
例题1、设计一个生成圆孔衍射屏透过率函数抽样阵列的脚本M文件并调试运行。
圆孔衍射屏参数:
阵列抽样数MN512512,圆孔直径d128像素。
%DO_Example1_cyl.m%GenerateadiffractivescreenwithacircularholeM=512;N=512;%Samplingnumberd=128;%Diameteroftheholex,y=meshgrid(-M/2:
M/2-1,-N/2:
N/2-1);r=sqrt(x.*x+y.*y);z=zeros(size(r);z(rd/2)=1.0;z(r=d/2)=0.5;imshow(z);%Displayonthecomputerscreen%例题2、设计一个产生圆孔(又称为柱形函数)的函数M文件。
给出一个通过调用该函数M文件产生双孔衍射屏的实例。
functionz=cyl(x,y,d)%CYLSampledaperiodiccylindricalstep.%CYL(X,Y)generatessamplesofacontinuous,aperiodic,%unity-heightcylinderatthepointsspecifiedinarray(X,Y)%aboutX=Y=0.Bydefault,thecylinderhasdiameter1.%CYL(X,Y)isacylinderofheight1anddiameter1%CYL(X,Y,D)isacylinderofdiameterd%error(nargchk(2,3,nargin);ifnargin3,d=1;endr=sqrt(x.*x+y.*y);z=zeros(size(r);z(rZc%-Convolutionalgorithm-x,y=meshgrid(-dx*(M/2-1):
dx:
dx*M/2,-dy*(N/2-1):
dy:
dy*N/2);SphFunct=(1/(i*Lamda*Zd)*exp(i*2.0*pi*Zd/Lamda)*exp(i*pi*(x.2+y.2)/(Lamda*Zd);%球面波函数Object_F=fftshift(fft2(fftshift(Object);%输入物体的傅立叶变换SphFunct_F=fftshift(fft2(fftshift(SphFunct);%球面波函数的傅立叶变换DiffractZ=(dx*dy)*fftshift(ifft2(fftshift(Object_F.*SphFunct_F);%计算衍射光场%else%-AngleFrequencyalgorithm-du=1/(M*dx);dv=1/(N*dy);%空间频谱面的抽样间隔u,v=meshgrid(-du*(M/2-1):
du:
du*M/2,-dv*(N/2-1):
dv:
dv*N/2);%空间频率坐标TransFunct=exp(i*2.0*pi*Zd*(1/Lamda)2-u.2-v.2).0.5);%传递函数Object_F=fftshift(fft2(fftshift(Object);%输入物体的傅立叶变换DiffractZ=fftshift(ifft2(fftshift(Object_F.*TransFunct);%计算衍射光场%end%-调用实例:
%-M=512;N=512;d=64;Lamda=0.6328;dx=10.0;dy=10.0;DDist=200.50e+3;%单位:
umx,y=meshgrid(-M/2:
M/2-1,-N/2:
N/2-1);Dscreen=cyl(x-d,y,d)+cyl(x+d,y,d);figure
(1);colormap(gray);imshow(DScreen);FrDiffract=FreeDiffract(DScreen,Lamda,dx,DDist);FrDiffract_I=FrDiffract.*conj(FrDiffract);%计算强度分布figure
(2);imshow(FrDiffract_I,00.5);%显示衍射图样的强度分布。
text_buffer=strcat(Diffractiondistance=,num2str(DDist*1e-3),mm);%显示衍射距离。
8title(text_buffer);%-有关Matlab编程的详细内容可参见附录中的Matlab简介部分或相关书籍。
1.3、实验内容和步骤、实验内容和步骤1提前阅读实验原理部分和附录的Matlab简介。
2点击Matlab图标,进入Matlab工作环境。
3在当前目录设置窗口(CurrentDirectory)将你的实验工作目录(如IOP2007_Matlab)设置成当前目录。
4了解Matlab的帮助系统(在命令窗口直接输入help命令)5通过直接在命令窗口输入语句的方式做一些简单的计算练习。
6打开Matlab的M文件编辑器(从菜单filenewM-file)。
参照上节给出的程序实例,建立一个基于传递函数抽样法计算衍射光场的程序M文件。
调试运行该文件。
8确定一组模拟参数,并根据(15)式计算特征距离Zc。
观察并记录衍射距离分别小于、等于和大于Zc情况下的模拟结果。
9再建立一个基于点扩展函数抽样法计算衍射光场的程序M文件。
10观察并记录衍射距离分别小于、等于和大于Zc情况下的模拟结果。
11(选做1)模拟研究一个环形孔的衍射过程,说明该衍射有什么规律或特点。
分析光轴上的衍射光场的强度随衍射距离变化的规律。
12(选做2)制作一个周期阵列物体,观察并记录该物体在不同距离处的衍射图样,研究周期阵列物体的衍射特性。
特别注意当衍射距离ZmmT2/(m为整数,T为物体周期,为波长)时的衍射特性。
1.4、模拟结果与分析、模拟结果与分析将以上的用Matlab设计的衍射屏及其衍射图样拷贝粘贴到word文档中,并详细记录模拟实验条件和参数。
在此基础上完成本实验的实验报告。
实验报告内容主要应包括:
实验报告内容主要应包括:
1实验题目。
2作者、班级、学号、合作者等信息。
3实验目的。
4实验原理:
简述光衍射数值模拟的基本抽样算法公式。
计算衍射的Matlab程序实例。
5实验结果.6分析和讨论。
7结论。
8参考文献。
参考文献:
参考文献:
1薛定宇,科学运算语言MATLAB5.3程序设计与应用,清华大学出版社,2000,第1版。
2张志涌等,精通MATLAB6.5版,北京航空航天大学出版社,2003,第1版。
3J.W.Goodman,傅立叶光学导论(第三版),电子工业出版社,200692计算全息计算全息计算全息是利用计算机设计制作全息图或衍射光学元件的技术。
从原理上,计算全息和光学全息没有什么本质差别,所不同的是产生全息图的方法。
光学全息是直接利用光的干涉特性,通过物波和一束相干参考波的干涉将物波的振幅和位相信息转化成一幅干涉条纹的强度分布图,即全息图。
光学全息记录的物体必须是实际存在的。
而计算全息则是利用计算机程序对被记录物波的数学描述或离散数据进行处理,形成一种可以光学再现的编码图案,即计算全息图。
他不需要被记录物体的实际存在。
由于计算全息图编码的多样性和波面变换的灵活性,以及近年来计算机技术的飞速发展,计算全息技术已经在三维显示、图像识别、干涉计量、激光扫描、激光束整形等研究领域得到应用。
最近计算全息领域的新进展是利用高分辨位相空间光调制器实现了计算全息图的实时再现,这种实时动态计算全息技术已经在原子光学、光学微操纵、微加工、软物质自组织过程的控制等领域得到成功的应用,显示了计算全息技术的巨大应用发展前景。
计算全息除了其在工业和科学研究方面的应用价值,也是一个非常好的教学工具。
要做好一个计算全息图,既要熟悉衍射光学、光全息学等物理知识,还要了解抽样理论、快速傅里叶变换、调制技术和计算机编程方面的知识。
这些知识对于物理类和光电信息技术类专业的学生和研究人员都是不可缺少的。
2.1实验目的和内容实验目的和内容通过设计制作计算全息图、利用高分辨液晶空间光调制器(LCD)实时再现该计算全息图、观察再现结果,掌握计算全息图的编码原理,加深对光全息原理,光的干涉和衍射特性的认识。
主要实验内容:
(1)学习采用不同的编码方法设计计算全息图;
(2)对设计制作的计算全息图进行进行计算机模拟再现;(3)建立基于液晶空间光调制器的计算全息光学再现光路;记录并分析计算全息图的光学再现结果。
2.2实验原理2.2实验原理本实验以经典的迂回相位型计算全息图设计制作过程为例,介绍计算全息的基本原理。
一般说来,计算全息图的制作大致可分成下述五个步骤:
1.选择物体或波面,给初其数学描述或离散数据。
2.计算物波在全息图面上的光场分布。
3.把上述光场分布编码成全息图的透过率变化。
4.输出:
光学缩版或微加工。
5.光学再现。
图1傅里叶变换计算全息制备与再现过程示意图制作一张傅里叶变换计算全息图的典型流程如图1所示。
对于用高分辨空间光调制器实时再现的情况,上述第4步的照相缩版或微加工步骤可以省去。
下面我们就对迂回相位型计算全息图的制作过程进行详细地介绍。
2.2.1物面和全息图面的抽样物面和全息图面的抽样数字计算机通常只能对离散的数字信号进行处理,并以离散的形式输出。
因此,制作计算全息图的第一步是对物波函数进行抽样。
设待记录的物波函数为光学再现输出编码计算抽样物体离散物函数傅立叶频谱CGH原图CGH再现像10(,)(,)exp(,)fxyaxyixy=,
(1)其傅里叶变换(空间频谱)为(,)(,)exp(,)FuvAuviuv=,
(2)为满足抽样定理(见附录)的要求,物波函数及其空间频谱函数必须是带限函数,即2222(,)0,(,)0,.yxuvfxyxyFuvuv=.(3)在此条件下,根据抽样定理,对物函数及其频谱函数的抽样间隔应为:
11,11,.xyuvuvxy.(4)取(4)式中的等号,抽样单元总数MNxyuv=是相同的。
2.2.2计算计算对于傅里叶变换全息图,全息图上记录的是物波的空间频谱F(u,v),因此必须对物波函数进行离散傅里叶变换。
离散傅里叶变换的公式如下:
222211(,)(,)exp2()NMMNmnjmknFjkfmniMN=+.(5)为了减少运算时间,通常采用快速傅里叶变换(FFT)算法。
计算结果一般为复数:
(,)(,)(,)(,)FFTrifmnFjkFjkiFjk=+,(6)其振幅和位相可分别表示为:
221(,)(,)(,)(,),(,)tan()(,)irirFjkAjkFjkFjkjkFjk=+=.(7)2.2.3编码编码编码的目的就是将计算出的全息图面上的复振幅函数转化成实值函数。
从编码函数构造的角度来说,计算全息技术主要有两大类:
纯计算编码型和光学模拟型。
二者的主要差别是,前者的编码函数是人为构造出来的,后经数学证明和实验验证,可以再现物光。
因此这一类全息图是计算全息术所特有的,没有传统的光学全息图与之对应。
而后者呢,顾名思义,其编码函数是在研究传统光学全息图透过率函数的基础之上构建起来的,可以说是用计算机来模拟光学记录过程绘制全息图。
当然,这不是简单地模拟,而是以原全息图透过率函数为出发点,仔细研究其物理数学本质,进而构造出既便于计算处理又不损失信息的编码函数。
下面首先介绍Lohmann等人提出的迂回相位型计算全息图的编码方法。
1修正离轴干涉型计算全息图修正离轴干涉型计算全息图该方法是光学全息干涉记录的计算机模拟。
设被记录物波在记录平面上的复振幅分布为:
(,)(,)exp(,)OOuxyOxyixy=,(8)参考光在记录平面上的复振幅分布为:
11(,)(,)exp(,)RRuxyRxyixy=.(9)普通光学全息干涉记录的结果就是:
222*(,)|(,)(,)|ROROROROHxyuxyuxyuuuuuu=+=+.(10)直接利用(10)就得到普通的离轴干涉型计算全息图。
但由图2(a)给出的这种计算全息图的空间频谱结构可以看出,由于存在物函数的自相关项(第二项),全息图的有效带宽就不能得到充分利用;并且,参考光的角度也必须足够大,才能够使衍射物光与零级光分开。
在普通光学全息图的记录中,物函数的自相关项(第二项)是无法消除的。
但在计算全息图的设计制作中,我们则完全可以通过修改(10)式来消除不需要的自相关项。
构造如下所示的新的全息函数:
*(,)0.50.25(,)(,)(,)(,)0.51(,)(,)cos(,)(,)ROROROHxyuxyuxyuxyuxyOxyRxyxyxy=+=+。
(11)利用(11)设计的计算全息图就称为修正离轴干涉型计算全息图。
它的空间频谱如图2(b)所示。
显然,记录同样带宽的物函数所需全息图的实际带宽和参考光的载频都大大减小。
(a)(b)图2(a)普通离轴干涉计算全息图的空间频谱;(b)修正干涉计算全息图的空间频谱2Lohmann型二元迂回相位编码型二元迂回相位编码(a)(b)图3(a)光栅衍射示意图;(b)迂回相位编码单元示意一般说来,对于光波的振幅进行编码比较容易,例如可以通过控制全息图上抽样单元的透过率或开孔大小来实现。
但是,对于光场的相位信息进行编码则相对比较困难。
虽然从原理上可以通过改变抽样单元的厚度或折射率来实现相位调制,但实际制作非常困难。
美国科学家Lohmann(1966年)巧妙的利用了不uv自相关项原始像共轭像共轭像原始像dd+dd入射波面衍射波面y,mnLyyxmxnyxWx,mnPx12规则光栅的衍射效应,提出了迂回相位编码方法。
如图3(a)所示,当用一束平面波垂直照明一栅距d恒定的平面光栅时,产生的各级衍射光仍为平面波,等相位面为垂直于相应衍射方向的平面。
根据光栅方程,光栅的任意两条相邻狭缝在第K级衍射方向的光程差为2sin2kdK=,(12)是等相位的。
如果某一点的狭缝
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 光学 专题 实验 讲义 2013