均值滤波是一种线性滤波器,在去噪的同时 会造成边缘模糊问题,而且均值滤波仅对高斯噪声效果较好,对于椒盐噪声效果一般

中值滤波是一种顺序滤波器,是非线性的,对于椒盐噪声效果较好,而且 保边 能力很强

椒盐噪声:又称脉冲噪声,是一种随机出现的白点或者黑点,白点称为盐噪声,黑点称为椒噪声;

 

示例

import cv2 as cv
import numpy as np
import scipy.signal as signal

k = 7
img = cv.imread('noise.png')
img_mean = cv.blur(img, ksize=(k, k))
img_med = cv.medianBlur(img, ksize=k)
img_med_scipy = signal.medfilt(img, kernel_size=(k, k, 3)).astype(np.uint8)

merge = np.hstack([img, img_mean, img_med, img_med_scipy])
cv.imshow('img', merge)
cv.waitKey(0)

依次为 椒盐噪声图、均值滤波图、opencv中值滤波图、scipy中值滤波图;    (k别太小,否则效果不明显)

很明显,中值滤波图 要 稍微清晰 一些,证明 保边能力强; 

 

原理就不讲了

 中值滤波就是通过求小窗口中的中位值来取代当前位置的方式来滤波

 

多级中值滤波

多个中值滤波 进行 多级级联 实现更好的 滤波效果,

级联方式比较灵活,如下图就是一种 级联方式

 先在窗口中定义一个'+'和'X'形的窗口,然后分别求出这两个窗口的中位值,然后结合当前窗口的中心点就有3个候选值,再从这三个值中求出一个中位值作为滤波后的结果

 

再如  来自参考论文

 求出四个区域的中值,再求其中值,或者均值(论文里求均值)

 

多级中值混合滤波

均值滤波 和 中值滤波 各有优势,可将二者结合,形成混合滤波

算法流程:

  1. 求出竖直方向相邻三个点的均值和水平方向相邻三个点的均值,再结合当前点,用这三个点再求一个中位值;
  2. 求出45°和135°方向上的均值,然后结合当前点求出一个中位值;
  3. 两个中位值结合当前点组成新的数组,最后求一个中位值作为当前点的值完成滤波。

 

多级中值有理混合滤波

算法流程

  1. 求出'+'形和'X'形的窗口的中位值;
  2. 对'+'形窗口再利用CWMF求出一个值,CWMF是WMF的一种特殊情况,就是只对中心点进行加权;
  3. 对以上求出的三个参数用一下公式计算出一个新的值作为滤波后的值


[公式]

 

快速自适应加权中值滤波

见参考论文

 

改进的自适应多级加权中值滤波

见参考论文

 

其实还有很多变化,但都不难,多查阅些论文吧,有些写的不清不楚,看看就行了

 

该图片来自论文 《_应用于图像处理的自适应中值滤波算法的研究》 

 

论文摘录

1.  中值滤波 可对 随机噪声 起到良好的去除效果,在信号恢复中已得到广泛应用

 

 

 

 

参考资料:

https://zhuanlan.zhihu.com/p/425197766  NR基础篇下——中值滤波、多级中值滤波、多级中值混合滤波、加权中值滤波、中值有理滤波

《_基于图像识别理论的智能交通系统关键技术研究》 吉林大学博士论文 2016  改进的自适应多级加权中值滤波 用于 车牌图像去噪

《_图像快速自适应加权中值滤波》

《_应用于图像处理的自适应中值滤波算法的研究》