📄 ge__sphere.m
字号:
%菲涅耳全息图的生成与重现
clear all;clc;
cm=0.01;um=1e-6;
M=512;N=512; %全息图分辨率
z=0.30; %菲涅尔传输距离
lambda=0.63*um; %波长
k=2*pi/lambda; %波数
hx=0.5*cm;hy=0.5*cm; %全息图大小
dhx=hx/M;dhy=hy/N; %全息图各方向增量
x=dhx.*(ones(N,1)*[-M/2:M/2-1]);
y=(dhy.*(ones(N,1)*[-M/2:M/2-1]))';
pic=imread('E256.bmp');
figure;imshow(pic); %原始图
f0=zeros(N,1)*[1:M];
f0(129:384,129:384)=pic; %扩充图像
dx0=lambda*z/(M*dhx);
dy0=lambda*z/(N*dhy); %物体采样间隔
x0=ones(N,1)*[-M/2:M/2-1]*dx0;
y0=[-N/2:N/2-1]'*ones(1,M)*dy0; %Input f0 is in natural order
g=f0.*exp(i*0.5*k*(x0.^2+y0.^2)/z); %First phase factor
G=fftshift(fft2(fftshift(f0))); %Fourier transform
f1=G./(i*lambda*z);
du=1./(M*dx0);
dv=1./(N*dy0);
dx1=lambda*z*du;
dy1=lambda*z*dv;
x1=ones(N,1)*[-M/2:M/2-1]*dx1;
y1=[-N/2:N/2-1]'*ones(1,M)*dy1; %Baseline for output
yo=2.0*cm; %参考光位置
A=1;
ur=A*exp(i*0.5*k*(x1.^2+y1.^2+2*yo*y1)/z); %球面参考光的复波函数
h=A*conj(f1).*exp(j*2*pi*yo*dy1);
H=abs(f1).^2+abs(ur).^2+h+conj(h); %全息图
HH=mat2gray(H);
figure;imshow(HH); %显示全息图
%
fh=h;
%a=0.002;b=0.3;
%rp1=pure(rp1,a,b,x1,y1); %消除零级和共轭像
[f2,dx2,dy2,x2,y2] = fresnelf(fh,N,N,dx1,dy1,z,lambda);
f2=abs(f2).^2;
f2=mat2gray(f2);
figure;imshow(f2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -