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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
Python中基础的socket编程实战攻略
Jun 01 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
python简单贪吃蛇开发
Jan 28 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
Python对wav文件的重采样实例
Feb 25 Python
15个Pythonic的代码示例(值得收藏)
Oct 29 Python
OpenCV-Python实现图像平滑处理操作
Jun 08 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输入流php://input介绍
2012/09/18 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
javascript 二分法(数组array)
2010/04/24 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
python变量不能以数字打头详解
2016/07/06 Python
python实现解数独程序代码
2017/04/12 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
python实现网页自动签到功能
2019/01/21 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
会计与审计专业大专生求职信
2013/10/03 职场文书
法律专业推荐信范文
2013/11/29 职场文书
四年大学自我鉴定
2014/02/17 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
《比的意义》教学反思
2016/02/18 职场文书