imgaug库指南(五):从入门到精通的【图像增强】之旅

引言

在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的关键所在。而imgaug,作为一个功能强大的图像增强库,为我们提供了简便且高效的方法来扩充数据集。本系列博客将带您深入了解如何运用imgaug进行图像增强,助您在深度学习的道路上更进一步。我们将从基础概念讲起,逐步引导您掌握各种变换方法,以及如何根据实际需求定制变换序列。让我们一起深入了解这个强大的工具,探索更多可能性,共同推动深度学习的发展。


前期回顾

链接主要内容
imgaug库指南(一):从入门到精通的【图像增强】之旅介绍了imgaug库的主要功能、安装方式、提供一个简单的数据增强示例(针对一副图像)
imgaug库指南(二):从入门到精通的【图像增强】之旅介绍了如何利用imgaug库对批量图像进行数据增强并可视化
imgaug库指南(三):从入门到精通的【图像增强】之旅详细介绍了imgaug库的数据增强方法 —— 高斯模糊
imgaug库指南(四):从入门到精通的【图像增强】之旅详细介绍了imgaug库的数据增强方法 —— 均值模糊

在本博客中,我们将向您详细介绍imgaug库的数据增强方法 —— 中值模糊/滤波


中值模糊/滤波(AverageBlur)

功能介绍

iaa.MedianBlur是imgaug库中的一个方法,用于对图像进行中值模糊。中值模糊是一种非线性滤波方法,主要用于消除图像中的噪声。对于一些特定的噪声类型,如盐与胡椒噪声,中值模糊通常能取得较好的效果。

语法

iaa.MedianBlur方法的基本语法如下:

import imgaug.augmenters as iaa
aug = iaa.MedianBlur(k=(3, 11))
  • k为整数,那么卷积核的核大小为k;
  • k为包含两个整数的元组 (a, b),核大小将从 [a…b] 区间中随机采样一个奇数;
  • k为包含 两个整数元组 的元组 ((a, b), (c, d)),则每张图像将从 [a…b] 区间中采样随机核高度,从 [c…d] 区间中采样随机核宽度;

示例代码

  1. 使用不同卷积核大小
import cv2
import imgaug.augmenters as iaa
import matplotlib.pyplot as plt

# 读取图像
img_path = r"D:\python_project\lena.png"
img = cv2.imread(img_path)
image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 创建均值模糊增强器
aug1 = iaa.MedianBlur(k=3)
aug2 = iaa.MedianBlur(k=7)
aug3 = iaa.MedianBlur(k=15)

# 对图像进行均值模糊处理
blurred_image1 = aug1(image=image)
blurred_image2 = aug2(image=image)
blurred_image3 = aug3(image=image)

# 展示原始图像和模糊后的图像
fig, axes = plt.subplots(2, 2, figsize=(10, 10))
axes[0][0].imshow(image)
axes[0][0].set_title("Original Image")
axes[0][1].imshow(blurred_image1)
axes[0][1].set_title("Blurred Image1")
axes[1][0].imshow(blurred_image2)
axes[1][0].set_title("Blurred Image2")
axes[1][1].imshow(blurred_image3)
axes[1][1].set_title("Blurred Image3")
plt.show()

运行结果如下:

图1 原图及中值模糊/滤波结果可视化

  1. 利用中值滤波清除椒盐噪声
import cv2
import imgaug.augmenters as iaa
import matplotlib.pyplot as plt

# 读取图像
img_path = r"D:\python_project\lena.png"
img = cv2.imread(img_path)
image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

## 对lena图像添加椒盐噪声
# 10%像素添加椒盐噪声
aug_noise1 = iaa.SaltAndPepper(0.1, per_channel=True)
# 30%像素添加椒盐噪声
aug_noise2 = iaa.SaltAndPepper(0.3, per_channel=True)
# 50%像素添加椒盐噪声
aug_noise3 = iaa.SaltAndPepper(0.5, per_channel=True)

# 创建均值模糊增强器
aug1 = iaa.MedianBlur(k=3)

# 对图像进行均值模糊处理
noised_image1 = aug_noise1(image=image)
noised_image2 = aug_noise2(image=image)
noised_image3 = aug_noise3(image=image)

denoised_image1 = aug1(image=noised_image1)
denoised_image2 = aug1(image=noised_image2)
denoised_image3 = aug1(image=noised_image3)

# 展示原始图像和模糊后的图像
fig, axes = plt.subplots(2, 3, figsize=(15, 10))
axes[0][0].imshow(noised_image1)
axes[0][0].set_title("Noised Image1")
axes[0][1].imshow(noised_image2)
axes[0][1].set_title("Noised Image2")
axes[0][2].imshow(noised_image3)
axes[0][2].set_title("Noised Image3")
axes[1][0].imshow(denoised_image1)
axes[1][0].set_title("Denoised Image1")
axes[1][1].imshow(denoised_image2)
axes[1][1].set_title("Denoised Image2")
axes[1][2].imshow(denoised_image3)
axes[1][2].set_title("Denoised Image3")
plt.show()

运行结果如下:

图2 椒盐噪声图像及其去噪图像可视化

注意事项

  1. 核大小的选择:中值模糊的效果很大程度上取决于所选择的核大小。在大多数情况下,选择奇数大小的核(如3, 5, 7等)是比较好的。核大小的选择需要权衡模糊程度和细节保留。
  2. 计算效率:对于较大的图像,中值模糊可能会比较耗时,因为它需要对每个像素周围的区域进行排序。
  3. 与其他增强器的结合使用imgaug库提供了许多其他图像增强方法,可以与中值模糊结合使用以获得更丰富的效果。例如,可以与亮度调整、对比度调整、噪声添加等增强器结合使用。
  4. 结果的可重复性:由于中值模糊是非线性操作,每次应用可能会产生稍微不同的结果。为了确保结果的可重复性,可以使用aug.to_deterministic()方法将增强器转换为确定性状态。

总结

iaa.MedianBlurimgaug库中一个非常有用的中值模糊增强器。它可以有效地消除图像中的椒盐噪声,并且在与其他增强器结合使用时,可以创造出丰富多样的图像效果。然而,使用时需要注意核大小的选择、计算效率、与其他增强器的结合使用以及结果的重复性等问题。


小结

imgaug是一个强大的图像增强库,它可以帮助你创建出丰富多样的训练数据,从而改进你的深度学习模型的性能。通过定制变换序列和参数,你可以轻松地适应各种应用场景,从计算机视觉到医学影像分析。随着深度学习的发展,imgaug在未来将继续发挥重要作用。因此,将imgaug纳入你的数据增强工具箱是一个明智的选择。

参考链接


结尾

亲爱的读者,首先感谢抽出宝贵的时间来阅读我们的博客。我们真诚地欢迎您留下评论和意见,因为这对我们来说意义非凡。
俗话说,当局者迷,旁观者清。的客观视角对于我们发现博文的不足、提升内容质量起着不可替代的作用。
如果您觉得我们的博文给您带来了启发,那么,希望能为我们点个免费的赞/关注您的支持和鼓励是我们持续创作的动力
请放心,我们会持续努力创作,并不断优化博文质量,只为给带来更佳的阅读体验。
再次感谢的阅读,愿我们共同成长,共享智慧的果实!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/295030.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法每日一题:统计重复个数 | 字符串

大家好,我是星恒 感觉好难呀呀呀!今天是一道困难题目,思路挺简单,但是有些细节点不是很容易想通,建议大家多画图试一试,这样就会好理解许多 题目:leetcode 466定义 str [s, n] 表示 str 由 n 个…

深圳易图讯科技VR三维电子沙盘系统

易图讯VR三维电子沙盘系统是一种结合虚拟现实技术的地理信息系统。它通过高精度三维模型,真实再现了地理环境、建筑布局和地形地貌。用户可通过VR设备沉浸式体验这一虚拟世界,进行各种交互操作,如缩放、旋转、移动等。系统还支持实时数据更新…

软件测试关于adb命令⼤全

adb的全称为Android Debug Bridge 调试桥,是连接Android⼿机与PC端的桥梁,通过adb可以管理、操作模拟器和设备,如安装软件、 系统升级、运⾏shell命令等。 0. adb服务相关操作 adb kill-server #终⽌adb服务进程 adb start-server #重启ad…

当试图回复传入消息时,消息应用程序会闪烁

问题描述: Actual Results: Unable to reply for incoming message as Messaging app flickers and closes. Expected Results: User should be able to send reply for incoming messages. Reproduction Steps: Stay in home screen. Receive an incoming mes…

新一代爬取JavaScript渲染页面的利器-playwright(二)

接上文:新一代爬取JavaScript渲染页面的利器-playwright(一)   上文我们主要讲了Playwright的特点、安装、基本使用、代码生成的使用以及模拟移动端浏览,这篇我们主要讲下Playwright的选择器以及常见的操作方法。 6.选择器 我们…

