计算全息实验二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验注意事项(必读)
1.提前预习,没有弄清楚实验内容者,禁止接触实验仪器。

2.注意激光安全。

绝对不可用眼直视激光束,或借助有聚光性的光学组件观察激光束,以免损伤眼睛。

3.注意用电安全。

He-Ne激光器电源有高压输出,严禁接触电源输出和激光头的输入端,避免触电。

4.注意保持卫生。

严禁用手或其他物品接触所有光学元件(透镜、反射镜、分光镜等)的光学表面;特别是在调整光路中,要避免手指碰到光学表面。

5.光学支架上的调整螺丝,只可微量调整。

过度的调整,不仅损坏器材,且使防震功能大减。

6.实验完成后,将实验所用仪器摆放整齐,清理一下卫生。

实验过程中要切记以上注意事项。

如有违犯,将严重影响你的实验成绩!
计算全息(二)
修正离轴干涉型与相息图编码
计算全息是利用计算机设计制作全息图或衍射光学元件的技术。

从原理上,计算全息和光学全息没有什么本质差别,所不同的是产生全息图的方法。

光学全息是直接利用光的干涉特性,通过物波和一束相干参考波的干涉将物波的振幅和位相信息转化成一幅干涉条纹的强度分布图,即全息图。

光学全息记录的物体必须是实
际存在的。

而计算全息则是利用计算机程序对被记录物波的数学描述或离散数据进行处理,形成一种可以光学再现的编码图案,即计算全息图。

他不需要被记录物体的实际存在。

由于计算全息图编码的多样性和波面变换的灵活性,以及近年来计算机技术的飞速发展,计算全息技术已经在三维显示、图像识别、干涉计量、激光扫描、激光束整形等研究领域得到应用。

最近计算全息领域的新进展是利用高分辨位相空间光调制器实现了计算全息图的实时再现,这种实时动态计算全息技术已经在原子光学、光学微操纵、微加工、软物质自组织过程的控制等领域得到成功的应用,显示了计算全息技术的巨大应用发展前景。

计算全息除了其在工业和科学研究方面的应用价值,也是一个非常好的教学工具。

要做好一个计算全息图,既要熟悉衍射光学、光全息学等物理知识,还要了解抽样理论、快速傅里叶变换、调制技术和计算机编程方面的知识。

这些知识对于物理类和光电信息技术类专业的学生和研究人员都是不可缺少的。

1、实验目的:
1. 通过设计制作一计算全息图、利用高分辨液晶空间光调制器(LCD)实时再现该计算全息图、观察再现结果、并利用CCD 记录再现像等实验内容;
2. 掌握计算全息图的编码原理,加深对光全息原理,光的干涉和衍射特性的认识;训练使用空间滤波器、空间光调制器(LCD)、CCD图像采集等重要的现代光学实验装置进行数字光学实验的能力。

3. 同时初步了解Matlab 语言在光学中的应用。

2、实验原理
本实验以经典的迂回相位型计算全息图设计制作过程为例,介绍计算全息的基本原理。

一般说来,计算全息图的制作大致可分成下述五个步骤:
1.选择物体或波面,给初其数学描述或离散数据。

2.计算物波在全息图面上的光场分布。

3.把上述光场分布编码成全息图的透过率变化。

4.输出:光学缩版或微加工。

5.光学再现。

制作一张傅里叶变换计算全息图的典型流程如图1所示。

对于用高分辨空间光调制器实时再现的情况,上述第4步的照相缩版或微加工步骤可以省去。

下面我们就对迂回相位型计算全息图的制作过程进行详细地介绍。

2.1 物面和全息图面的抽样
数字计算机通常只能对离散的数字信号进行处理,并以离散的形式输出。

因此,制作计算全息图的第一步是对物波函数进行抽样。

设待记录的物波函数为
, (1)
其傅里叶变换(空间频谱)为
, (2)
为满足抽样定理(见附录)的要求,物波函数及其空间频谱函数必须是带限函数,即
. (3)
在此条件下,根据抽样定理,对物函数及其频谱函数的抽样间隔应为:
.
(4)
取(4)式中的等号,抽样单元总数
是相同的。

2.2 计算
对于傅里叶变换全息图,全息图上记录的是物波的空间频谱F(u,v),因此必须对物波函数进行离散傅里叶变换。

