python使用opencv对图像添加(高斯/椒盐/泊松/斑点)噪声
导读
这篇文章主要介绍如何利用opencv来对图像添加各类噪声,原图
高斯噪声
高斯噪声就是给图片添加一个服从高斯分布的噪声
,可以通过调节高斯分布标准差(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)
椒盐噪声
椒盐噪声就是给图片添加黑白噪点
,椒指的是黑色的噪点(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[0],coords[1],:] = [255,255,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],coords[1],:] = [0,0,0]
#保存图片
cv2.imwrite("noisy_img.png",noise_img)
泊松噪声
#读取图片
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)
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
开门见山,直接使用 skimage 库为图像添加高斯噪声是很简单的: import skimageorigin = skimage.io.imread("./lena.png") ...
- 使用Python和OpenCV检测图像中的条形码
使用Python和OpenCV检测图像中的条形码 1. 效果图 2. 算法的步骤 3. 源码 参考 这篇博客将介绍使用计算机视觉和图像处理技术进行条形码检测的必要步骤,并演示使用Python编程语言和 ...
- 使用Python,OpenCV查找图像中的最亮点
Python,OpenCV找出图像中的最亮点 1. 原理 2. 优化 3. 效果图 4. 源码 参考 这篇博客将向您展示如何使用Python和OpenCV查找图像中的最亮点,以及应用单行预处理代码-- ...
- 使用Python和OpenCV在图像之间执行超快速的颜色转换
使用Python和OpenCV在图像之间执行超快速的颜色转换 1. 效果图 2. 原理 2.1 颜色转移算法 2.2 步骤 2.3 算法改进 3. 源码 参考 这篇博客将介绍如何使用Python和Op ...
- 使用Python、OpenCV进行图像接缝雕刻
使用Python.OpenCV进行图像接缝雕刻 1. 效果图 2. 原理 3. 安装--鉴于算法的专利原因,0.16以上版本均去掉了接缝雕刻算法: 4. 源码 参考 这篇博客将介绍基于图像内容感知调整 ...
- 使用Python和OpenCV构建图像金字塔
使用Python和OpenCV的图像金字塔 1. 效果图 2. 什么是图像金字塔? 3. 依赖 4. 源码 参考 这篇博客将介绍如何使用两种方法构造图像金字塔. 使用Python和OpenCV构建金字 ...
- Python,OpenCV骨架化图像并显示(skeletonize)
Python,OpenCV骨架化图像并显示(skeletonize) 1. 效果图 2. 源码 参考: 1. 效果图 自己画一张图,原图 VS 骨架效果图如下: opencv logo原图 VS 骨架 ...
- 使用Python,OpenCV制作图像Mask——截取ROIs及构建透明的叠加层
使用Python,OpenCV制作图像Mask--截取ROIs及构建透明的叠加层 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用OpenCV制作Mask图像掩码.使用位运算和图像掩码允许我们只 ...
- 使用Python,OpenCV实现图像和实时视频流中的人脸模糊和马赛克
使用Python,OpenCV实现图像和实时视频流中的人脸模糊和人脸马赛克 1. 效果图 2. 原理 2.1 什么是人脸模糊,如何将其用于人脸匿名化? 2.2 执行人脸模糊/匿名化的步骤 3. 源码 ...
最新文章
- java druid sqlite_springboot整合druid抛出dbType not support : sqlite异常
- LeetCode 548. 将数组分割成和相等的子数组(哈希set)
- 初出茅庐的小李第55篇博客之ESP32点亮WS2812B彩灯
- 佰维存储通过注册:拟募资8亿 国家集成电路基金是二股东
- POJ 2706 棋盘连线游戏(模拟)
- 计算机界面一直闪,电脑光标一直闪烁怎么办?Win7左上角白杠一直闪解决方法...
- 2018.8.7 ACM 信息学奥赛之数学一本通 暑假训练总结(生死看淡,不服就干)
- linux中无法联网小电脑图标不见,电脑桌面上的网络连接图标突然不见怎么解决?...
- 攻防世界 Crypto高手进阶区 3分题 wtc_rsa_bbq
- 《编程之美》 查找最大(小)的k个元素
- Java图形化GUI界面
- <router-link>
- 天下文章一大抄 mysql远程连接
- margin设置百分比
- 淘宝旺旺智能回复软件 旺旺智能客服 旺旺聊天机器人
- eclipse java配色_eclips配色
- 我的至爱《约翰克里斯朵夫》读书笔记
- 容器定义存储(CDS)—春江水暖Portworx先知
- kettle_Day4_Hop的作用
- 大数据可精细化推进“供给侧”改革
热门文章
- Week 12 Homework
- 产品解读丨鸿翼ISO质量体系文件管理系统 合规 安全 高效
- 一文入门Golang文件操作——增删改查【超基础】
- 小孩学python有意义吗-少儿编程启蒙阶段有必要报班吗?看团妈的测评
- python参数默认值
- php第一季视频教程 李,PHP第一季视频教程(李炎恢+php100 不断更新)
- matlab 噪声(随机数)生成函数
- roboguide如何调节示教器大小,如何拖动示教器位置
- 材料成型计算机模拟第三版,材料成型计算机模拟考试复习资料
- 金蝶KIS专业版V14.1销售毛利润明细表增加新列和修复报表成本算法