資源簡介
N=512;
A=zeros(N,N);
B=zeros(N,N);
for I=1:1:256
J=1:1:256
ImageNum=double(Image(I,J,1));
A(I,J)=ImageNum/255;
B(I,J)=0;
end
end
figure;
imshow(A);
pi=3.1415926;
for I=1:1:N
for J=1:1:N
R=rand(1,1);%生成一個元素在0,1之間均勻分布的隨機矩陣R
B(I,J)=A(I,J)*sin(R*2*pi);%平滑函數(shù)的傅里葉變換譜
A(I,J)=A(I,J)*cos(R*2*pi);
F(I,J)=A(I,J)+j*B(I,J);
end
End%限制振幅的動態(tài)范圍,提高編碼的精度
F=fft2(F);%作二維快速傅里葉變換FFT
Max=max(max(abs(F)));
F=F/Max;
A=real(F);
B=imag(F);
aIpha=0.5;%定義載波參數(shù)aIpha
for I=1:1:N
for J=1:1:N
Xcos=(J-1)/127;
A1(I,J)=cos(2*pi*aIpha*Xcos);
B1(I,J)=sin(2*pi*aIpha*Xcos);
end
end%全息圖數(shù)據(jù)區(qū)
for I=1:1:N
for J=1:1:N
HoIodata(I,J)=0.5+0.5*(A(I,J)*A1(I,J)+B(I,J)*B1(I,J));
end
End
M=512;N=512;%定義全息圖的大小
Hologram=zeros(M,M);
S=M/N;%定義每個抽樣單元大小
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
HoIogram(Iy,Ix)=HoIodata(I,J);
end
end
end
end
Max=max(max(HoIogram));
HoIogram=HoIogram/Max;
figure;
imshow(HoIogram);
%以下是用matlab分別計算函數(shù)各抽樣點的傅里葉變換譜的幅角與模,并對各點的模歸一化
object=fft2(HoIogram);
object=fftshift(object);%用matlab中的移譜函數(shù)fftshift( )將頻譜的低頻成分移到中心,以避免再現(xiàn)時像分散在邊緣
object=abs(object);
object=1000*object/max(max(object));
figure;
imshow(object);

代碼片段和文件信息
Image=imread(‘L.jpg‘);%用imread()函數(shù)讀入函數(shù)抽樣數(shù)據(jù)并保存到矩陣A中
N=512;
A=zeros(NN);
B=zeros(NN);
for?I=1:1:256
?????J=1:1:256
???????ImageNum=double(Image(IJ1));
???????A(IJ)=ImageNum/255;
???????B(IJ)=0;
?????end
end
figure;
imshow(A);
pi=3.1415926;
for?I=1:1:N
??????for?J=1:1:N
?????????R=rand(11);%生成一個元素在01之間均勻分布的隨機矩陣R
?????????B(IJ)=A(IJ)*sin(R*2*pi);%平滑函數(shù)的傅里葉變換譜
?????????A(IJ)=A(IJ)*cos(R*2*pi);
????F(IJ)=A(IJ)+j*B(IJ);
?????end
End%限制振幅的動態(tài)范圍提高編碼的精度
F=fft2(F);%作二維快速傅里葉變換FFT
Max=max(max(abs(F)));
F=F/Max;
A=real(F);
B=imag(F);
aIpha=0.5;%定義載波參數(shù)aIpha
for?I=1:1:N
???for?J=1:1:N
?????Xcos=(J-1)/127;
????A1(IJ)=cos(2*pi*aIpha*Xcos);
????B1(IJ)=sin(2*pi*aIpha*Xcos);
?????end
end%全息圖數(shù)據(jù)區(qū)
for?I=1:1:N
??????for?J=1:1:N
HoIodata(IJ)=0.5+0.5*(A(IJ)*A1(IJ)+B(IJ)*B1(IJ));
??????end
End
M=512;N=512;%定義全息圖的大小
Hologram=zeros(MM);
S=M/N;%定義每個抽樣單元大小
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
????HoIogram(IyIx)=HoIodata(IJ);
???????????????end
??????????end
?????end
end
Max=max(max(HoIogram));
HoIogram=HoIogram/Max;
figure;?
imshow(HoIogram);
%以下是用matlab分別計算函數(shù)各抽樣點的傅里葉變換譜的幅角與模并對各點的模歸一化
object=fft2(HoIogram);
object=fftshift(object);%用matlab中的移譜函數(shù)fftshift(?)將頻譜的低頻成分移到中心以避免再現(xiàn)時像分散在邊緣
object=abs(object);
object=1000*object/max(max(object));
figure;
imshow(object);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1576??2018-05-11?21:13??附件-matlab程序.m
-----------?---------??----------?-----??----
?????????????????1576????????????????????1
評論
共有 條評論