使用Albumentations 对16位图像做增强

2024-03-08 09:30

本文主要是介绍使用Albumentations 对16位图像做增强,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、导入需要的库

2、定义可视化函数

3、从磁盘读取16位TIFF映像

4、定义适用于16位TIFF图像的增强管道


本示例说明了如何增强16位TIFF图像。 在卫星图像中使用16位图像。 以下技术也可以应用于所有非8位图像(即24位图像,32位图像等)。

1、导入需要的库

import randomimport cv2
from matplotlib import pyplot as pltimport albumentations as A

2、定义可视化函数

def visualize(image):# Divide all values by 65535 so we can display the image using matplotlibimage = image / 65535plt.figure(figsize=(10, 10))plt.axis('off')plt.imshow(image)

3、从磁盘读取16位TIFF映像

# The image is taken from http://www.brucelindbloom.com/index.html?ReferenceImages.html
# © Bruce Justin Lindbloom
image = cv2.imread('images/DeltaE_16bit_gamma2.2.tif', cv2.IMREAD_UNCHANGED)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
visualize(image)

注意:OpenCV可能会错误地读取某些TIFF文件。 考虑使用tifffile地址:https://github.com/blink1073/tifffile

4、定义适用于16位TIFF图像的增强管道

Albumentations 支持两种描述像素强度的数据类型:-np.uint8,一个无符号的8位整数,可以定义0到255之间的值。-np.float32,一个单精度浮点数。对于np.float32输入,Albumentations期望该值在0.0到1.0之间。

Albumentations 有一个名为ToFloat的专用转换函数,该转换接受一个NumPy数组,其数据类型为np.uint16,np.uint32等(因此,任何使用大于255的值表示像素强度的数据类型)并将其转换为具有以下内容的NumPy数组np.float32数据类型。此外,此转换将所有输入值划分为[0.0,1.0]。默认情况下,如果输入数据类型为np.uint16,则将所有值除以65536,如果输入数据类型为np.uint32,则将所有值均除以4294967295.您可以在max_value参数中指定分频器。

非8位图像的增强流水线包括以下阶段:

  • 首先,您使用ToFloat转换将输入图像转换为float32。转换后的图像中的所有值都将在[0.0,1.0]范围内。
  • 然后,您使用所有必要的图像变换。
  • 你可以选择在扩充管道的末尾使用FromFloat转换将图像转换回其原始数据类型。
transform = A.Compose([A.ToFloat(max_value=65535.0),A.RandomRotate90(),A.Flip(),A.OneOf([A.MotionBlur(p=0.2),A.MedianBlur(blur_limit=3, p=0.1),A.Blur(blur_limit=3, p=0.1),], p=0.2),A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=0.2),A.OneOf([A.OpticalDistortion(p=0.3),A.GridDistortion(p=0.1),], p=0.2),        A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=0.1, val_shift_limit=0.1, p=0.3),A.FromFloat(max_value=65535.0),
])

我们固定随机种子是为了可视化目的,因此增强将始终产生相同的结果。 在真实的计算机视觉管道中,您不应该在对图像应用转换之前固定随机种子,因为在这种情况下,管道将始终输出相同的图像。 图像增强的目的是每次使用不同的变换。

random.seed(7)
augmented = transform(image=image)
visualize(augmented['image'])

这篇关于使用Albumentations 对16位图像做增强的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786683

相关文章

Spring Integration Redis 使用示例详解

《SpringIntegrationRedis使用示例详解》本文给大家介绍SpringIntegrationRedis的配置与使用,涵盖依赖添加、Redis连接设置、分布式锁实现、消息通道配置及... 目录一、依赖配置1.1 Maven 依赖1.2 Gradle 依赖二、Redis 连接配置2.1 配置 R

Python WSGI HTTP服务器Gunicorn使用详解

《PythonWSGIHTTP服务器Gunicorn使用详解》Gunicorn是Python的WSGI服务器,用于部署Flask/Django应用,性能高且稳定,支持多Worker类型与配置,可处... 目录一、什么是 Gunicorn?二、为什么需要Gunicorn?三、安装Gunicorn四、基本使用启

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

python urllib模块使用操作方法

《pythonurllib模块使用操作方法》Python提供了多个库用于处理URL,常用的有urllib、requests和urlparse(Python3中为urllib.parse),下面是这些... 目录URL 处理库urllib 模块requests 库urlparse 和 urljoin编码和解码

使用Python提取PDF大纲(书签)的完整指南

《使用Python提取PDF大纲(书签)的完整指南》PDF大纲(Outline)​​是PDF文档中的导航结构,通常显示在阅读器的侧边栏中,方便用户快速跳转到文档的不同部分,大纲通常以层级结构组织,包含... 目录一、PDF大纲简介二、准备工作所需工具常见安装问题三、代码实现完整代码核心功能解析四、使用效果控

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

MYSQL中information_schema的使用

《MYSQL中information_schema的使用》information_schema是MySQL中的一个虚拟数据库,用于提供关于MySQL服务器及其数据库的元数,这些元数据包括数据库名称、表... 目录关键要点什么是information_schema?主要功能使用示例mysql 中informa

Spring Boot项目如何使用外部application.yml配置文件启动JAR包

《SpringBoot项目如何使用外部application.yml配置文件启动JAR包》文章介绍了SpringBoot项目通过指定外部application.yml配置文件启动JAR包的方法,包括... 目录Spring Boot项目中使用外部application.yml配置文件启动JAR包一、基本原理

gorm乐观锁使用小结

《gorm乐观锁使用小结》本文主要介绍了gorm乐观锁使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言grom乐观锁机制gorm乐观锁依赖安装gorm乐观锁使用创建一个user表插入数据版本号更新总结前言乐观锁,顾名