[转]噪声简述

来源:互联网 发布:工程宝软件怎么样 编辑:程序博客网 时间:2024/05/20 20:47

0 概述

       对噪声的理解其实也是一种信号,干扰了我们原想要看到的信号(每个像素可以认为是种信号),我们关注的可能不是如何避免,因为避免不了,而应该是如何识别,并且去除尽可能的还原,去除的前提是要识别,要识别就需要知道它分为几类。

1 产生原因

       原因有两类,外部原因和内部原因。

       外部噪声即指系统外部干扰以电磁波或经电源串进系统内部而引起的噪声。如电气设备,天体放电现象等引起的噪声,而这种噪声可能就是高斯噪声、脉冲噪声等多个噪声合成累计的。

       内部噪声有四个源头:

       A)由光和电的基本性质所引起的噪声。如电流的产生是由电子或空穴粒子的集合,定向运动所形成。因这些粒子运动的随机性而形成的散粒噪声;导体中自由电子的无规则热运动所形成的热噪声;根据光的粒子性,图像是由光量子所传输,而光量子密度随时间和空间变化所形成的光量子噪声等。

       B)电器的机械运动产生的噪声。如各种接头因抖动引起电流变化所产生的噪声;磁头、磁带等抖动或一起的抖动等。 

       C)器材材料本身引起的噪声。如正片和负片的表面颗粒性和磁带磁盘表面缺陷所产生的噪声。随着材料科学的发展,这些噪声有望不断减少,但在目前来讲,还是不可避免的。

       D)系统内部设备电路所引起的噪声。如电源引入的交流噪声;偏转系统和箝位电路所引起的噪声等。

2 分类

       从统计学的观点考虑,凡是统计特征随时间变化的噪声称为平稳噪声,而统计特征随时间变化的噪声称为非平稳噪声。[ 通俗理解均值和方差接近一个常数,则是平稳的,否则是非平稳,均值和方差是统计中的指标 ]

       从噪声幅度随时间分布形状分类:幅值基本相同,但是噪声出现位置是随机的,称为椒盐噪声;而如果幅值是随机的,根据幅值大小的分布,分为高斯噪声、瑞利噪声和伽马噪声。

3 matlab产生

       高斯噪声

       也称为正态噪声,其统计特性服从正态分布。 Matlab的实现较为简单,有一个randn(M,N)的函数,用其可以产生出均值为0、方差为1、尺寸为M X N像素的高斯噪声图像。

       用以下程序就可以产生任意均值和方差的高斯噪声。

1.  a = 0;  

2.  b = 0.08;  

3.  n_gaussian = a + b .* randn(M,N);


瑞利噪声

       瑞利噪声相比高斯噪声而言,其形状向右歪斜,这对于拟合某些歪斜直方图噪声很有用。

       瑞利噪声的实现可以借由平均噪声来实现。如下所示。

       这里的表示均值为0,方差为1的均匀分布的噪声。Matlab里,使用函数rand(M,N)就可以产生一个均值为0,方差为1的均匀噪声。

1.  a = -0.2;  

2.  b = 0.03;  

3.  n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5; 

      

 伽马噪声

       伽马噪声的分布,服从了伽马曲线的分布。伽马噪声的实现,需要使用b个服从指数分布的噪声叠加而来。指数分布的噪声,可以使用均匀分布来实现。

       使用若干个(这里用b表示)均匀分布叠加,就可以得到伽马噪声。

       当然,当b=1的时候,就可以得到指数噪声了。

1.  a = 25;  

2.  b = 3;  

3.  n_Erlang = zeros(M,N);   

4.    

5.  for j=1:b  

6.      n_Erlang = n_Erlang + (-1/a)*log(1 - rand(M,N));  

7.  end  




均匀噪声

       如同前面所示,均匀噪声可以由函数rand(M,N)直接产生。

1.  a = 0;  

2.  b = 0.3;  

3.  n_Uniform = a + (b-a)*rand(M,N);  


椒盐噪声

       椒盐噪声也成为双脉冲噪声。在早期的印刷电影胶片上,由于胶片化学性质的不稳定和播放时候的损伤,会使得胶片表面的感光材料和胶片的基底欠落,在播放时候,产生一些或白或黑的损伤。事实上,这也可以归结为特殊的椒盐噪声。

       椒盐噪声的实现,需要一些逻辑判断。这里我们的思路是,产生均匀噪声,然后将超过阈值的点设置为黑点,或白点。当然,如果需要拟合电影胶片的损伤的话,可以选用别的类型噪声去拟合。

1.  a = 0.05;  

2.  b = 0.05;  

3.  x = rand(M,N);  

4.    

5.  g_sp = zeros(M,N);  

6.  g_sp = f;  

7.    

8.  g_sp(find(x<=a)) = 0;  

9.  g_sp(find(x > a & x<(a+b))) = 1;  

参考文献

http://blog.csdn.net/luoweifu/article/details/8150196

http://baike.baidu.com/view/944141.htm

http://blog.csdn.net/zhoufan900428/article/details/37695357

0 0
原创粉丝点击