close all;clc;clear<BR>A=zeros(64);<BR>A(15:20,20:40)=1;A(15:50,20:25)=1;<BR>A(45:50,20:40)=1;A(30:34,20:35)=1;<BR>% ppp=exp(rand(64)*pi*2*i);A=A.*ppp;<BR>% Author's email: <a href="mailtzjliu2001@163.com" target="_blank" ><STRONG><FONT color=#86aa42>zjliu2001@163.com</FONT></STRONG></A><BR>figure;imshow(abs(A),[]);<BR>Fa=fft2(fftshift(A));Fs=fftshift(Fa);<BR>Am=abs(Fs); % amplitude<BR>Ph=angle(Fs); % phase<BR>s=11;<BR>cgh=zeros(64*s);<BR>th=max(max(abs(Fs)));<BR>qq=th/1.2;<BR>Am(Am>qq)=qq;<BR>q=1:s;w=(s+1)/2;<BR>for m=1:64;<BR> for n=1:64;<BR> h=round(Am(m,n)/qq*(w-1)-0.5);<BR> md=zeros(s);<BR> if h>0;<BR> td=ones(h*2+1,3);<BR> Pm=round(Ph(m,n)/pi*3);<BR> kz=Pm+w;<BR> md(w-h:w+h,kz-1:kz+1)=td;<BR> end<BR> cgh((m-1)*s+q,(n-1)*s+q)=md;<BR> end<BR>end<BR>figure;imshow(cgh,[]); % 迂回位相编码结果<BR>Re=ifft2(cgh); Re=fftshift(Re);<BR>figure;imshow(abs(Re),[]); % 再现图像<BR><BR><BR><BR>就是这个程序。如果把最后一句的imshow(abs(Re),[]); 中括号去掉,显示的图像就是一片黑,而带着中括号,显示的图像就是对的。 |