图像复原
1). 针对图像水平运动所引起的图像退化,给出连续函数退化模型的系统传递函数H(u,v)
2). 编程用维纳滤波实现对运动模糊图像的复原。
解:
,得到模糊后的图像,然后进行维纳滤波,也就是逆滤波(要消除H的零点,避免出现0/0)。程序如下:
A=imread('');
F=fft2(A);
F=fftshift(F);
N=512;
u=1:N/2;
T=1;a=;%选择水平运动参数
x=pi*a*u;
H=zeros(N,N);
H(1,1+N/2:N)=(T./x).*sin(x).*exp(-i*x);%计算滤波系数
H(1,1:N/2)=fliplr(conj(H(1,1+N/2:N)));%利用共轭对称性
for n=2:N
H(n,:)=H(1,:);
end
figure,mesh(abs(H))%滤波器幅度特性
G=F.*H;
G=fftshift(G);
AA=uint8(ifft2(G));
figure,imshow(AA)%模糊的图像
%维纳滤波,也是逆滤波
H2=H+(H==0);%去除滤波器零点,将H中的0变为1,避免后面计算出现0/0
G2=fftshift(G);
F2=G2./H2;
F2=fftshift(F2);
A2=uint8(ifft2(F2));
figure,imshow(A2)
实验结果如下:
产生模糊图像的滤波器:
模糊后的Lenna
维纳滤波的结果:
向模糊的图片加入均值为0、(程序几乎同上,不再给出)
采用直接逆滤波(去除零点)和维纳滤波(其中K通过尝试,取10)的结果对比如下:
如果采用半径受限的逆滤波,得到结果如下:
可见,半径受限的逆滤波产生了图像模糊,同时也滤除了部分噪声,有振铃效应;而维纳滤波产生的图像更为清晰,振铃效应不明显,但是噪声比较明显。
二. 图像复原
1). 针对图像水平平移a后与原图像叠加形成的重影图像所引起的图像退化,给出连续函数退化模型的系统传递函数H(u,v)
2). 编程用维纳滤波实现对一个重影图像的复原。
解:1)设系统冲击响应为h(x,y),则
对上式做傅里叶变换,,
即为连续函数退化模型的系统传递函数H(u,v)
2)
A=imread('');
[M,N] = size(A);
a=12; %水平位移12pixel
B=[A(:,N-a+1:N) A(:,1:N-a)];
B=B*+A*;
figure,subplot(121),imshow(B),title('重影图像(无噪)')
u=1:N;
H=zeros(M,N);
H(1,:)=*(1+exp(-1i*2*pi*(u-N/2)*a/N));
for n=2:M
H(n,:)=H(1,:);
end
%k=10;
H2=H+(abs(H)<1e-10);%避免除以很小的数导致误差,去阈值为1e-10
F=fftshift(fft2(B));%
F_R=F./H2;%无噪时,维纳滤波即逆滤波
%F_
图像复原维纳滤波边缘提取 来自淘豆网www.taodocs.com转载请标明出处.