一个图像恢复的问题

来源:百度知道 编辑:UC知道 时间:2024/04/30 20:42:14
小女子刚学习数字图像处理,用matlab将一幅图像做2维快速傅里叶变换后,再与一个转移函数H(u,v)相乘,然后做反变换得到一幅模糊的图像。现在我想把这幅模糊的图像用逆滤波的方法恢复到原来的图像,可是怎么也恢复不了,也不知道是什么原因,还请高手哥哥赐教。已知x=pi*u*a+v*b),y=sin(x),z=exp(-j*x),H(u,v)=T*y*z/x,解答后可以再加分,多谢了,下面是我编写的程序:
clear
close all
a=0.1;
b=0.1;
T=1;
I=imread('p3.bmp');
figure
imshow(I)
title('模糊图像');
[m,n]=size(I);
F=zeros(m,n);
H=zeros(m,n);
for u=1:m
for v=1:n
x=pi*(u*a+v*b);
y=sin(x);
z=exp(-j*x);
H(u,v)=T*y*z/x;
end
end
for u=1:m
for v=1:n
F(u,v)=G(u,v)/H(u,v);
end
end
F=ifft2(F);
F=abs(F);
F=uint8(F);
figure
imshow(F)
title('逆滤波恢复的图像');
可是我把程序改成这样之后还是不行啊:
clear
close all
a=0.1;
b=0.1;
T=2;
I=imread('p3.bmp');
figure
imshow(I)
title('模糊图像');
G=fft2(I);
spectrum = fftshift(abs(G));

F(u,v)=G(u,v)/H(u,v)这行需要改进。F(u,v)=G(u,v)/H(u,v)是在无噪声的理想的情况下进行的,但是实际呢?大家都知道。
我们知道。如果噪声为0,则采用逆滤波法回复能完全再现原图像,如果噪声存在,而且在H(u,v)很小或为0时,则噪声被放大了,这样解释你应该知道后果是什么,
建议在编写程序时,在H(u,v)=0及其附近,人为地设置H^(-1)的值,