在matlab中,存在执行直接得函数来添加高斯噪声和椒盐噪声.Python-OpenCV中虽然不存在直接得函数,但是很容易使用相关的函数来实现。
代码:
进口numpy np 进口随机 进口cv2 概率def sp_noise(图片): “‘ 添加椒盐噪声 问题:噪声比例 “‘ 输出=np.zeros (image.shape np.uint8) 用力推=1 -概率 因为我在范围(image.shape [0]): j的范围(image.shape [1]): rdn=random.random () 如果rdn & lt;问题提出: 输出[我][j]=0 elif rdn祝辞刺: 输出[我][j]=255 其他: 图像输出[我][j]=[我][j] 返回输出 def gasuss_noise(图片,意味着=0,var=0.001): “‘ 添加高斯噪声 意思是:均值 var:方差 “‘ 形象=np。数组(图片/255,dtype=浮动) 噪音=np.random。正常(var * * 0.5, image.shape)=图像+噪音 如果out.min () & lt;0: low_clip=1。 其他: low_clip=0。=np。剪辑(low_clip, 1.0)=np.uint8 (* 255) #简历。imshow (“gasuss”) 返回了 >之前可见,只要我们得到满足某个分布的多维数组,就能作为噪声添加到图片中。
例如:
进口cv2 进口numpy np 在在在我=np.empty ((5,5), np.uint8) #需要预先分配输入图像 在在在即时通讯 阵列([[248、168、58、2、1],#未初始化的内存是随机的,太& # 63;乐趣,) [0,100,2 0 101), [0,0,106 2 0], [131年2 0 90 3), 100年[0,1 0 83]],dtype=uint8) 在在在我=np.zeros ((5,5), np.uint8) #现在严重。 在在在即时通讯 阵列([[0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0]],dtype=uint8) 在在在cv2.randn (im(0)(99) #正常 阵列([[0 76 0 129 0], [0,0,0,188,27岁), 152年[0,0,0,0), (0,0,134,79,0], [0,181,128,0]],dtype=uint8) 在在在cv2.randu (im(0)(99) #制服 阵列([[19日,53岁,2、86、82), (86,73,64,78]。 [34,20,62、80、7], [24日,92年,37岁,60岁,72), [33 40岁,12日,27日,18]],dtype=uint8) >之前然后再:
img=? 噪音=? 形象=img +噪音 >之前
1, https://stackoverflow.com/questions/22937589/how-to-add-noise-gaussian-salt-and-pepper-etc-to-image-in-python-with-opencv
2, https://stackoverflow.com/questions/14435632/impulse-gaussian-and-salt-and-pepper-noise-with-opencv
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
使用Python-OpenCV向图片添加噪声的实现(高斯噪声,椒盐噪声)