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运算符重载用法实例
May 28 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
matplotlib作图添加表格实例代码
Jan 23 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
Django获取应用下的所有models的例子
Aug 30 Python
python_mask_array的用法
Feb 18 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
python代码中怎么换行
Jun 17 Python
python中pickle模块浅析
Dec 29 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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的博客ping服务代码
2012/02/04 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
Nuxt.js踩坑总结分享
2018/01/18 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
合同和协议有什么区别?
2014/10/08 职场文书
2014年科协工作总结
2014/12/09 职场文书
小班下学期个人总结
2015/02/12 职场文书
中国世界遗产导游词
2015/02/13 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang