均值滤波器可以归为低通滤波器,是一种线性滤波器,其输出为邻域模板内的像素的简单平均值,主要用于图像的模糊和降噪。
均值滤波器的概念非常的直观,使用滤波器窗口内的像素的平均灰度值代替图像中的像素值,这样的结果就是降低图像中的“尖锐”变化。这就造成,均值滤波器可以降低噪声的同时,也会模糊图像的边缘。均值滤波器的处理结果是过滤掉图像中的“不相关”细节,其中“不相关”细节指的是:与滤波器模板尺寸相比较小的像素区域。
根据均值计算方法的不同,均值滤波器有以下几种:
- 算术均值滤波器
- 几何均值滤波器
- 谐波均值滤波器
- 逆谐波均值滤波器
算术均值滤波器 Arithmetic Mean Filter
这是最简单的均值滤波器,可以去除均匀噪声和高斯噪声,但会对图像造成一定程度的模糊。
令 Sxy 表示中心点在 (x,y) 处,大小为 m×n 的滤波器窗口。算术均值滤波器就是简单的计算窗口区域的像素均值,然后将均值赋值给窗口中心点处的像素:
f(x,y)=1mn∑(x,y)∈Sxyg(s,t)
其中, g(s,t) 表示原始图像, f(x,y) 表示均值滤波后得到的图像。
基于上述公式,可以很容易的得到的算术均值滤波器的窗口模板,下面以 3×3 为例
19⎡⎣⎢111111111⎤⎦⎥
在OpenCV中,函数
blur
表示使用该模板的均值滤波器,其声明如下:
void blur( InputArray src, OutputArray dst,
Size ksize, Point anchor = Point(-1,-1),
int borderType = BORDER_DEFAULT );
src是输入图像,dst为输出图像;ksize是滤波器模板窗口的大小;后两个参数分别表示,待处理像素在模板窗口的位置,默认值是窗口的中心位置,所以窗口的大小一般为奇数,最后一个参数表示对编解类型的处理,使用默认值即可。其调用示例blur(src,dst,Size(5,5)
,模板窗口的大小为 5×5 。