5.线性平滑滤波器
%空间域的平滑滤波一般采用简单平均法进行,就是求邻近像元点的平均亮度值。邻域的大
小与平滑的效果直接相关,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘信息损失
的越大,从而使输出的图像变得模糊,因此需合理选择邻域的大小。
用 MATLAB 实现领域平均法抑制噪声程序:
I=imread('xian.bmp');
subplot(2,3,1)
imshow(I)
title('原始图像')
I=rgb2gray(I);
I1=imnoise(I,'salt & pepper',0.02); % http://baike.baidu.com/view/3396665.htm
subplot(2,3,2)
imshow(I1)
title('添加椒盐噪声的图像')
k1=filter2(fspecial('average',3),I1)/255; %进行 3*3 模板平滑滤波
k2=filter2(fspecial('average',5),I1)/255; %进行 5*5 模板平滑滤波
k3=filter2(fspecial('average',7),I1)/255; %进行 7*7 模板平滑滤波
k4=filter2(fspecial('average',9),I1)/255; %进行 9*9 模板平滑滤波
subplot(2,3,3),imshow(k1),title('3*3 模板平滑滤波');
subplot(2,3,4),imshow(k2),title('5*5 模板平滑滤波');
subplot(2,3,5),imshow(k3),title('7*7 模板平滑滤波');
subplot(2,3,6),imshow(k4),title('9*9 模板平滑滤波');
6.中值滤波器
%中值也称中位数,即数据按升序或者降序排列,假如有 n 个数据,当 n 为偶数时,中位数
为第 n/2 位数和第(n+2)/2 位数的平均数;如果 n 为奇数,那么中位数为第(n+1)/2 位数
的值。
用 MATLAB 实现中值滤波程序如下:
I=imread('xian.bmp');
I=rgb2gray(I);
J=imnoise(I,'salt & pepper',0.02);
subplot(231),imshow(I);title('原图像');
subplot(232),imshow(J);title('添加椒盐噪声图像');
k1=medfilt2(J); %进行 3*3 模板中值滤波
k2=medfilt2(J,[5,5]); %进行 5*5 模板中值滤波
k3=medfilt2(J,[7,7]); %进行 7*7 模板中值滤波
k4=medfilt2(J,[9,9]); %进行 9*9 模板中值滤波