多语言展示
当前在线:286今日阅读:26今日分享:39

生成高斯噪声(用opencv和python实现)

前几文介绍了给添加随机噪声,椒盐噪声的方法。现在啰嗦一下另外一个经常使用的噪声,高斯噪声。高斯噪声经常出现的出现在各种实际干扰中,或者说实际干扰经常可以用高斯白噪声模拟。原理很复杂的样子,自行百度好了。
工具/原料
1

pycharm windows7

2

opencv python

方法/步骤
1

高斯噪声是指其概率密度函数服从高斯分布的噪声。白噪声是指噪声的任意两个采样样本之间不相关两者并不是一个概念。这里先来一张正态分布的高斯噪声图

2

生成代码如下:通过随机函数生成序列,然后plot出来。import numpy as npimport cv2 as cvfrom numpy import shapeimport randomimport copyimport matplotlib.pyplot as pltserial = np.arange(0, 100) * 0.1mid, sigma = 0, 0.1 # 设置均值和方差zaosheng = np.random.normal(mid, sigma, 100) #数据生成print(serial)plt.title('')plt.plot(serial[0:100],zaosheng[0:100])plt.show()   #显示

3

下面测量是否符合正态分布还是采用直方图的方法。这是采用大样本的图

4

换个小样本的100的图对比2个样本,可以看出,效果好坏和样本数有较大关系。但规律是存在的。

5

首先生成直方图 这里选择100个点然后采用课本中的密度公式进行计算。得到数据并画图代码如下count, bins, ignored = plt.hist(zaosheng, 100, density=True)plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (bins - mid)**2 / (2 * sigma**2) ), linewidth=2, color='r')plt.show()

6

更换样本 采用1000,然后 和100对比就会发现差异所在。在样本数发生变化之后尽管我们生成的噪声看起来杂乱,但是依旧符合高斯密度公式。其实还可以在一个正玄波上叠加高斯噪声,后续再和大家一起学习。

注意事项
1

高斯噪声上用来模拟现实中的噪声,所以常用

2

本文采用np.random.normal生成序列。

推荐信息