中值滤波器
中值滤波器是一种非线性滤波器,常用于消除图像中的椒盐噪声。与低通滤波不同的是,中值滤波有利于保留边缘的尖锐度,但它会洗去均匀介质区域中的纹理。
椒盐噪声
椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声是指两种噪声,一种是盐噪声(salt noise)盐=白色(255),另一种是胡椒噪声(pepper noise),椒=黑色(0)。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。对于彩色图像,则表现为在单个像素BGR三个通道随机出现的255与0,如下图所示。
中值滤波器
在输入图像x(n1, n2)中,以任一像素为中心设置一个确定的邻域A,A的边长为2N+1,(N=0,1,2,…)。将邻域内各像素的强度值按大小顺序排列,取位于中间位置的那个值(中值)作为该像素点的输出值,遍历整幅图像就可完成整个滤波过程:A=x(i,j), y=Med{x1, x2, x3,…,x2N+1}
函数
void medianBlur( InputArray src, OutputArray dst,int ksize );
参数
src — 输入图像
dst — 输出图像, 必须与 src 相同类型
ksize — 内核大小 (只需一个值,因为使用正方形窗口),必须为奇数。
加入盐噪声和椒噪声的函数 salt()和 pepper()见文章“ OpenCV—图像椒盐噪声生成器”。
加入椒盐噪声的图像
中值滤波后的图像
中值滤波器对椒盐噪声抑制非常有效,这是因为椒盐噪声值为255或0,它散布在邻域中,不是最大值就是最小值,不可能成为中值,因此能被较好的滤除。