数字图像处理:噪声模型(椒盐噪声、随机噪声、高斯噪声)和滤波方法

简介: 数字图像处理:噪声模型(椒盐噪声、随机噪声、高斯噪声)和滤波方法

图像噪声是图像在获取或传输过程中受到随机信号干扰,妨碍人们对图像理解及分析的信号。很多时候将图像噪声看作多维随机过程,因而描述噪声的方法完全可以借用随机过程的描述,即使用其概率分布函数和概率密度分布函数。图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量,图像在传输过程中产生图像噪声的主要因素是所用的传输信道受到噪声污染。


一、噪声类型


1、椒盐噪声(盐=白色,椒=黑色)


椒盐噪声是数字图像中的常见噪声,一般是由图像传感器、传输信道及解码处理等产生的黑白相见的亮暗点噪声,椒盐噪声常由图像切割产生。椒盐噪声是指两种噪声:盐噪声(salt noise)及椒噪声(pepper noise)。盐噪声一般是白色噪声,椒噪声一般是黑色噪声,前者高灰度噪声,后者属于低灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点。图像去除脉冲干扰及椒盐噪声最常用的算法是中值滤波,图像模拟添加椒盐噪声是通过随机获取像素值点并设置为高亮点来实现的。



2.随机噪声


随机噪声,又称背景噪声,由时间上随机产生的大量起伏骚扰积累而造成的,其值在给定瞬间内不能预测的噪声。说实话没大理解,后来在老师的ppt课件上发现了随机值脉冲噪声,感觉它的效果和椒盐噪声很像。又百度了一下,发现脉冲噪声的特点是无规则。于是本算法基本和椒盐噪声的实现相似,可以控制噪声数量,随机生成黑白杂点,但此黑白杂点也是随机色值(a,b,c)(255-a,255-b,255-c),其中a,b,c是0-30的随机数,这些杂点在图像坐标内随机分布。


3.高斯噪声


高斯噪声是指概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度服从高斯分布,而它的功率谱密度又是分布均匀的,则称它为高斯白噪声。高斯白噪声的二阶矩不想关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。高斯噪声完全由其时变平均值和两瞬时的协方差函数来确定,若噪声为平稳的,则平均值与时间无关,而协方差函数则变成仅和所考虑的两瞬时之方差有关的相关函数,它在意义上等效于功率谱密度。高斯噪声可以由大量独立的脉冲产生,从而在任何有限时间间隔内,这些脉冲中的每一个脉冲值与所有脉冲值的总和相比都可以忽略不计。



二、滤波


常见的滤波方式有均值滤波、中值滤波、高斯滤波等。


1、均值滤波—mean_image


      均值滤波又称作邻域平均法,是典型的线性滤波算法,理想的均值滤波是用每个像素和它周围像素计算出来的平均值替换图像中每个像素。

      从频率域观点来看均值滤波是一种低通滤波器(让图像的低频部分通过,通常弱化边缘,会得到比较平缓的图像),高频信号将会去掉,因此可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。因为此方法不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊。采样Kernel数据通常是3X3的矩阵,如下表示:


20190606162734853.png

      从左到右从上到下计算图像中的每个像素,最终得到处理后的图像。均值滤波可以加上两个参数,即迭代次数,Kernel数据大小。一个相同的Kernel,但是多次迭代就会效果越来越好。同样,迭代次数相同,Kernel矩阵越大,均值滤波的效果就越明显。


优势:消除尖锐噪声,实现图像平滑,模糊等功能。



2、中值滤波—median_Image,适用于椒盐噪声


      中值滤波也是消除图像噪声最常见的手段之一,特别是消除椒盐噪声,中值滤波的效果要比均值滤波更好。它的基本原理是计算出数字图像中的一点的一个邻域中的各点值的中值(中间值),并使用该中值将将该点原值代替。可以理解为使用一个窗口沿图像移动,用窗口内所有象素灰度的中值来代替窗口中心位置的象素灰度。窗口根据需要定义,可以是3* 3,5 *5的方形、十字形或者圆形等。

20190606162800485.png


优势:消除椒盐噪声。



3、高斯滤波—gauss_image,适用于高斯噪声


      高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。可以理解为用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。


优势:消除高斯噪声。


产生原因:


图像传感器在拍摄时市场不够明亮、亮度不够均匀;

电路各元器件自身噪声和相互影响;

图像传感器长期工作,温度过高。



三、举例


1、halcon示例

*中值滤波,去除椒盐噪声
read_image (Image, 'D:/hellowprld/2/OtherSquare_1.jpg')
*彩色转灰度图
count_channels (Image, Channels)
if (Channels == 3 or Channels == 4)
    rgb1_to_gray (Image, Image)
endif
*因为边界处往往无法移动滤波窗口,因此需要对像素做补充.
*'continued'表示延伸边界像素
*'cyclic'表示循环延伸边界像素
median_image (Image, ImageMedian, 'circle', 3, 'continued')
median_image (Image, ImageMedian2, 'circle', 3, 'cyclic')
dev_display (ImageMedian)
write_image (ImageMedian, 'jpeg 100', 0, 'D:/hellowprld/2/medianBlur.jpg')
stop()


2、opencv中提供了medianBlur()函数实现了中值滤波操作,其原型如下:


void medianBlur(InputArray src, OutputArray dst, int ksize)


参数解释:


InputArray src: 输入图像,图像为1、3、4通道的图像,当模板尺寸为3或5时,图像深度只能为CV_8U、CV_16U、CV_32F中的一个,如而对于较大孔径尺寸的图片,图像深度只能是CV_8U。


OutputArray dst: 输出图像,尺寸和类型与输入图像一致,可以使用Mat::Clone以原图像为模板来初始化输出图像dst。


int ksize: 滤波模板的尺寸大小,必须是大于1的奇数,如3、5、7……

Mat SrcImage;
Mat DstImage;
int nkernelSize = 3;
medianBlur(SrcImage, DstImage, nkernelSize);


opencv完整版源码:

int main(int argc, char** argv)
{
  Mat SrcImage = imread("D:\\hellowprld\\2\\4.jpg", IMREAD_GRAYSCALE);
  int h = SrcImage.rows;
  int w = SrcImage.cols;
  if (h == 0 || w == 0)
  {
  return -1;
  }
  namedWindow("input", WINDOW_NORMAL);
  imshow("input", SrcImage);
  Mat DstImage;
  int nkernelSize = 3;
  cv::medianBlur(SrcImage, DstImage, nkernelSize);
  namedWindow("output", WINDOW_NORMAL);
  imshow("output", DstImage);
  imwrite("medianBlur.jpg", DstImage);
  waitKey(0);
}


---


参考文献:


http://blog.sina.com.cn/s/blog_159aff7940102xcme.html


https://blog.csdn.net/u013033431/article/details/50907806


https://blog.csdn.net/weixin_43197380/article/details/91045946


相关文章
|
4月前
|
存储 数据可视化 计算机视觉
OpenCV(二十一):椒盐噪声和高斯噪声的产生
OpenCV(二十一):椒盐噪声和高斯噪声的产生
44 0
|
7月前
|
机器学习/深度学习 传感器 算法
【视频去噪】基于全变异正则化最小二乘反卷积是最标准的图像处理、视频去噪研究(Matlab代码实现)
【视频去噪】基于全变异正则化最小二乘反卷积是最标准的图像处理、视频去噪研究(Matlab代码实现)
|
7月前
|
机器学习/深度学习 传感器 算法
【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)
【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)
|
8月前
|
编解码 算法 Java
基于Gabor-小波滤波深度图表面法线的特征提取算法【通过正常Gabor-小波的直方图进行2D或3D特征提取】研究(Matlab代码实现)
基于Gabor-小波滤波深度图表面法线的特征提取算法【通过正常Gabor-小波的直方图进行2D或3D特征提取】研究(Matlab代码实现)
|
8月前
|
编解码 算法 数据可视化
【高光谱图像的去噪算法】通过全变异最小化对受激拉曼光谱图像进行去噪研究(Matlab代码实现)
【高光谱图像的去噪算法】通过全变异最小化对受激拉曼光谱图像进行去噪研究(Matlab代码实现)
|
8月前
|
机器学习/深度学习 传感器 算法
基于视觉显著性图和加权最小二乘优化的红外与可见光图像融合(Matlab代码实现)
基于视觉显著性图和加权最小二乘优化的红外与可见光图像融合(Matlab代码实现)
|
9月前
|
算法 计算机视觉
【信号处理】基于遗传算法的噪声图像的边缘检测(Matlab代码实现)
【信号处理】基于遗传算法的噪声图像的边缘检测(Matlab代码实现)
|
9月前
|
机器学习/深度学习 传感器 算法
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
|
11月前
|
资源调度 算法 API
OpenCV_06 图像平滑:图像噪声+图像平滑+滤波
由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高斯噪声、椒盐噪声等。
103 0
|
机器学习/深度学习 传感器 算法
【图像去噪】基于改进非局部均值的红外图像去噪研究附matlab代码
【图像去噪】基于改进非局部均值的红外图像去噪研究附matlab代码