当前位置: 首页 > news >正文

数字图像处理(实践篇)十三 数据增强之给图像添加噪声!

目录

一 涉及的函数

二 实践


一 涉及的函数

  • skimage.util.random_noise( )
skimage.util.random_noise(image, mode='gaussian', seed=None, clip=True, **kwargs)

函数的功能:为浮点型图片添加各种随机噪声。

输入:

①image:输入图像,将会被转换成浮点型。

②mode: 可选,为要加的噪声类型。主要有 gaussian:高斯噪声。localvar:高斯分布的加性噪声,在“图像”的每个点处具有指定的局部方差。poisson:泊松噪声。salt:盐噪声,随机将像素值变成1。pepper:椒噪声,随机将像素值变成0或-1,取决于矩阵的值是否带符号。s&p:椒盐噪声。speckle:乘噪声使用out = image + n*image,其中N是具有指定均值和方差的均匀噪声。

③seed: 可选,int型。如果选择的话,在生成噪声前会先设置随机种子以避免伪随机。

④clip: 可选,bool型。如果是True,在添加均值,泊松以及高斯噪声后,会将图片的数据裁剪到合适范围内。如果值为False,则输出矩阵的值可能会超出[-1,1]。

...

返回值:

ndarry型,且值在[0,1]或者[-1,1]之间,取决于是否有符号数。

  • skimage.util.montage( )
skimage.util.montage(arr_in, fill='mean', rescale_intensity=False, grid_shape=None, padding_width=0, multichannel=False, *, channel_axis=None)

函数功能:创建多个单通道或多通道图像的蒙太奇。

输入:

arr_in:一个数组,表示 K 个形状相同的图像的集合。

fill:可选。

rescale_intensity:布尔型,可选。是否将每张图像的强度重新缩放为 [0, 1]。

grid_shape:元组,可选。

padding_width:int, 可选。

multichannel:布尔值,可选。此参数已弃用改为指定 channel_axis

channel_axis:int,可选。

返回:

输入图像粘合在一起的输出数组(包括填充p)。

二 实践

1 实践①

  • 代码
from skimage.io import imread
from skimage.util import random_noise
import matplotlib.pyplot as plt
def dealImageResult(img_path):im = imread(img_path)gaussian_noisy_img = random_noise(im, mode='gaussian', var=0.5**2)poisson_noisy_img = random_noise(im, mode='poisson')pepper_noisy_img = random_noise(im, mode='pepper')salt_noisy_img = random_noise(im, mode='salt')sp_noisy_img = random_noise(im, mode='s&p')fig = plt.figure(figsize=(10, 10))titles = ["img", " gaussian", "poisson", "pepper", "salt", "s&p"]images = [im, gaussian_noisy_img, poisson_noisy_img, pepper_noisy_img, salt_noisy_img, sp_noisy_img]for i in range(6):plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')plt.title(titles[i])plt.xticks([]), plt.yticks([])plt.show()fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':dealImageResult("3.jpg")pass
  • 结果图

2 实践②

  • 代码
import numpy as np
from skimage.io import imread
from skimage.util import random_noise, montage
import matplotlib.pyplot as plt
def dealImageResult(img_path):im = imread(img_path)sigmas = np.linspace(0, 1, 9)noisy_images = np.zeros((9, im.shape[0], im.shape[1], im.shape[2]))for i in range(len(sigmas)):noisy_images[i, :, :, :] = random_noise(im, var=sigmas[i]**2)noisy_montage = montage(noisy_images, rescale_intensity=True, channel_axis=-1)fig = plt.figure(figsize=(10, 10))plt.imshow(noisy_montage)plt.title('Noisy montage', size=10)plt.axis('off')plt.show()fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':dealImageResult("5.jpg")pass
  • 结果图

前文回顾

入门篇目录

 数字图像处理(入门篇)一 图像的数字化与表示

 数字图像处理(入门篇)二 颜色空间

 数字图像处理(入门篇)三 灰度化

 数字图像处理(入门篇)四 像素关系

 数字图像处理(入门篇)五 图像数据预处理之颜色空间转换

 数字图像处理(入门篇)六 图像数据预处理之坐标变化

 数字图像处理(入门篇)七 图像数据预处理之灰度变化

 数字图像处理(入门篇)八 图像数据预处理之直方图

 数字图像处理(入门篇)九 图像数据预处理之滤波

 数字图像处理(入门篇)十 边缘检测

 数字图像处理(入门篇)十一 形态学处理

 数字图像处理(入门篇)十二 自适应阈值分割

 数字图像处理(入门篇)十三 仿射变换

 数字图像处理(入门篇)十四 透视变换

实践篇目录

数字图像处理(实践篇)一 将图像中的指定目标用bBox框起来吧!

数字图像处理(实践篇)二 画出图像中目标的轮廓

数字图像处理(实践篇)三 将两张图像按照指定比例融合

数字图像处理(实践篇)四 图像拼接-基于SIFT特征点和RANSAC方法

数字图像处理(实践篇)五 使用Grabcut算法进行物体分割

数字图像处理(实践篇)六 利用hough变换进行直线检测

数字图像处理(实践篇)七 利用霍夫变换进行圆环检测

数字图像处理(实践篇)八 Harris角点检测

数字图像处理(实践篇)九 基于边缘的模板匹配

数字图像处理(实践篇)十 图像质量检测

数字图像处理(实践篇)十一 图像中的条形码解析

数字图像处理(实践篇)十二 基于小波变换的图像降噪

相关文章:

  • 大数据HCIE成神之路之数学(4)——最优化实验
  • Mysql DDL语句建表及空字符串查询出0问题
  • Pytorch中的Net.train()和 Net.eval()函数讲解
  • 第二部分 系统管理篇
  • 数据结构算法-分支定界算法
  • A*算法学习
  • Kubernetes概念
  • git stash save untracked not staged
  • Android-Jetpack--Hilt详解
  • 【活动回顾】sCrypt在2023伦敦区块链大会上的精彩表现
  • 基于谷歌Flutter的媒体资讯APP的设计与实现
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • tcpdump使用心得
  • Spark_spark hints 详细介绍
  • Golang中WebSocket和WSS的支持
  • Android 控件背景颜色处理
  • canvas 五子棋游戏
  • C语言笔记(第一章:C语言编程)
  • Fundebug计费标准解释:事件数是如何定义的?
  • golang 发送GET和POST示例
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Java教程_软件开发基础
  • Laravel 中的一个后期静态绑定
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Promise初体验
  • Promise面试题2实现异步串行执行
  • Redis 中的布隆过滤器
  • 包装类对象
  • 回顾 Swift 多平台移植进度 #2
  • 深入 Nginx 之配置篇
  • 数据可视化之 Sankey 桑基图的实现
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (11)MATLAB PCA+SVM 人脸识别
  • (BFS)hdoj2377-Bus Pass
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二)斐波那契Fabonacci函数
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (三) diretfbrc详解
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)shell调试方法
  • (转)甲方乙方——赵民谈找工作
  • (转)四层和七层负载均衡的区别
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .Net 高效开发之不可错过的实用工具
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .Net中wcf服务生成及调用
  • @Pointcut 使用
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [<死锁专题>]
  • [AIGC] Spring Interceptor 拦截器详解
  • [BZOJ4010]菜肴制作
  • [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)