MATLAB常用的滤波函数比较:均值滤波 和 中值滤波

MATLAB常用的滤波函数比较:均值滤波和中值滤波

均值滤波

均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

中值滤波

中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。这些优良特性是线性滤波方法所不具有的。此外,中值滤波的算法比较简单,也易于用硬件实现。

运行结果

Alt

程序代码

I = imread('G:\matlabEXCISIZE\execise\img\lena.png');
J1=imnoise(I,'salt & pepper',0.02); %加均值为0,方差为0.02的椒盐噪声
J2=imnoise(I,'gaussian',0.02); %加均值为0,方差为0.02的高斯噪声。
g1=rgb2gray(J1);
g2=rgb2gray(J2);
figure('units','normalized','position',[0 0 1 1]);
subplot(2,4,1),imshow(J1),xlabel('椒盐噪声'); %显示有椒盐噪声图像
subplot(2,4,2),imshow(J2),xlabel('高斯噪声'); %显示有高斯噪声图像

% %  邻域平均法  neighborhood averaging

% imfilter 可进行多维图像(RGB等)进行空间滤波,且可选参数较多
% filter2 / medfilt2 只能对二维图像(灰度图)进行空间滤波,
% 两个函数结果类型不一样,只需要在I1=filter2(h,I)后面加上I1=uint8(I1)进行类型转换,结果就是一样的。

K1 = filter2(fspecial('average',3),g1); % 对椒盐噪声进行 3*3 模板平滑滤波
K2 = filter2(fspecial('average',11),g1);
k3 = imfilter(I,fspecial('average',3),'replicate');
K4 = filter2(fspecial('average',3),g2); % 对高斯噪声进行 3*3 模板平滑滤波

subplot(2,4,3),imshow(uint8(K1)),xlabel({'对椒盐噪声进行';'3*3 模板平滑滤波'});
subplot(2,4,4),imshow(uint8(K1)),xlabel({'对椒盐噪声进行';'11*11 模板平滑滤波'});
subplot(2,4,5),imshow(k3),xlabel('3*3 imfilter空间滤波');
subplot(2,4,6),imshow(uint8(K4)),xlabel('对高斯噪声进行 3*3 模板平滑滤波');

% 中值滤波
I1= medfilt2(g1,[3,3]); % 对有椒盐噪声图像进行5×5方形窗口中值滤波
I2= medfilt2(g2,[3,3]); % 对有高斯噪声图像进行5×5方形窗口中值滤波

subplot(2,4,7),imshow(I1),xlabel({'椒盐噪声进行';'3*3 中值滤波'}); 
subplot(2,4,8),imshow(I2),xlabel({'高斯噪声进行';'3*3 中值滤波'}); 


  • 18
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值