Linux 进程(十) 进程替换

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec*函数以执行另一个程序。当进程调用一种exec*函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec*并不创建新进程,所以调用exec*前…

【Bootstrap学习 day13】

Bootstrap5 下拉菜单 下拉菜单通常用于导航标题内&#xff0c;在用户鼠标悬停或单击触发元素时显示相关链接列表。 基础的下拉列表 <div class"dropdown"><button type"button" class"btn btn-primary dropdown-toggle" data-bs-toggl…

虚幻UE 增强输入-第三人称模板增强输入分析与扩展

本篇是增强输入模块&#xff0c;作为UE5.0新增加的模块。 其展现出来的功能异常地强大&#xff01; 让我们先来学习学习一下第三人称模板里面的增强输入吧&#xff01; 文章目录 前言一、增强输入四大概念二、使用步骤1、打开增强输入模块2、添加IA输入动作2、添加IMC输入映射内…

安防监控EasyCVR视频融合/汇聚平台大华热成像摄像机智能告警上报配置步骤

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

第三届先进控制、自动化与机器人国际会议(ICACAR 2024) | Ei、Scopus双检索

会议简介 Brief Introduction 2024年第三届先进控制、自动化与机器人国际会议(ICACAR 2024) 会议时间&#xff1a;2024年5月24-26日 召开地点&#xff1a;中国重庆 大会官网&#xff1a;ICACAR 2024-2024 3rd International Conference on Advanced Control, Automation and Ro…

华为云CES监控与飞书通知

华为云负载均衡连接数监控与飞书通知 在云服务的日常运维中&#xff0c;持续监控资源状态是保障系统稳定性的关键步骤之一。本文通过一个实际案例展示了如何使用华为云的Go SDK获取负载均衡器的连接数&#xff0c;并通过飞书Webhook发送通知到团队群组&#xff0c;以便运维人员…

超维空间M1无人机使用说明书——31、基于模板匹配的物体识别功能

引言&#xff1a;ROS提供的物体识别功能包find_object_2d&#xff0c;该功能包用起来相对简单&#xff0c;只需要简单进行模板匹配即可。需要接显示器进行模板训练&#xff0c;远程比较卡&#xff0c;不建议 一、功能包find_object_2d简介 ROS的优点之一是有大量可以在应用程…

vivado 支持的XDC和SDC命令

支持的XDC和SDC命令 本附录讨论了支持的Xilinx设计约束&#xff08;XDC&#xff09;和Synopsys设计AMD Vivado中的约束&#xff08;SDC&#xff09;命令™ 集成设计环境&#xff08;IDE&#xff09;。 XDC文件中的有效命令 支持的SDC命令 注意&#xff1a;由于所有AMD Tcl命…

基于SSM的人事档案管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【保研记录】2023年(24届)SE上岸经历

先开个坑&#xff0c;慢慢填~ 个人信息 学校&#xff1a;某双非 专业&#xff1a;软件工程 第四轮学科评估&#xff1a;无&#xff08;对就是没有等级&#xff09; 排名&#xff1a;1/400 竞赛/荣誉&#xff1a;国奖x2&#xff0c;省三好&#xff0c;大英国二&#xff0c;…

【uniapp】多规格选择

效果图 VUE <template> <view><view class"wp-80 pd-tb-40 mg-auto"><button type"warn" click"showDrawer(showRight)">筛选</button></view><!-- 筛选-uni-drawer --><uni-drawer ref"s…

为 validator 对象添加链式调用功能,并 return 校验后的值

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、代码实现3、测试代码4、日志输出 三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器&#xff0c;从编码到发布全过程》 2、相关回顾 使用 Raise…

JavaScript——BOM中所有对象的常用属性和方法【万字长篇超宝典】

目录 什么是BOM&#xff1f; BOM中的对象 一、window对象 1、控制台打印方法 2、弹窗相关方法 &#xff08;1&#xff09;、alert( )提示框 &#xff08;2&#xff09;、confrim( )交互框 &#xff08;3&#xff09;、prompt( )输入框 3、窗口打开关闭的方法 &#…

企业级实践为“燃料”,大模型助推Kyligence产品力向上

回顾2023年&#xff0c;最火热的科技话题无疑是生成式AI。 从ChatGPT横空出世&#xff0c;到“千模大战”如火如荼&#xff0c;AIGC正式破圈&#xff0c;成为企业数字化转型的新关键词。 在红杉中国《2023企业数字化年度指南》中&#xff0c;通过调研235家企业可知&#xff0…

所有单片机使用的汇编语言是统一的吗?

所有单片机使用的汇编语言是统一的吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&…