您的位置:首页 > 其它

【图像处理】常见图像噪声模型和生成方法

2016-05-07 20:15 330 查看
常见的噪声模型有(z是噪声值,μ表示均值,s2表示方差):

1、高斯噪声


2、瑞里噪声

μ=a+sqrt(pi*b/4),s2=b(4-pi)/4

3、伽马噪声

μ=b/a,s2=b/a^2

4、指数分布噪声

μ=1/a,s2=1/a^2

5、均匀分布噪声

μ=(a+b)/2,s2=(b-a)^2/12

6、椒盐噪声

其中盐表示亮点,椒表示暗点。

7、周期噪声,比如空间域图像受到正弦波信号干扰。

 

现在我们来试着给图像加上噪声。C++,python,matlab提供了普通随机数和服从高斯分布的随机数,可以直接生成椒盐噪声、均匀分布噪声和高斯噪声。但是剩下的几种噪声模型,要生成服从这些噪声模型的随机数就不太容易了。假设我们只能获取普通随机数,现在要把普通随机数变成服从特定函数分布的随机数,在连续系统下是很困难的,但是离散系统下有多种方法可以使用。比如给出一个很大的、有重复元素的集合,集合内元素的数量比上集合总数就是该元素在特定函数分布中应该出现的概率,这样随机获取集合的元素,出现某种元素的概率是服从特定的分布的。我使用另外一种方法。

假设当前图像像素范围为[0,255],我们将当前概率密度函数映射为p(x),x属于[0,255],然后通过累加方法求出概率函数F(x),x属于[0,255],注意这里F(255)=1,否则需要进行归一化。之后我获取普通随机数r,搜索得出r的值处于F(i)和F(i+1)之间,那么我就把i或者i+1作为获取到的服从p(x)分布的随机数。

获取服从分布的随机数r之后,再通过随机数生成(x,y)位置,给该点像素值加上r作为噪声。
https://github.com/artzers/NGImageProcessor.git  href="https://github.com/artzers/NGImageProcessor/blob/master/ImageNoiseGenerator.py" target=_blank>ImageNoiseGenerator.py
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: