内容简介
统计排序滤波
统计排序滤波理解起来应该都不难,无非就是一个排序,根据不同的滤波来确定寻找的是什么值(最值或者中值),在文章开始先说明这一篇只提供修正的阿尔法均值滤波,因为前面两种的确过于简单。
中值滤波
这里书上的说明为:
这里也是上一篇没有介绍几何均值滤波的原因,因为中值滤波对于椒盐噪声的去除效果实在不要太好,但是这里需要注意的有两点:
- 中值滤波仍然不是个保边缘的滤波
- 当信噪比过高的时候可需要多次中值滤波或者是使得模板mask的尺寸增大
最值滤波
不做介绍,如果看不懂的读者的话,可能我的博客其他文章也不太适合你,真心的!!!
需要提一点的是,最大值滤波和最小值滤波两者结合的话是可以同时处理椒盐噪声的下面会用到!!!
修正的阿尔法均值滤波
仍然先给出书上的说明如下:
在这里也真心佩服前人做的工作在混合噪声的问题上,这个滤波是解决(高斯+椒盐噪声)的滤波
首先从我们前面的介绍可以知道两点:
- 算术均值滤波可以很好的处理高斯噪声
- 最值滤波两者结合的话作用等同于中值滤波即可以去除椒盐噪声(上面最值滤波已经做过说明)
从公式可以看出,整个处理过程分为3个步骤:
- 排序
- 去除d/2个小值和d/2个大值
- 算均值
代码如下:
# @均值滤波
def deNoise(d, original):
num = d / 2
# 这里默认的是3*3模版故 length = 9,
maskLength = 9
start = int(num)
end = int(maskLength - num)
rows, cols = original.shape
newI