数字图像处理 实验七:图像的复原处理 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('维纳滤波复原图像');