transforms图像增强(二)

一、图像变换

1、transforms.Pad

transforms.Pad是一个用于对图像边缘进行填充的数据转换操作。

参数:

  • padding:设置填充大小。可以是单个整数,表示在上下左右四个方向上均填充相同数量的像素;也可以是一个包含两个整数的元组 (a, b),表示在上下方向上填充 b 个像素,在左右方向上填充 a 个像素;还可以是一个包含四个整数的元组 (a, b, c, d),分别表示在左、上、右、下四个方向上填充 a, b, c, d 个像素。
  • padding_mode:填充模式,有四种模式可选:
    • 'constant':使用常数填充,填充值由 fill 参数指定。
    • 'edge':使用图像边缘像素进行填充。
    • 'reflect':使用图像边缘像素的镜像进行填充。
    • 'symmetric':使用图像边缘像素的对称像素进行填充。
  • fill:当 padding_mode'constant' 时,设置填充的像素值。可以是一个包含三个整数的元组 (R, G, B) 表示彩色图像的填充值,或者是一个整数表示灰度图像的填充值。
    使用transforms.Pad可以在图像的边缘进行填充,以增加图像的尺寸或保持图像的大小不变。

示例:

import torchvision.transforms as transforms
transform = transforms.Compose([transforms.Pad(padding=2, fill=(255, 0, 0), padding_mode='constant')
])
# 对图像进行填充
padded_image = transform(image)

在上面的示例中,transforms.Pad(padding=2, fill=(255, 0, 0), padding_mode='constant')将图像的边缘填充了2个像素,填充的像素值为红色 (255, 0, 0)。填充模式为 'constant',表示使用常数填充。

注意:填充操作通常在图像预处理阶段使用,以确保所有图像具有相同的尺寸或符合模型的输入要求。填充后的图像尺寸会增加,因此在应用填充之前需要考虑好图像的尺寸和比例关系。

2、transforms.ColorJitter

transforms.ColorJitter是一个用于调整图像亮度、对比度、饱和度和色相的数据转换操作。

参数:

  • brightness:亮度调整因子。可以是单个浮点数 a,表示在范围 [max(0, 1-a), 1+a] 中随机选择亮度调整因子;也可以是一个包含两个浮点数的元组 (a, b),表示在范围 [a, b] 中选择亮度调整因子。
  • contrast:对比度参数,与亮度调整因子的使用方式相同。
  • saturation:饱和度参数,与亮度调整因子的使用方式相同。
  • hue:色相参数。可以是单个浮点数 a,表示在范围 [-a, a] 中选择色相调整参数,注意 0 <= a <= 0.5;也可以是一个包含两个浮点数的元组 (a, b),表示在范围 [a, b] 中选择色相调整参数,注意 -0.5 <= a <= b <= 0.5
    使用transforms.ColorJitter可以对图像进行亮度、对比度、饱和度和色相的随机调整,增加图像的多样性。
    示例:
import torchvision.transforms as transforms
transform = transforms.Compose([transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1)
])
# 对图像进行颜色调整
adjusted_image = transform(image)

在上面的示例中,transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1)将图像的亮度、对比度、饱和度和色相进行了随机调整,亮度调整因子在范围 [0.8, 1.2] 内随机选择,对比度调整因子在范围 [0.8, 1.2] 内随机选择,饱和度调整因子在范围 [0.8, 1.2] 内随机选择,色相调整参数在范围 [-0.1, 0.1] 内随机选择。

注意:颜色调整操作通常在图像增强和数据增强阶段使用,以增加模型对不同光照、对比度和饱和度等条件的鲁棒性。调整后的图像将具有不同的颜色外观,可以增加数据集的多样性。

3、transforms.RandomGrayscale

transforms.RandomGrayscaletransforms.Grayscale都是用于将图像转换为灰度图的数据转换操作。

transforms.RandomGrayscale是一个随机操作,根据给定的概率将图像转换为灰度图。

  • num_output_channels:输出通道数。可以是1或3。如果设置为1,则输出的灰度图像只有一个通道;如果设置为3,则输出的灰度图像会复制到三个通道,以便与彩色图像的通道数匹配。
  • p:概率值,表示图像被转换为灰度图的概率。取值范围为0到1之间,例如,设置为0.1表示有10%的概率将图像转换为灰度图。
    使用transforms.RandomGrayscale可以在数据增强过程中以一定的概率将图像转换为灰度图,增加数据集的多样性。
    示例:
import torchvision.transforms as transforms
transform = transforms.Compose([transforms.RandomGrayscale(num_output_channels=1, p=0.5)
])
# 对图像进行随机灰度转换
grayscale_image = transform(image)

