数字图像处理 实验七:图像的复原处理 matlab

  • 实验内容

1)构造一个矩形方块图像,对其分别加入高斯和椒盐噪声,显示原始图像和噪声图像,及每个图片相对应的直方图。

2)任意选择一幅图像,对其使用运动模糊处理,再在模糊图像中加入高斯噪声,使用逆滤波和 winner 滤波对其进行去退化处理,比较效果,显示原始图像和复原图像。

  • 源程序和结果

1)构造一个矩形方块图像,对其分别加入高斯和椒盐噪声,显示原始图像和噪声图像,及每个图片相对应的直方图。

a=zeros(256,256);

a(1:128,1:128)=235;

a(129:256,1:128)=155;

a(1:128,129:256)=125;

a(129:256,129:256)=100;

j=imnoise(uint8(a),'salt & pepper',0.02);%加椒盐噪声

m=imnoise(uint8(a),'gaussian');%加高斯噪声

figure (1)

subplot(2,3,1);imshow(uint8(a));title('原图');

subplot(2,3,4);imhist(uint8(a));subplot(2,3,2);

imshow(j);title('加入椒盐噪声');

subplot(2,3,5);imhist(j);subplot(2,3,3);

imshow(m);title('加入高斯噪声');subplot(2,3,6);imhist(m);

 

2)任意选择一幅图像,对其使用运动模糊处理,再在模糊图像中加入高斯噪声,使用逆滤波和 winner 滤波对其进行去退化处理,比较效果,显示原始图像和复原图像。

clear;

close all

A=imread('lena.bmp');

figure (2)

subplot(1,2,1);

imshow(A);title('原图像');

l=rgb2gray(A);

subplot(1,2,2);

imshow(l);

title('二维灰度图像');%将彩色图像转换为二维灰度图像

[m,n]=size(l);

F=fftshift(fft2(l));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;

l0=abs(ifft2(fftshift(G)));

figure (3);

subplot(2,2,1);

imshow(uint8(l0));

title('模糊图像');

l1=0.1*randn(size(l0));

l1=l0+l1;

%生成高斯白噪声图像

subplot(2,2,2)

imshow(uint8(l1));

title('模糊并且添加高斯白噪声图像');

F0=fftshift(fft2(l1));

F1=F0./H;

l2=ifft2(fftshift(F1));

subplot(2,2,3)

imshow(uint8(l2));

title('逆滤波后复原图像');

K=0.1;%维纳滤波的参数可以调H=[];

H0=[];

H1=[];

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);

H0(u,v)=(abs(H(u,v)))^2;

H1(u,v)=H0(u,v)/(H(u,v)*(H0(u,v)+K));

end

end

F2=H1.*F0;

l3=ifft2(fftshift(F2));

subplot(2,2,4)

imshow(uint8(abs(l3)));

title('维纳滤波复原图像');