📄 fresnell.asv
字号:
%%
function main()
clear;
clc;
p1 = double(imread('E256.bmp','bmp'));
figure;
subplot(2,2,1);
imshow(p1);
title('Original image');
[N,M] = size(p1);
cm=1e-2;
um=1e-6;
z=0.1;
w=0.63*um;
k=2*pi/w;
hx=0.6*cm;
hy=0*cm;
dhx=hx/M;
dhy=hy/N;
%%
% x=dhx.*(ones(N,1)*[-M/2:M/2-1]);
% y=(dhy.*(ones(M,1)*[-N/2:N/2-1]))';
[f, dx1, dy1, x1, y1] = fresnel(p1, M, N, dhx, dhy, z, w);
subplot(2,2,2);
imshow(abs(f),[]);
title('hologram');
% ur=exp(-j*k*y*sin(pi/6));
% %f1=f+ur;
% f1=f;
% rp1=f1.*conj(ur);
% [f2, dx2, dy2, x2, y2] = fresnel(rp1, M, N, dx1, dy1, z, w);
% f2=abs(f2);
% subplot(2,2,3);
% imshow(f2,[]);
% title('reconstruct image');
end
%%
function [f1,dx1,dy1,x1,y1]= fresnel(f0, M, N, dx0, dy0, z, lambda)
k=2*pi/lambda;
x0=ones(N,1)*[-M/2:M/2-1]*dx0;
y0=[-N/2:N/2-1]'*ones(1,M)*dy0;
g=f0.*exp(j*0.5*k*(x0.^2+y0.^2)/z);
G=fftshift(fft2(g));
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;
f1=G.*exp(i*0.5*k*(x1.^2+y1.^2)/z);
f1=f1./(lambda*z);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -