一、实验要求
- 读入一张图片。
- 为该图片添加椒盐噪声。
- 为含椒盐噪声的图片设计3×3、5×5、7×7三种模板的算术均值滤波器对其进行滤波。
- 为含椒盐噪声的图片设计3×3、5×5、7×7三种模板的中值滤波器对其进行滤波。
- 在同一个窗口中,显示原图、含噪图像、三种不同模板的算术均值滤波的效果图、三种不同模板的中值滤波的效果图,共8幅图。
- 为每幅图片配上合适的标题。
二、设计实现
使用的实验图:
首先,读入一张图片。
I0 = imread('..\1192568.jpg'); %读取本地图片
I = rgb2gray(I0); %灰度转换
为该图片添加椒盐噪声。
N = imnoise(I,'salt & pepper'); % 加入椒盐噪声
为含椒盐噪声图片设计3×3模板算术均值滤波器,对图片进行滤波。
n=1; m=2*n+1;
H = ones(m,m)/(m*m); % 3×3模板
[h,l,c] = size(N);
x1 = double(N);
x2 = x1;
for i=n+1:h-n
for j=n+1:l-n
% 去除x1中从(i,j)开始的n行n列元素与模板相乘
c = x1(i-n:i+n,j-n:j+n).*H;
s = sum(c(:));
x2(i,j) = s;
end
end
N1 = uint8(x2);
为含椒盐噪声图片设计5×5模板算术均值滤波器,对图片进行滤波。
n1=2; m1=2*n1+1;
H1 = ones(m1,m1)/(m1*m1); % 5×5模板
[h,l,d] = size(N);
x1 = double(N);
x3 = x1;
for i=n1+1:h-n1
for j=n1+1:l-n1
% 去除x1中从(i,j)开始的n行n列元素与模板相乘
d = x1(i-n1:i+n1,j-n1:j+n1).*H1;
p = sum(d(:));
x3(i,j) = p;
end
end
N2 = uint8(x3);
为含椒盐噪声图片设计7×7模板算术均值滤波器,对图片进行滤波。
n2=3; m2=2*n2+1;
H2 = ones(m2,m2)/(m2*m2); % 7×7模板
[h,l,e] = size(N);
x1 = double(N);
x4 = x1;
for i=n2+1:h-n2
for j=n2+1:l-n2
% 去除x1中从(i,j)开始的n行n列元素与模板相乘
e = x1(i-n2:i+n2,j-n2:j+n2).*H2;
q = sum(e(:));
x4(i,j) = q;
end
end
N3 = uint8(x4);
为含椒盐噪声图片设计3×3模板中值滤波器,对图片进行滤波。
c1=medfilt2(N,[3,3]);
为含椒盐噪声图片设计5×5模板中值滤波器,对图片进行滤波。
c2=medfilt2(N,[5,5]);
为含椒盐噪声图片设计7×7模板中值滤波器,对图片进行滤波。
c3=medfilt2(N,[7,7]);
在同一个窗口中,显示上述所有的图片。
subplot(3,3,1),imshow(I);title('原图');
subplot(3,3,2),imshow(N);title('添加椒盐噪声后的图像');
subplot(3,3,4),imshow(N1);title('3×3模板椒盐噪声进行算术均值滤波后图像');
subplot(3,3,5),imshow(N2);title('5×5模板椒盐噪声进行算术均值滤波后图像');
subplot(3,3,6),imshow(N3);title('7×7模板椒盐噪声进行算术均值滤波后图像');
subplot(3,3,7),imshow(c1),title('3×3模板椒盐噪声图进行中值滤波后图');
subplot(3,3,8),imshow(c2),title('5×5模板椒盐噪声图进行中值滤波后图');
subplot(3,3,9),imshow(c3),title('7×7模板椒盐噪声图进行中值滤波后图');