用matlab,选一幅图像,加入椒盐噪声后,对其进行中值滤波和均值滤波,对比其效果。

用matlab,选一幅图像,加入椒盐噪声后,对其进行中值滤波和均值滤波,对比其效果。,第1张

%%中值

I=imread('lena.bmp') %读原图

J1=imnoise(I,'salt &pepper',0.02)%加均值为0,方差为0.02的椒盐噪声

J2=imnoise(I,'gaussian',0.02) %加均值为0,方差为0.02的高斯噪声。

subplot(2,2,1),imshow(J1) %显示有椒盐噪声图像

subplot(2,2,2),imshow(J2) %显示有高斯噪声图像

I1= medfilt2(J1,[5,5])%对有椒盐噪声图像进行5×5方形窗口中值滤波

I2= medfilt2(J2,[5,5])%对有高斯噪声图像进行5×5方形窗口中值滤波

subplot(2,2,3),imshow(I1) %显示有椒盐噪声图像的滤波结果

subplot(2,2,4),imshow(I2) %显示有高斯噪声图像的滤波结果

%%均衡

I=imread('lena.bmp') %将图读入到I

imshow(I) %显示图像

figure,imhist(I) %直方图

I2=histeq(I) %均衡化

figureimshow(I2) %处理后图像显示

figureimhist(I2) %均衡化后直方图

imwrite(I2,'lena2.bmp') %保存图像

  中值滤波与前面介绍的滤波方式不同,不再采用加权求均值的方式计算滤波结果。它用邻域内所有像素值的中间值来替代当前像素点的像素值。

  中值滤波会取当前像素点及其周围临近像素点(一共有奇数个像素点)的像素值,将这些像素值排序,然后将位于中间位置的像素值作为当前像素点的像素值。

  例如,针对图7-27中第4行第4列的像素点,计算它的中值滤波值。

将其邻域设置为3×3大小,对其3×3邻域内像素点的像素值进行排序(升序降序均可),按升序排序后得到序列值为:[66,78,90,91,93,94,95,97,101]。在该序列中,处于中心位置(也叫中心点或中值点)的值是“93”,因此用该值替换原来的像素值78,作为当前点的新像素值,处理结果如图7-28所示。

在OpenCV中,实现中值滤波的函数是cv2.medianBlur(),其语法格式如下:

式中:

【例7.7】针对噪声图像,对其进行中值滤波,显示滤波的结果。

从图中可以看到,由于没有进行均值处理,中值滤波不存在均值滤波等滤波方式带来的细节模糊问题。在中值滤波处理中,噪声成分很难被选上,所以可以在几乎不影响原有图像的情况下去除全部噪声。但是由于需要进行排序等 *** 作,中值滤波需要的运算量较大。

1、阅读图片,以pout.tif为例,加上盐和胡椒噪音。

2、分别建立3×3高斯滤波器模板和平均滤波器模板,并对经过噪声添加的图像进行滤波。显示原始图像,噪声图像和由高斯和平均模板过滤的图像。

3、图片结果如图所示。可以看出,平均模板滤波后的噪声非常明显。高斯模板滤波的噪声影响相对较小。

4、之后我们选择输入代码进行过滤,并显示处理后的图像。

5、中值滤波图像基本上不显示噪声的影响。效果如下。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11790729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存