⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fresnell.asv

📁 matlab实现菲涅耳全息图,简单明了
💻 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 + -