离散傅里叶变换的公式如下:
. (5)
为了减少运算时间,通常采用快速傅里叶变换(FFT)算法。

计算结果一般为复数:
, (6)
其振幅和位相可分别表示为:
. (7)
2.3 编码
编码的目的就是将计算出的全息图面上的复振幅函数转化成实值函数。

从编码函数构造的角度来说,计算全息技术主要有两大类:纯计算编码型和光学模拟型。

二者的主要差别是,前者的编码函数是人为构造出来的,后经数学证明和实验验证,可以再现物光。

因此这一类全息图是计算全息术所特有的,没有传统的光学全息图与之对应。

而后者呢,顾名思义,其编码函数是在研究传统光学全息图透过率函数的基础之上构建起来的,可以说是用计算机来模拟光学记录过程绘制全息图。

当然,这不是简单地模拟,而是以原全息图透过率函数为出发点,仔细研究其物理数学本质,进而构造出既便于计算处理又不损失信息的编码函数。

2.3.1修正离轴干涉型计算全息图
该方法是光学全息干涉记录的计算机模拟。

设被记录物波在记录平面上的复振幅分布为:
,(8)
参考光在记录平面上的复振幅分布为:
. (9)普通光学全息干涉记录的结果就是:
. (10)
(a) (b)
图2
直接利用(10)就得到普通的离轴干涉型计算全息图。

但由图2(a)给出的这种计算全息图的空间频谱结构可以看出,由于存在物函数的自相关项(第二项),全息图的有效带宽就不能得到充分利用;并且,参考光的角度也必须足够大,才能够使衍射物光与零级光分开。

在普通光学全息图的记录中,物函数的自相关项(第二项)是无法消除的。

但在计算全息图的设计制作中,我们则完全可以通过修改(10)式来消除不需要的自相关项。

构造如下所示的新的全息函数:。

(11)
利用(11)设计的计算全息图就称为修正离轴干涉型计算全息图。

它的空间频谱如图2(b)所示。

显然,记录同样带宽的物函数所需全息图的实际带宽和参考光的载频都大大减小。

2.3.2相息图编码
全息图面
物面
图3
在很多情况下,被记录物体的强度分布是确定的,但其相位分布则可以是任意的。

如图6所示,我们可以通过一种迭代算法找到一个特殊的物面相位分布,使全息图记录平面上衍射物光的振幅值为常数,即
, (12)
其中A为常数。

此时,物波信息都包含在相位分布中,利用该相位函数设计的全息图就成为相息图。

相息图的制备必须采用纯相位型的记录介质;或采用纯相位型空间光调制器进行光学再现。

2.4 计算全息图的输出
当计算机完成了计算全息图的编码后,下一步就是以适合光学再现的尺寸和方式输出计算全息图。

通常,适合光学再现的计算全息图上每个抽样单元的大小须在微米量级。

这就需要专门的光学缩微照相系统或微光刻系统。

在要求较低的情况下也可以用照相机将显示在计算机屏幕或打印输出的计算全息原图缩拍到高分辨感光胶片上,通过显影定影等处理得到可用于光学再现的计算全息图。

近年来,随着
高分辨电寻址空间光调制器的发展,像元尺寸在微米量级,像素数超过1百万的振幅型或相位型空间光调制器已经完全实用化。

因此也可以利用这种空间光调制器代替全息干板,实现计算全息图的实时输出和再现。

计算全息图实时输出和再现技术的进展为计算全息图的更广泛应用提供了可能和新的空间。

本实验中,我们就是利用一高分辨电寻址液晶空间光调制器来实现计算全息图的实时输出和再现。

2.5 光学再现
迂回相位型计算全息图的光学再现方法与普通光学全息图类似。

图5所示为用液晶光调制器(LCD)实时输出的计算全息图的光学再现光路示意图。

用准直激光束垂直照明LCD,在傅里叶变换透镜L1的后焦面上就可观察到傅里叶变换型计算全息图的再现结果。

根据迂回位相编码原理,再现象出现在某个衍射级次K上,只有在该衍射方向,全息图才能再现出我们所期望的波前f(x,y)。

为了避免零级项和其他衍射级次对再现像的影响,可在透镜后焦面上用一滤波孔径F将再现像提取出来。