在上面的示例中,transforms.RandomGrayscale(num_output_channels=1, p=0.5)以50%的概率将图像转换为灰度图,输出的灰度图像只有一个通道。

4、transforms.Grayscale

transforms.Grayscale是一个确定性操作,将图像转换为灰度图。

  • num_output_channels:输出通道数。可以是1或3。如果设置为1,则输出的灰度图像只有一个通道;如果设置为3,则输出的灰度图像会复制到三个通道,以便与彩色图像的通道数匹配。
    示例:
import torchvision.transforms as transforms
transform = transforms.Compose([transforms.Grayscale(num_output_channels=1)
])
# 将图像转换为灰度图
grayscale_image = transform(image)

在上面的示例中,transforms.Grayscale(num_output_channels=1)将图像转换为灰度图,输出的灰度图像只有一个通道。

注意:灰度图像只有一个通道,每个像素的值表示灰度级别。与彩色图像相比,灰度图像的信息量较少,但在某些场景中可以提供更加简洁和高效的特征表示。

5、transforms.RandomAffine

transforms.RandomAffine是一个用于对图像进行随机仿射变换的数据转换操作。

参数:

  • degrees:旋转角度范围。可以是一个单个的浮点数 a,表示在范围 [-a, a] 内随机选择旋转角度;也可以是一个包含两个浮点数的元组 (a, b),表示在范围 [a, b] 内随机选择旋转角度。
  • translate:平移区间设置。可以是一个包含两个浮点数的元组 (a, b),表示在宽度和高度维度上分别设置平移的区间。例如,如果设置为 (0.1, 0.1),则图像在宽度维度上的平移区间为 [-img_width * 0.1, img_width * 0.1],在高度维度上的平移区间为 [-img_height * 0.1, img_height * 0.1]
  • scale:缩放比例。可以是一个单个的浮点数 a,表示在范围 [1-a, 1+a] 内随机选择缩放比例;也可以是一个包含两个浮点数的元组 (a, b),表示在范围 [1-a, 1+b] 内随机选择缩放比例。缩放比例是以图像面积为单位的。
  • shear:错切角度范围。可以是一个单个的浮点数 a,表示在范围 [-a, a] 内随机选择错切角度;也可以是一个包含两个浮点数的元组 (a, b),表示在范围 [a, b] 内随机选择错切角度。
  • resample:是否使用重采样方法。默认为 False,表示不使用重采样方法,采用最近邻插值;如果设置为 True,则使用双线性插值进行重采样。
  • fillcolor:填充颜色设置。可以是一个整数值,表示填充的颜色。
    使用transforms.RandomAffine可以对图像进行随机的仿射变换,包括旋转、平移、缩放、错切和翻转等操作,增加图像的多样性。
    示例:
import torchvision.transforms as transforms
transform = transforms.Compose([transforms.RandomAffine(degrees=10, translate=(0.1, 0.1), scale=(0.9, 1.1), shear=10)
])
# 对图像进行随机仿射变换
transformed_image = transform(image)

在上面的示例中,transforms.RandomAffine(degrees=10, translate=(0.1, 0.1), scale=(0.9, 1.1), shear=10)将对图像进行随机的仿射变换,旋转角度在范围 [-10, 10] 内随机选择,平移区间设置为 (0.1, 0.1),缩放比例在范围 [0.9, 1.1] 内随机选择,错切角度在范围 [-10, 10] 内随机选择。

注意:仿射变换是二维的线性变换,由旋转、平移、缩放、错切和翻转等基本原子变换构成。通过对图像进行随机的仿射变换,可以增加数据集的多样性,提高模型的鲁棒性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、transforms.RandomErasing

transforms.RandomErasing是一个用于对图像进行随机遮挡的数据转换操作。

参数:

  • p:执行该操作的概率。默认为0.5,表示有50%的概率执行该操作。
  • scale:遮挡区域的面积范围。可以是一个包含两个浮点数的元组 (a, b),表示遮挡区域的面积为原图面积的 [a, b] 之间的随机比例。
  • ratio:遮挡区域的长宽比范围。可以是一个包含两个浮点数的元组 (a, b),表示遮挡区域的长宽比为 [a, b] 之间的随机比例。
  • value:设置遮挡区域的像素值。可以是一个整数或一个包含3个整数的元组 (R, G, B),表示遮挡区域的像素值为指定的颜色;也可以是一个整数,表示遮挡区域为灰度图像,像素值为指定的灰度值。
  • inplace:是否原地操作。默认为 False,表示返回一个新的遮挡后的图像;如果设置为 True,则在原图像上进行原地操作。
    使用transforms.RandomErasing可以在训练过程中随机遮挡图像的一部分,以增强模型对遮挡和噪声的鲁棒性。
    示例:
import torchvision.transforms as transforms
transform = transforms.Compose([transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3))
])
# 对图像进行随机遮挡
transformed_image = transform(image)

在上面的示例中,transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3))将以50%的概率对图像进行随机遮挡,遮挡区域的面积在原图面积的 [0.02, 0.33] 之间随机选择,遮挡区域的长宽比在 [0.3, 3.3] 之间随机选择。

注意:随机遮挡可以模拟真实世界中的遮挡和噪声情况,以增加数据集的多样性。这有助于提高模型的鲁棒性和泛化能力。

7、transforms.Lambda

transforms.Lambda是一个用于用户自定义lambda方法的数据转换操作。

参数:

  • lambd:lambda匿名函数,用于定义自定义的数据转换操作。
    使用transforms.Lambda可以通过lambda表达式定义自己的数据转换操作。lambda表达式是一种匿名函数,可以在一行代码中定义简单的函数功能。
    示例:
import torchvision.transforms as transforms
# 定义一个lambda函数,将输入的图像进行裁剪
crop_lambda = transforms.Lambda(lambda x: x.crop((10, 10, 100, 100)))
# 使用lambda函数进行图像裁剪
transformed_image = crop_lambda(image)

在上面的示例中,transforms.Lambda(lambda x: x.crop((10, 10, 100, 100)))定义了一个lambda函数,该函数接受一个输入参数 x,并对其进行裁剪操作。然后,通过将图像 image 传递给 crop_lambda,可以使用lambda函数对图像进行裁剪。

注意:transforms.Lambda提供了一种灵活的方式来自定义数据转换操作,可以根据需求定义任何自己想要的函数功能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Xilinx FPGA】异步 FIFO 的复位

FIFO&#xff08;First-In-First_Out&#xff0c;先入先出&#xff09;是一种的存储器类型&#xff0c;在 FPGA 开发中通常用于数据缓存、位宽转换或者跨时钟域&#xff08;多 bit 数据流&#xff09;。在使用异步 FIFO 时&#xff0c;应注意复位信号是否遵循相关要求和规范&am…

MySQL Mysqldump 一致性备份与大数据库备份 与 PG MYSQL 到底谁是NO.1

这开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共1830人左右 1 2 3 4 5&#xf…

C/C++ 位段

目录 什么是位段&#xff1f; 位段的内存分配 位段的跨平台问题 什么是位段&#xff1f; 位段的声明与结构是类似的&#xff0c;但是有两个不同&#xff1a; 位段的成员必须是 int、unsigned int 或signed int 等整型家族。位段的成员名后边有一个冒号和一个数字 这是一个…

im6ull学习总结(三-3)freetype

1、Freetype简介 FreeType是一个开源的字体渲染引擎&#xff0c;主要用于将字体文件转换为位图或矢量图形&#xff0c;并在屏幕上渲染出高质量的字体。它提供了一组API&#xff0c;使开发者能够在自己的应用程序中使用和呈现字体。 FreeType最初是作为一个独立项目开发的&…

[Excel]如何找到非固定空白格數列的條件數據? 以月份報價表單為例

在群組中看到上述問題&#xff0c;研判應是一份隨月份變動的產品報價表單&#xff0c;空白欄可能表示該月份價格與上個月份一致。這個問題是需要取得最近一次單價和倒數第二次單價&#xff0c;常用且實務的excel案例值得紀錄。 最近一次單價: INDEX($B2:$G2,1,LARGE(IF(ISBLAN…

SpringSecurity集成JWT实现后端认证授权保姆级教程-环境搭建篇

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师、爬虫、ACM算法 &#x1f492; 公众号&#xff1a;知识浅谈 &#x1f525;网站…

跨平台开发教学:构建同时支持iOS和Android的教育网校APP

当下&#xff0c;教育行业也逐渐迎来了数字化转型的时代。构建一款支持iOS和Android的教育网校APP&#xff0c;不仅可以提供更好的用户体验&#xff0c;还能扩大应用的覆盖面&#xff0c;满足不同用户群体的需求。 一、选择合适的跨平台开发框架 在开始构建教育网校APP之前&a…

MidTool图文创作-GPT-4与DALL·E 3的结合

GPT-4与DALLE 3的结合 GPT-4是由OpenAI开发的最新一代语言预测模型&#xff0c;它在前代模型的基础上进行了大幅度的改进&#xff0c;不仅在文本生成的连贯性、准确性上有了显著提升&#xff0c;还在理解复杂语境和执行多步骤指令方面表现出了更高的能力。而DALLE 3则是一个创…

构建异地企业网络互联的高效路径

在当今数字化浪潮中&#xff0c;企业的业务拓展已不再受限于地理位置。为了在全球竞争中立于不败之地&#xff0c;越来越多的企业选择在不同城市设立分支机构&#xff0c;构建异地网络&#xff0c;实现高效的协同办公。本文将深入探讨在北上广等经济发达地区&#xff0c;如何通…

Linux部署Yearning并结合内网穿透工具实现公网访问本地web管理界面

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用…

计算机毕业设计——SpringBoot 个人博客管理系统(附源码)

1&#xff0c;绪论 1.1 背景调研 在互联网飞速发展的今天&#xff0c;互联网已经成为人们快速获取、发布和传递信息的重要渠道&#xff0c;它在人们政治、经济、生活等各个方面发挥着重要的作用。互联网上发布信息主要是通过网站来实现的&#xff0c;获取信息也是要在互联网中…

BART论文解读:BERT和GPT结合起来会发生什么?

BART:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension 主要工作 提出了BART (Bidirectional and Auto-Regressive Transformers)&#xff0c; 是一种用于自然语言生成、翻译和理解的序列到序列的预训练方法。它…

C语言编译器(C语言编程软件)完全攻略(第二十七部分:VS安全函数问题(C语言安全函数)是怎么回事?如何解决?)

介绍常用C语言编译器的安装、配置和使用。 二十七、VS安全函数问题&#xff08;C语言安全函数&#xff09;是怎么回事&#xff1f;如何解决&#xff1f; 在 VS&#xff08;Visual Studio&#xff09;下编译C语言程序&#xff0c;如果使用了 scanf()、gets()、strcpy()、strca…

【Windows】之微软输入法配置小鹤双拼

前言 Windows 自带的输入法微软输入法本身就是个最简洁、最方便的输入法&#xff0c;不需要去安装多余的第三方输入法软件。同时&#xff0c;微软中文拼音输入法支持双拼输入法&#xff0c;但微软自带的双拼输入法不包含小鹤双拼方案的。所以&#xff0c;在这里将会讲解如何配置…

oracle 补齐数字长度 to_char踩坑

oracle的to_char网上找到的说明如下 &#xff08;1&#xff09;用作日期转换&#xff1a; to_char(date,格式); select to_date(2005-01-01 ,yyyy-MM-dd) from dual; select to_char(sysdate,yyyy-MM-dd HH24:mi:ss) from dual; &#xff08;2&#xff09;处理数字&#xf…

深入理解Vue3中的自定义指令

Vue3是一个流行的前端框架&#xff0c;它引入了许多新特性和改进&#xff0c;其中之一是自定义指令。自定义指令是一种强大的功能&#xff0c;可以让开发者在模板中直接操作 DOM 元素。本文将深入探讨 Vue3中的自定义指令&#xff0c;包括自定义指令的基本用法、生命周期钩子函…

面试之线程状态

1.线程有哪些状态 1.1Java线程的六种状态 Java 线程六种状态 新建 当一个线程对象被创建&#xff0c;但还未调用 start 方法时处于新建状态 此时未与操作系统底层线程关联 可运行 调用了 start 方法&#xff0c;就会由新建进入可运行 此时与底层线程关联&#xff0c;由操作…

leetcode算法题之递归--综合练习(一)

此专题对我们之前所学的关于递归的内容进行一个整合&#xff0c;大家可以自行练习&#xff0c;提升自己的编码能力。 本章目录 1.找出所有子集的异或总和在求和2.全排列II3.电话号码的字母组合4.括号生成5.组合6.目标和7.组合总和8.字母大小写全排列9.优美的排列 1.找出所有子…

数据库的连接

连接数据库 我们使用WinR输入cmd打开运行窗口 输入:sqlplus并回车 输入用户名和密码,我用的是Scott,密码我自己设置的123456,Scott默认的密码是tiger,回车 这种情况表示登录成功 在连接Scott成功的情况下创建一些数据,在我的资源里面有个Oracle数据基础可以下载,直接复制粘…

快速了解云计算与云原生

快速了解云计算与云原生 云计算云原生DevOps容器持续交付微服务 云计算 在讲云原生之前&#xff0c;先来讲讲云计算 其中云原生属于技术架构理念&#xff0c;而云计算提供应用所需的基础资源&#xff0c;云计算是云原生的基础&#xff0c;两者是相辅相成的 云计算简单来说&a…