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使用os模块的os.walk遍历文件夹示例
Jan 27 Python
python实现图片批量剪切示例
Mar 25 Python
python循环监控远程端口的方法
Mar 14 Python
python开发利器之ulipad的使用实践
Mar 16 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
Python函数式编程
Jul 20 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
使用Pyhton集合set()实现成果查漏的例子
Nov 24 Python
python如何写try语句
Jul 14 Python
python中如何使用虚拟环境
Oct 14 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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
str_replace只替换一次字符串的方法
2013/04/09 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
javascript比较文档位置
2008/04/08 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
node获取客户端ip功能简单示例
2019/08/24 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
Python3多线程操作简单示例
2018/05/22 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
Python实现代码块儿折叠
2020/04/15 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
美国羊皮公司:Overland
2018/01/15 全球购物
2014年党务公开实施方案
2014/02/27 职场文书
水毁工程实施方案
2014/04/01 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL