close all;
clear all;
I=imread('rice.tif');
I=im2double(I);
u=32;
v=32;
d=0.3;
u1=2*pi*u/256;
v1=2*pi*v/256;
for j=1:256
for k=1:256
A(j,k)=d*sin(u1*j+v1*k);
end
end
J=I+A;
u=45;
v=0;
u1=2*pi*u/256;
v1=2*pi*v/256;
for j=1:1:256
for k=1:1:256
A(j,k)=d*sin(u1*j+v1*k);
end
end
J=J+A;
u=0;
v=45;
u1=2*pi*u/256;
v1=2*pi*v/256;
for j=1:1:256
for k=1:1:256
A(j,k)=d*sin(u1*j+v1*k);
end
end
J=J+A;
u=-32;
v=32;
u1=2*pi*u/256;
v1=2*pi*v/256;
for j=1:1:256
for k=1:1:256
A(j,k)=d*sin(u1*j+v1*k);
end
end
J=J+A;
F1=fft2(I);
F1am=abs(F1);
F1ph=angle(F1);
F11=fftshift(F1);
F11am=abs(F11);
F2=fft2(J);
F2am=abs(F2);
F2ph=angle(F2);
F22=fftshift(F2);
F22am=abs(F22);
subplot(2,3,1),imshow(I);title('Original image');
subplot(2,3,2),imshow(J);title('Noisy image');
subplot(2,3,4),imshow(0.25*log10(1+F11am));
subplot(2,3,5),imshow(0.25*log10(1+F22am));
F2am0=F2am(1,1);
F2am(1,1)=0;
thresh=max(F2am(:));
for j=1:1:256
for k=1:1:256
if F2am(j,k)>thresh/2
F2am(j,k)=0;
end
end
end
F2am(1,1)=F2am0;
R=F2am.*exp(i*F2ph);
R2=fftshift(R);
R2am=abs(R2);
subplot(2,3,3),imshow(abs(ifft2(R)));title('Result of restoration')
subplot(2,3,6),imshow(0.25*log10(1+R2am));
F3am=abs(fftshift(fft2(J)));
figure;
imshow(0.25*log10(1+F3am));