3.实验内容
(1) 阅读实验讲义和有关参考文献,熟悉计算全息的基本原理.
(2) 阅读附录熟悉用Matlab模拟光学衍射过程和制作计算全息图的方法。

(3) 学习实用实验室提供的计算全息编码程序设计制作修正离轴型和相息图型计算全息图。

(4) 具体操作:
● 用电脑中的画图软件,制作一个像素大小为512*512的汉字物体,汉字为自己名字中的任一字(字尽量大一点,占图的80%左右),保存为单色bmp格式,例如guang.bmp。

● 将附录中程序保存在一个文件夹中。

一共四个m文件,单独保存。

附录
7.1是函数文件,必须将文件名保存为CGHrect.m;附录中7.2是修正离轴型编码;附录中7.3是相息图型编码;附录中7.4是模拟计算全息图的再现结果图,注意读入全息图的文件名要对应('***.bmp')。

注意物体的图像***.bmp必须与程序在一个文件夹中。

● 将自己的物体编码成计算全息图,一个修正离轴型计算全息图,一个相息图型计算全息图。

● 分别再现这两种计算全息图,保存再现结果。

物体(本实例中保存的文件名为guang.bmp)
物体的修正离轴编码计算全息图及其再现结果
物体的相息图编码计算全息图及其再现结果
(5) 观察并记录利用计算机程序对设计制作计算全息图进行模拟再现的结果。

(6) 根据图5所示的光路建立并调整计算全息图的光学再现实验装置。

(7) 将编码好的计算全息图分别显示到实验实提供的液晶空间光调制器上,在透射光的聚焦面上放置毛玻璃或观察屏,观察再现结果,记录实验情况和观察结果。

注意: 实验中绝对禁止用手触摸液晶片及光路中的所有光学表面。

(8) 去掉观察屏,用小孔滤波屏提取再现像,通过成像透镜L2用CCD记录再现结果.
4、实验报告要求:
(1) 简述计算全息编码原理.
(2) 给出计算全息编码程序流程图、程序代码及有关设计参数。

(3) 说明实验再现过程,给出再现光路,有关实验参数,实验观察及结果。

(4) 对本实验给出总结、说明和讨论。

