python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)

 更新时间:2022年04月06日 10:08:44   作者:修炼之路  
这篇文章主要介绍了python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点),具有一定的学习价值,需要的小伙伴可以参考一下,希望对你有所帮助

导读:

这篇文章主要介绍如何利用opencv来对图像添加各类噪声,原图:

1、高斯噪声

高斯噪声就是给图片添加一个服从高斯分布的噪声,可以通过调节高斯分布标准差(sigma)的大小来控制添加噪声程度,sigma越大添加的噪声越多图片损坏的越厉害

#读取图片
img = cv2.imread("demo.png")
#设置高斯分布的均值和方差
mean = 0
#设置高斯分布的标准差
sigma = 25
#根据均值和标准差生成符合高斯分布的噪声
gauss = np.random.normal(mean,sigma,(img_height,img_width,img_channels))
#给图片添加高斯噪声
noisy_img = image + gauss
#设置图片添加高斯噪声之后的像素值的范围
noisy_img = np.clip(noisy_img,a_min=0,a_max=255)
#保存图片
cv2.imwrite("noisy_img.png",noise_img)

2、椒盐噪声

椒盐噪声就是给图片添加黑白噪点,椒指的是黑色的噪点(0,0,0)盐指的是白色的噪点(255,255,255),通过设置amount来控制添加噪声的比例,值越大添加的噪声越多,图像损坏的更加严重

#读取图片
img = cv2.imread("demo.png")
#设置添加椒盐噪声的数目比例
s_vs_p = 0.5
#设置添加噪声图像像素的数目
amount = 0.04
noisy_img = np.copy(image)
#添加salt噪声
num_salt = np.ceil(amount * image.size * s_vs_p)
#设置添加噪声的坐标位置
coords = [np.random.randint(0,i - 1, int(num_salt)) for i in image.shape]
noisy_img[coords] = 255
#添加pepper噪声
num_pepper = np.ceil(amount * image.size * (1. - s_vs_p))
#设置添加噪声的坐标位置
coords = [np.random.randint(0,i - 1, int(num_pepper)) for i in image.shape]
noisy_img[coords] = 0
#保存图片
cv2.imwrite("noisy_img.png",noise_img)

3、泊松噪声

#读取图片
img = cv2.imread("demo.png")
#计算图像像素的分布范围
vals = len(np.unique(image))
vals = 2 ** np.ceil(np.log2(vals))
#给图片添加泊松噪声
noisy_img = np.random.poisson(image * vals) / float(vals)
#保存图片
cv2.imwrite("noisy_img.png",noise_img)

4、speckle噪声

#读取图片
img = cv2.imread("demo.png")
#随机生成一个服从分布的噪声
gauss = np.random.randn(img_height,img_width,img_channels)
#给图片添加speckle噪声
noisy_img = image + image * gauss
#归一化图像的像素值
noisy_img = np.clip(noisy_img,a_min=0,a_max=255)
#保存图片
cv2.imwrite("noisy_img.png",noise_img)

到此这篇关于python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)的文章就介绍到这了,更多相关python使用opencv内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • rsa详解及例题及python算法

    rsa详解及例题及python算法

    RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,这篇文章主要介绍了rsa 详解及例题及python,需要的朋友可以参考下
    2022-04-04
  • 使用Python绘制图表大全总结

    使用Python绘制图表大全总结

    本篇文章主要介绍了使用Python绘制图表大全总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 简单谈谈python中的语句和语法

    简单谈谈python中的语句和语法

    下面小编就为大家带来一篇简单谈谈python中的语句和语法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 解决Django transaction进行事务管理踩过的坑

    解决Django transaction进行事务管理踩过的坑

    这篇文章主要介绍了解决Django transaction进行事务管理踩过的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • python实现寻找最长回文子序列的方法

    python实现寻找最长回文子序列的方法

    这篇文章主要为大家详细介绍了python实现寻找最长回文子序列的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Python实现克里金插值法的过程详解

    Python实现克里金插值法的过程详解

    克里金算法提供的半变异函数模型有高斯、线形、球形、阻尼正弦和指数模型等,在对气象要素场插值时球形模拟比较好。本文将用Python实现克里金插值法,感兴趣的可以了解一下
    2022-11-11
  • 深入了解python装饰器

    深入了解python装饰器

    这篇文章主要介绍了解python装饰器,装饰器定义一个为其他函数添加功能的函数,装饰器就是在不修改装饰对象源代码以及调用方式的前提下,为装饰对象添加新功能,下面和小编一起进入文章内容了解更多知识,需要的朋友可以参考一下
    2022-03-03
  • 利用Python展示文件下载进度条

    利用Python展示文件下载进度条

    这篇文章主要介绍了Python展示文件下载进度条,requests库相信大家都用过,做接口测试少不了它。其实我们平时下载文件,也可以用requests做到的,通过一些地址,下面我们就来看看具体是什么样的地址及详细内容,需要的朋友可以参考一下
    2021-11-11
  • Python matplotlib实战之气泡图绘制

    Python matplotlib实战之气泡图绘制

    气泡图是一种多变量的统计图表,可以看作是散点图的变形,这篇文章主要为大家介绍了如何使用Matplotlib绘制气泡图,需要的小伙伴可以参考下
    2023-08-08
  • python字典的值可以修改吗

    python字典的值可以修改吗

    在本篇文章里小编给大家分享的是一篇关于python字典的值修改的方法步骤,需要的朋友们可以学习下。
    2020-06-06

最新评论