%Modified off-axis reference beam CGH of Burch%
%读入原始图象
PI=3.14159;
Image=imread('E:\123.jpg');
N=512;
A=zeros(N,N);
B=zeros(N,N);
for I=1:1:256
for J=1:1:256
ImageNum=double(Image(I,J,1));
A(I,J)=ImageNum/255;
B(I,J)=0;
end;end;
figure;
imshow(A);
%为降低全息图的动态范围,乘一随机位相因子%
for I=1:1:N
for J=1:1:N
R=rand(1,1);
B(I,J)=A(I,J)*sin(R*2*PI);
A(I,J)=A(I,J)*cos(R*2*PI);
F(I,J)=A(I,J)+j*B(I,J);
end;end;
%为降低全息图的动态范围,乘一随机位相因子%
%对物函数做二维 FFT 变换%
F=fft2(F);
Max=max(max(abs(F)));
F=F/Max;
A=real(F);
B=imag(F);
%对物函数做二维 FFT 变换%
%定义载波参数
alpha=0.5;
for I=1:1:N
for J=1:1:N
Xcos=(J-1)/127;
A1(I,J)=cos(2*PI*alpha*Xcos);
B1(I,J)=sin(2*PI*alpha*Xcos);
end;end;
%定义载波参数
%全息图数据区
for I=1:1:N
for J=1:1:N
Holodata(I,J)=0.5+0.5*(A(I,J)*A1(I,J)+B(I,J)*B1(I,J));
end;end;
%全息图数据区
%绘制全息图,制作灰阶全息图像,灰度等级 256
M=512;%定义全息图的大小,
Hologram=zeros(M,M);
S=M/N;%定义每个抽样单元大小为 S,S
for I=1:1:N
for J=1:1:N
Xa=(J-1)*S+1;
Xb=J*S;
Ya=(I-1)*S+1;
Yb=I*S;
for Ix=Xa:1:Xb
for Iy=Ya:1:Yb
Hologram(Iy,Ix)=Holodata(I,J);
end;end;
end;end;
Max=max(max(Hologram));
Hologram=Hologram/Max;
figure;
imshow(Hologram);
%绘制全息图,制作灰阶全息图像,灰度等级 256
%再现
Object=fft2(Hologram);
Object=fftshift(Object);
Object=abs(Object);
Object=1000*Object/max(max(Object));
figure;
imshow(Object);