计算机视觉
图像处理

OpenCV—中值滤波

文章目录

中值滤波器

中值滤波器是一种非线性滤波器,常用于消除图像中的椒盐噪声。与低通滤波不同的是,中值滤波有利于保留边缘的尖锐度,但它会洗去均匀介质区域中的纹理。

椒盐噪声

椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声是指两种噪声,一种是盐噪声(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 — 内核大小 (只需一个值,因为使用正方形窗口),必须为奇数。

  1. // load image
  2. cv::Mat image = imread(“f:\\images\\castle.jpg”,1);
  3. cv::resize(image, image, cv::Size(), 0.3, 0.3);
  4. // call function to add noise
  5. salt(image,3000);//加入盐噪声255
  6. pepper(image,3000);//加入椒噪声0
  7. // display result
  8. cv::imshow(“salted image”,image);
  9. //median filte
  10. Mat resutl;
  11. cv::medianBlur(image,resutl,3);
  12. //display result
  13. cv::imshow(“median filted image”,resutl);
  14. cv::waitKey();

加入盐噪声和椒噪声的函数salt()和pepper()见文章“OpenCV—图像椒盐噪声生成器”。

加入椒盐噪声的图像

中值滤波后的图像

中值滤波器对椒盐噪声抑制非常有效,这是因为椒盐噪声值为255或0,它散布在邻域中,不是最大值就是最小值,不可能成为中值,因此能被较好的滤除。

转载注明来源:CV视觉网 » OpenCV—中值滤波

分享到:更多 ()
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

0不错 0超赞 0无聊 0扯淡 0不解 0路过

评论 抢沙发

评论前必须登录!