5、思考题
(1) 与光学全息照相比较,计算全息有哪些优点?
(2) 如果用倾斜的准直激光束照明计算全息图,再现象的位置有何变化?
(3) 二元振幅编码和灰度级振幅编码计算全息图的再现结果有什么差别?
(4) 用汇聚光照明计算全息图时,观察屏应放在什么位置?
6.参考资料
(1)游明俊编,《信息光学基础实验》,兵器工业出版社,1992,第1版,74-79
(2)苏显渝等,《信息光学》,科学出版社,1999年第一版,159-194
(3)计算全息_Ref3.pdf
(4)M. L. Huebschman, et al, “Dynamic holographic 3-D image projection”, OPTICS EXPRESS, Vol. 11, No. 5, 437(2003)
7、附录----Matlab 程序
7.1 矩形函数:文件名务必保存为CGHrect.m
%-------------------------
function y = CGHrect(t,Tw)
%RECT Sampled aperiodic rectangle generator.
% RECT(T) generates samples of a continuous, aperiodic,
% unity-height rectangle at the points specified in array T, centered
% about T=0. By default, the rectangle has width 1.
%
% RECT(T,W) generates a rectangle of width W.
%
error(nargchk(1,2,nargin));
if nargin<2, Tw=1; end
% Returns unity in interval [-Tw/2,+Tw/2)
t = abs(t);
y = t<Tw/2;
y(find(t==Tw/2)) = 1.0;
%-----------------------------------------------------
7.2 全息图的生成-修正离轴型编码
%--------------------------------------------------------------------
clear
clc
close all
%------------------输入测试物体---------------
Obj=double(imread('guang.bmp'));%读入测试物体
Obj=Obj(:,:,1);
[M,N]=size(Obj);
colormap(gray(256));
imagesc(Obj);
Text_buffer = '测试物体';
title(Text_buffer);
%%-----------------随机相位---------------------------- Phase = 2*pi*rand(M,N);
Obj=abs(Obj).*exp(i*Phase); % 测试物体乘以随机相位.
%-------------修正离轴计算全息编码---------------
Dx=18.0; %um. pixel size
Wl=0.6328; %um. wavelength
Alfa=0.045; %Rad. angle of the Reference beam
K=512;L=512;
if (M~=K)|(N~=L)
Obj=imresize(Obj,[K,L]);
end
ObjExp=zeros(1024,1024);
ObjExp((1024-K)/2+1:(1024+K)/2,(1024-L)/2+1:(1024+L)/2)=Obj;
ObjF=fftshift(fft2(fftshift(ObjExp)));
ObjF=ObjF/max(max(abs(ObjF)));
ObjFAm=abs(ObjF);
Xf=linspace(-511*Dx,512*Dx,1024);
Yf=linspace(-511*Dx,512*Dx,1024);
[X,Y]=meshgrid(Xf,Yf);
% Ref=2*pi*Alfa*X/Wl;
%Hol=0.5*(1.0+ObjFAm.*cos(Ref-angle(ObjF)));
Ref=exp(i*2*pi*Alfa*X/Wl);
Hol=0.5*(1.0+real(Ref).*real(ObjF)+imag(Ref).*imag(ObjF));
%-------------显示计算全息图---------------------------
figure
colormap(gray(256));
% imagesc(Hol(M*K/2-127:M*K/2+128,N*L/2-127:N*L/2+128)); imshow(Hol)
Text_buffer = '计算全息图-修正离轴型';
title(Text_buffer);
%-------------保存计算全息图(.bmp类型)--------------
Choice=menu('保存计算全息图吗?','是','否');
if Choice==1
[Im1,PathName1] = uiputfile('*.bmp','选择 BMP-file');
colormap(gray(256));
imwrite(Hol((512-383):(512+384),:),Im1,'bmp');
end
%------------------------------------------------------------------------------------------------------------------
7.3 全息图的生成-相息图编码
%%---------------------------------------------------------------
clear
clc
close all
%------------------输入测试物体---------------
Obj=double(imread('guang.bmp'));%读入测试物体
Obj=Obj(:,:,1);
[M,N]=size(Obj);
colormap(gray(256));
imagesc(Obj);
Text_buffer = '测试物体';
title(Text_buffer);
%%-----------------随机相位---------------------------- Phase = 2*pi*rand(M,N);
Obj=abs(Obj).*exp(i*Phase); % 测试物体乘以随机相位.
%-------------相息图编码---------------
K=512;L=512;
if (M~=K)|(N~=L)
Obj=imresize(Obj,[K,L]);
end
ObjExp=zeros(1024,1024);
ObjExp((1024-K)/2+1:(1024+K)/2,(1024-L)/2+1:(1024+L)/2)=Obj;
%%
ObjF=fftshift(fft2(fftshift(ObjExp)));
ObjFPh=angle(ObjF);
if min(min(ObjFPh))<0
ObjFPh=ObjFPh-min(min(ObjFPh));
end
Hol=ObjFPh/max(max(ObjFPh));
%-------------显示计算全息图--------------------------- figure
colormap(gray(256));
imshow(Hol)
Text_buffer = '计算全息图-相息图';
title(Text_buffer);
%-------------保存计算全息图(.bmp类型)-------------- Choice=menu('保存计算全息图吗?','是','否');
if Choice==1
[Im1,PathName1] = uiputfile('*.bmp','选择 BMP-file');
colormap(gray(256));
imwrite(Hol((512-383):(512+384),:),Im1,'bmp');
end
%---------------------------------------------------------------------------------------------
7.4 全息图的再现程序
%------------------------------------------------------------------------
clear
clc
close all
Hol=double(imread('HOL.bmp'));%读入测试物体,注意文件名要对应
'HOL.bmp'。

[MK,NL]=size(Hol);
HolRe=fftshift(ifft2(fftshift(Hol)));
HolRe2=HolRe;
HolRe2=abs(HolRe2)/max(max(abs(HolRe2)));
HolRe2=100*HolRe2;
imshow(HolRe2);
Text_buffer = '再现像';
title(Text_buffer);
%Save the CGH in bmp format.
Choice=menu('保存再现结果?','是','否');
if Choice==1
[Im1,PathName1] = uiputfile('*.bmp','选择 BMP-file');
colormap(gray(256));
imwrite(HolRe2,Im1,'bmp');
end
%------------------------------------------------------------------------。

相关文档
最新文档