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


Posted in Python onApril 06, 2022

导读:

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

python使用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)

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

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)

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

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)

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

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对图像添加噪声(高斯/椒盐/泊松/斑点)的文章就介绍到这了,更多相关python使用opencv内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python获取当前用户的主目录路径方法(推荐)
Jan 12 Python
python实现决策树分类算法
Dec 21 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
python 高效去重复 支持GB级别大文件的示例代码
Nov 08 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
Python文件时间操作步骤代码详解
Apr 13 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
python ConfigParser库的使用及遇到的坑
Feb 12 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
浅谈Python中对象是如何被调用的
Apr 06 #Python
Python实现猜拳与猜数字游戏的方法详解
python字符串的一些常见实用操作
Apr 06 #Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 #Python
Python Numpy库的超详细教程
进行数据处理的6个 Python 代码块分享
Apr 06 #Python
You might like
利用PHP制作简单的内容采集器的原理分析
2008/10/01 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
python Flask实现restful api service
2017/12/04 Python
Django如何自定义分页
2018/09/25 Python
使用numba对Python运算加速的方法
2018/10/15 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
高一家长会邀请函
2014/01/12 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
《燕子》教学反思
2014/02/18 职场文书
故宫英文导游词
2015/01/31 职场文书
欢迎新生标语2015
2015/07/16 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android
Python学习之包与模块详解
2022/03/19 Python
ubuntu下常用apt命令介绍
2022/06/05 Servers