差不多就是這個理論,傅里葉變換之后除掉退化函數的傅里葉變換,就變回來了。
說是這么說,寫出來就是這樣。手寫公式簡單得多,人懶就是任性。

matlab代碼。
clc
I=imread('src.png');
I0=rgb2gray(I);
subplot(231);
imshow(I0);
title('src');
[m,n]=size(I0);
F=fftshift(fft2(I0));
k=0.0025;
H=[];
for u=1:m
for v=1:n
q=((u-m/2)^2+(v-n/2)^2)^(5/6);
H(u,v)=exp((-k)*q);
end
end
G=F.*H;
I1=abs(ifft2(fftshift(G)));
subplot(232);
imshow(uint8(I1))
title('退化');
I2=imnoise(uint8(I1),'gaussian',0,0.001);
subplot(233);
imshow(uint8(I2));
title('加噪聲');
F0=fftshift(fft2(I2));
F1=F0./H;
I3=ifft(fftshift(F1));
subplot(236);
imshow(uint8(I3));
title('退化噪聲復原')
F2=fftshift(fft2(I1));
F3=F2./H;
I4=ifft(fftshift(F3));
subplot(235);
imshow(uint8(I4));
title('退化復原')
F4=fftshift(fft2(I0));
I5=ifft(fftshift(F4));
subplot(234);
imshow(uint8(I5));
title('直接傅里葉變換回來')
上面主要是傅里葉除的矩陣要一樣維度,所以給了個[m,n]的矩陣,好像局限性有點大。
我個人想是不是逆卷積的效果更好一點,主要是傅里葉變來變去的相位難以控制。

參考《MATLAB圖像處理超級學習手冊》
