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 相关文章推荐
详解Python3中yield生成器的用法
Aug 20 Python
对python3 urllib包与http包的使用详解
May 10 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
python递归实现快速排序
Aug 18 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 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
短波收音机简介
2021/03/01 无线电
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
Python socket编程实例详解
2015/05/27 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
python变量的作用域是什么
2020/05/26 Python
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
大专生毕业的自我评价
2014/02/06 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技