通过角谱法实现数字全息,程序语法没有错误,但就是重现出来的图是黑色一片,不知道什么问题,希望能有能人给我解答!最好能直接给出改进后的程序!!!
clc
clear
I11=(imread('1.bmp25.bmp'));
I1=double(I11(:,:,1));
%figure;imshow(I1,[]);axis on
I21=(imread('1.bmp65.bmp'));
I2=double(I21(:,:,1));
I31=(imread('1.bmp105.bmp'));
I3=double(I31(:,:,1));
I41=(imread('1.bmp145.bmp'));
I4=double(I41(:,:,1));
Ips=(I1+i*I2-I3-i*I4)/4;
%figure;imshow(abs(Ips),[])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ips=(I1+i*I2-I3-i*I4)/4;
Ips=[zeros(79,768);Ips;zeros(113,768)];
L=7.68;
%figure;imshow(abs(Ips),[]);axis on
If=fftshift(fft2(Ips));
kk=768*3;
If1=zeros(kk,kk);
If1(kk/2-768/2+1:kk/2+768/2,kk/2-768/2+1:kk/2+768/2)=If;
II1=ifft2(ifftshift(If1));
%figure;imshow(abs(II1),[]);axis on
lamda=0.6328*10^-3;
k=2*pi/lamda;
a=1.007;
b=1;
zr=60;zo=zr-1.38;
deltax = L/kk;deltay = L/kk;
aa1=linspace(-L/2,L/2,kk);
aa2=linspace(-L/2,L/2,kk);
[x y]=meshgrid(aa1,aa2);
fx = x/(deltax*deltax*kk);fy = y/(deltay*deltay*kk);
H = exp(1i*k*zo*(1-lamda^2*(fx.^2+fy.^2)).^0.5);
R=exp(i*k*(zr.^2+x.^2/a+y.^2/b).^0.5)./(zr.^2+x.^2/a+y.^2/b).^0.5;
O=ifft2((fft2(II1.*R).*H));
figure;imshow((abs(fftshift(O))).^2,[0 4*10^6]);axis on
%figure;plot(1:2048,(abs(fftshift(O(:,1000)))).^2)
角谱 matlab 关于角谱法实现数字全息 - 程序语言 - MATLAB/Mathematica - 小木虫论坛-学术科研互动平台...