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 相关文章推荐
Golang与python线程详解及简单实例
Apr 27 Python
Tensorflow之Saver的用法详解
Apr 23 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
python3 求约数的实例
Dec 05 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
python 获取谷歌浏览器保存的密码
Jan 06 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 03 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运行环境教程
2015/02/12 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
jQuery实现冻结表头的方法
2015/03/09 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
wxpython绘制音频效果
2019/11/18 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
高性能装备提升营地:Kammok
2019/02/27 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
中学运动会广播稿
2014/01/19 职场文书
开学季活动策划方案
2014/02/28 职场文书
矿泉水广告词
2014/03/20 职场文书
公司运动会策划方案
2014/05/25 职场文书
个人融资协议书
2014/10/02 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers