角谱衍射
角谱衍射计算( D − F F T D-FFT D−FFT),即采用两次傅里叶变换,原始公式和( S − F F T S-FFT S−FFT)类似,衍射计算的 过程中,除了物面和衍射面的尺寸关系不一样外,其他与( S − F F T S-FFT S−FFT)类似,角谱衍射计算中物面尺寸和观测面尺寸大小一致。具体的MATLAB程序如下:
clear all
I1=imread('1.jpg');
figure(1);imshow(I1);
f0=double(I1);
[N1,N2]=size(f0);
N=min(N1,N2);
h=0.000632; %波长(mm)
pix=0.00465; %像素宽(mm)
z0=input('重建距离z0=');
L=pix*N; %CCD宽度(mm)
f=zeros(N,N);
Ih(1:N,1:N)=f0(1:N,1:N);
L0=L; %赋值衍射面尺寸,单位:米 %赋值观察屏到衍射面的距离,单位:米
fex=N/L;
kethi=[-fex/2:fex/N:fex/2-fex/N];
nenta=[-fex/2:fex/N:fex/2-fex/N];
[kethi,nenta]=meshgrid(kethi,nenta);
k=2*pi/h;
H=exp(j*k*z0*sqrt(1-(h*kethi).^2+(h*nenta).^2)); %传递函数H
fa=fft2(Ih); %衍射面上光场的傅里叶变换
Fuf=fa.*H; %光场的频谱与传递函数相乘
U=ifft2(Fuf); %在观察屏上的光场分布
I=U.*conj(U); %在观察屏上的光强分布
Gma=max(max(abs(U)));
Gmi=min(min(abs(U)));
p=10;
while p
imshow(abs(U),[Gmi Gma/p]);
p=input('Gma/p,p=10?');
end
figure,imshow(I,[0,max(max(I))]),colormap(gray)
参考书目
[1] 古德曼 ,傅里叶光学导论[M],北京:电子工业出版社,2006,第3版
[2]李俊昌,衍射计算及数字全息[M],北京:科学出版社,2014
[3] 钱晓凡,信息光学数字实验室[M],北京:科学出版社,2014
[4]陈家壁,苏显渝.光学信息技术原理及应用[M].北京:高等教育出版社,2001