给图像添加椒盐噪声之后用均值滤波和中值滤波过滤图像!

来源:互联网 发布:java中单双引号 编辑:程序博客网 时间:2024/05/16 05:20

本文转载自 http://opencv66.net/thread-27-1-1.html

椒盐噪声是椒噪声和盐噪声的合称,它是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声,去除椒盐噪声的最常用算法是中值滤波,在去除想起噪声的效果上均值滤波不如中值滤波,本文所给的代码会证明这个结论。

首先说下怎么给图像加上椒噪声和盐噪声。我们可以利用C++的srand函数和rand函数来产生随机坐标,并把这些坐标置为椒噪声点或盐噪声点。
这两个函数的用法就不多说了,大家可自行搜索下网上的资源,再结合代码大家很容易知道怎么用。值得一提的是rand函数的范围为0至RAND_MAX,是整数,RAND_MAX的值在stdlib.h中有定义,定义如下:
#define RAND_MAX 0x7fff
在本文的代码中,盐噪声的BGR值为(250,150,250),椒噪声的BGR值为(250,150,50)
再来说均值滤波和中值滤波
均值滤波:它是用某点邻域窗口内的的所有像素的平均值来代替锚点处的值。它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
中值滤波:中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。
OpenCV提供了函数medianBlur和函数blur来实现均值滤波和中值滤波,这两个函数的使用方法简单,没必要作过多的说明,唯一需要说明白是这两个函数的第三个参数均需提供核算子的大小,关于“核算子”的概念,大家可参考帖子http://opencv66.net/thread-26-1-1.html
代码如下

源码请大家移步帖子 http://opencv66.net/thread-27-1-1.html 查看

源码请大家移步帖子 http://opencv66.net/thread-27-1-1.html 查看

源码请大家移步帖子 http://opencv66.net/thread-27-1-1.html 查看

运行结果截图如下

从截图中我们可以看出,对于椒盐噪声,中值滤波的效果优于均值滤波。

本文转载自 http://opencv66.net/thread-27-1-1.html

阅读全文
0 0
原创粉丝点击