模拟生成高斯噪声

之前有做过在图像上加高斯噪声的实验,在模拟生成随机数,以及产生高斯分布噪声时,受到了一些干扰。尤其是和高斯模糊相混淆。对于初学者来说,这些虽然是一些基本的图像处理知识,但是,眼高手低是很要不得的。只有积累足够了,才能游刃有余。因为我也是新手,希望不断的积累。

在网上有很多介绍高斯噪声的,有的是抄的,有的很随意的罗列一点公式,有的没有说明怎么做,这一点很烦。因为综述性的东西一搜一大堆,没必要再搞了。这就不是搞知识了。知识要让别人易懂,而不是搞的很玄乎,显得自己很有水平。相反,我觉得,把问题说明白了,才能让别人懂。尤其是对于程序员来说,不可能还要仔细推理,揣摩你的意思。

 

高斯模糊

高斯模糊实际上就和均值处理,中值处理相似。就是先产生一个高斯核,用这个高斯核模板去滑动处理图像的每个像素就行了。一个典型的二维高斯核模板是:

[1/16 1/8 1/16; 1/8 1/4 1/8; 1/16 1/8 1/16 ]

这个是3*3的模板。大致给个公式说明一下怎么模糊:

F(x,y)= 1/16 * f(x-1,y-1) + 1/8 * f(x-1,y) + 1/16*f(x-1,y+1) +

   1/8 * f(x,y-1) + 1/4 * f(x,y) + 1/8*f(x,y+1)  +

 1/16 * f(x+1,y-1) + 1/8 * f(x+1,y) + 1/16*f(x+1,y+1) 

F(x,y)是新生成图像在(x,y)位置的灰度值,f(x-1,y-1) 到f(x+1,y+1)是以(x,y)为中心的图像灰度值。

高斯噪声

高斯噪声和高斯模糊是很不一样的。假设一幅图像 I图像中每个像素的灰度值为I(x, y). 对图像加高斯噪声实际上就是对图像的灰度值操作。加性高斯噪声的数学公式为:

 

G(x,y) = f(x,y)  + n(x,y);

 

关键的问题是如何产生这个n(x,y)。高斯分布概率密度的数学表达式为:

 

F(x;\mu,\sigma)=\frac{1}{\sigma\sqrt{2\pi}}\int_{-\infty}^x \exp \left( -\frac{(x - \mu)^2}{2\sigma^2}\ \right)\, dx.

 

至于这个详细的解释就不说了。通过整理,大致说一下怎么生成这个n(x,y)。这个生成的方法跟上面的公式在表面上相差比较大。

具体步骤:(均值为m,方差为σ)

1).首先生成两个随机数a 和 b,大致公式为:

 

    Xi = (X(i-1) *A + C)%M

 

X(i-1)是前一个值,A,C,M是常数。可以用系统时间来得到这个X(i-1)=YY/MM/DD, 然后取小数点后第一位。可以根据需要自己定算法。反正都是伪随机。

 

2) 根据box-muller算法得到下面的具有高斯分布性质的两个数:

N = sqrt(-2*ln(a)) cos(2*PI*b) 

或者 

N = sqrt(-2*ln(a)) sin(2*PI*b) 

 

3) 图像加噪声:

F(x,y) = f(x,y) + (m + N * σ)

 

代码什么的就不贴了,很简单的。至于具体随机数怎么生成,可以再看看其他博客。这个只是一个参考。毕竟真正的随机数是很难搞的。

欢迎关注公众号

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值