图像数据增强albumentations之自然景色

news2024/12/24 11:29:21

一 背景

最近在做关于图像数据增强方面,发现albumentations这个包比较好用,在此学习一下如何使用API

二 albumentations 安装

注意,注意,注意 python版本3.8
pip install -U albumentations

三 API学习

1 模拟雨水

import os
import cv2

import random
import albumentations as ai

from matplotlib import pyplot as plt

def read_img():
    img_path = '/home/zj/Desktop/000000295809.jpg'
    img      = cv2.imread(img_path)
    img      = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    return img

def visualize(img):
    plt.figure(figsize=(20, 10))
    plt.axis('off')
    plt.imshow(img)

new_img = read_img()
visualize(new_img)

"""
参数说明
slant_range(tuple[int,int]):降雨倾斜角度的范围,单位为度.负值向左倾斜,正值向右倾斜。默认值:(-10,10)
drop_length(int):雨滴的长度(像素)。默认值:20
drop_width(int) :雨滴的宽度(像素)。默认值:1
drop_color(tuple[int,int,int]):RGB格式的雨滴颜色。默认值:(200,200,200)
blur_value(int):用于模拟降雨效果的模糊值。雨天的景色通常很模糊。默认值:7
brightness_coefficient(float):调整图像亮度的系数.雨天通常更暗。应在(0,1])范围内。默认值:0.7
rain_type([“毛毛雨”、“大雨”、“暴雨”、“默认”]):要模拟的雨类型. ["drizzle", "heavy", "torrential", "default"]
p(float):应用变换的概率。默认值:0.5
"""

img = read_img()
tranform = ai.Compose(ai.RandomRain(brightness_coefficient=0.9, drop_width=2, blur_value=5, p=1, rain_type='default')) 
random.seed(1)
tranformed = tranform(image = img)
visualize(tranformed['image'])

效果图如下
在这里插入图片描述

2 模拟下雪

"""
参数说明
snow_point_range(tuple[float,float]):雪点阈值的范围。这两个值都应在(0,1)范围内。默认值:(0.1,0.3)
brightness_coeff(float):用于增加像素亮度的系数。应大于0。默认值:2.5,
method:[“漂白剂”,“纹理”],:要使用的雪模拟方法,默认值:“纹理” [('bleach', 'texture')]
p(float):应用变换的概率。默认值:0.5
"""
img = read_img()
tranform = ai.Compose(ai.RandomSnow(brightness_coefficient=0.9, p=1, method='bleach')) 
random.seed(1)
tranformed = tranform(image = img)
visualize(tranformed['image'])

效果图如下
在这里插入图片描述

3. 模拟光斑

"""
flare_roi(tuple[float,float,flot,float]):太阳耀斑发生的感兴趣区域可以出现。值在[0,1]范围内,表示(x_min,y_min,x_max,y_max)
在相对坐标系中。默认值:(0,0,1,0.5)
angle_range(tuple[float,float]):耀斑方向的角度范围(以弧度为单位)值应在[0,1]范围内,其中0表示0弧度,1表示2π弧度。默认值:(0,1)
num_flare_circles_range(tuple[int,int]):要生成的耀斑圆数的范围默认值:(6,10)
src_radius(int):太阳圆的半径(像素)。默认值:400
src_color (tuple[int, int, int]): Color of the sun in RGB format. Default: (255, 255, 255).
method:用于生成太阳耀斑的方法“overlay”使用简单的alpha混合技术,而“physics-based”则模拟更真实的光学现象,默认值physics-based
p(float):应用变换的概率。默认值:0.5。
"""
img = read_img()
tranforme = ai.Compose(ai.RandomSunFlare(brightness_coefficient=0.1, num_flare_circles_range=(3,6), src_radius = 200, angle_range = (0, 0.6), p=1))
#random.seed(1)
tranformed = tranforme(image=img)
visualize(tranformed['image'])

效果图如下
在这里插入图片描述

4. 模拟阴影

"""
shadow_roi(tuple[float,float,float,float]):图像中阴影所在的区域将出现(x_min,y_min,x_max,y_max)。
所有值都应在[0,1]范围内.默认值:(0,0.5,1,1)
num_shadows_limit(tuple[int,int]):阴影可能数量的下限和上限.默认值:(1,2)
shadow_dimension(int):阴影多边形中的边数。默认值:5
shadow_intensity_range(tuple[float,float]):阴影强度的范围。应为介于0和1之间的两个浮点值。默认值:(0.5,0.5)
p(float):应用变换的概率。默认值:0.5。
"""
img = read_img()
#random.seed(1)
tranform = ai.Compose(ai.RandomShadow(shadow_roi=(0,0,0.7,0.7), num_shadows_limit=(1,3), p=1))
tranformed = tranform(image=img)
visualize(tranformed['image'])

效果图如下
在这里插入图片描述

5.模拟雾

"""
fog_coef_range(tuple[float,float]):雾强度系数的范围。应在[0,1]范围内。
alpha_coef(float):雾圈的透明度。应在[0,1]范围内。默认值:0.08。
p(float):应用变换的概率。默认值:0.5。
"""
img = read_img()
random.seed(1)
tranforme = ai.Compose(ai.RandomFog(fog_coef_range=(0.7, 0.8), alpha_coef = 0.5, p=1))
tranformed = tranforme(image=img)
visualize(tranformed['image'])

效果图如下
在这里插入图片描述

四总结

根据上面的测试,发现有些功能效果不是很好,比如雾,应该跟图片有些关系(调了几次参数效果不理想),在使用时应该多注意图片本身,不能一股脑使用。

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

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

相关文章

慢病中医药膳养生食疗管理微信小程序、基于微信小程序的慢病中医药膳养生食疗管理系统设计与实现、中医药膳养生食疗管理微信小程序的开发与应用(源码+文档+定制)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【SpringCloud】注册中⼼的其他实现-Nacos

Nacos 1. Nacos简介 2. Nacos安装2.1 下载安装包2.2 Windows2.2.1 解压2.2.2 修改单机模式2.2.3 启动Nacos2.2.4 常⻅问题集群模式启动端⼝号冲突 2.3 Linux2.3.1 准备安装包2.3.2 单机模式启动 1. Nacos简介 2018年6⽉, Eureka 2.0宣布闭源(但是1.X版本仍然为活跃项⽬), 同年…

【mmengine】配置器(config)(进阶)继承与导出,命令行修改配置

一、配置文件的继承 1.1 继承机制概述 新建optimizer_cfg.py: optimizer dict(typeSGD, lr0.02, momentum0.9, weight_decay0.0001)新建runtime_cfg.py: device "cuda" gpu_ids [0, 1] batch_size 64 epochs 100 num_workers 8新建resnet50.py: _base_ […

图解C#高级教程(三):泛型

本讲用许多代码示例介绍了 C# 语言当中的泛型,主要包括泛型类、接口、结构、委托和方法。 文章目录 1. 为什么需要泛型?2. 泛型类的定义2.1 泛型类的定义2.2 使用泛型类创建变量和实例 3. 使用泛型类实现一个简单的栈3.1 类型参数的约束3.2 Where 子句3…

不相同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出:1提…

数字教学时代:构建高效在线帮助中心的重要性

在数字化教学日益普及的今天,教育领域正经历着前所未有的变革。随着在线课程、虚拟教室、智能学习平台等数字化工具的广泛应用,教育资源的获取方式和学习模式发生了深刻变化。然而,这种变革也带来了新的挑战,其中之一便是如何确保…

YashanDB Docker镜像制作

本文作者:YashanDB中级服务工程师鲍健昕 为什么需要Docker部署数据库 常规使用 yasboot 部署数据库的方法,操作流程复杂,需要配置许多配置文件以及环境变量,不同用户使用的环境不同,那么环境配置也会存在差异&#x…

YOLO11震撼发布!

非常高兴地向大家介绍 Ultralytics YOLO系列的新模型: YOLO11! YOLO11 在以往 YOLO 模型基础上带来了一系列强大的功能和优化,使其速度更快、更准确、用途更广泛。主要改进包括 增强了特征提取功能,从而可以更精确地捕捉细节以更…

啤酒在文学中的浪漫形象:精酿啤酒的诗意之旅

在文学的浩瀚星空中,啤酒并非仅仅是醉人的琼浆,它更是一种情感的载体,一种浪漫的符号。尤其是当提及Fendi Club精酿啤酒时,我们仿佛能闻到那从古老酒窖中飘出的馥郁香气,感受到它在文字间流淌的诗意与温情。 一、啤酒…

uniapp中检测应用更新的两种方式-升级中心之uni-upgrade-center-app

uniapp一个很是用的功能,就是在我们发布新版本的app后,需要提示用户进行app更新,并告知用户我们新版的app更新信息,以使得用户能及时使用上我们新开发的功能,提升用户的实用度和粘性。注意:这个功能只能在app端使用 效…

损失函数篇 | YOLOv10 更换损失函数之 MPDIoU | 《2023 一种用于高效准确的边界框回归的损失函数》

论文地址:https://arxiv.org/pdf/2307.07662v1.pdf 边界框回归(Bounding Box Regression,BBR)在目标检测和实例分割中得到了广泛应用,是目标定位的重要步骤。然而,对于边界框回归的大多数现有损失函数来说,当预测的边界框与真值边界框具有相同的长宽比,但宽度和高度的…

信号量SEM

前提 1.信号量的本质是一把计数器 2.申请信号本质就是预订资源 3.PV操作是原子的! 将一个公共资源当做整体访问-->锁 如果公共资源不当做整体使用,多进程可以并发的访问公共资源,但不是同一个区域,为了将资源均分,所以有了…

如何利用ChatGPT开发一个盈利的AI写作助手网站

3-1 整体介绍写作助手及原型展示说明 在当今数字化时代,人工智能(AI)技术正逐步改变我们的生活方式,特别是在内容创作领域。本文将详细介绍如何利用ChatGPT技术,开发一个能够生成高质量内容的AI写作助手网站&#xff…

埃及 Explained

古埃及,位于尼罗河畔的神秘文明,曾在北非的荒漠中繁荣昌盛。这个充满谜团的王国凭借其宏伟的成就和神秘的文化,数百年来吸引了无数人的好奇心。 埃及人创造了复杂的象形文字,建造了像吉萨大金字塔这样宏伟的建筑,并通…

字体文件压缩

技术点 npm、html、font-spider 实现原理 个人理解:先引入原先字体,然后重置字符为空,根据你自己填充文字、字符等重新生成字体文件,因此在引入的时候务必添加自己使用的文字、字符等!!! 实…

k8s高级功能(系统升级)

版本升级 k8s由于1.23 到1.24底层变了,所以本次示例以1.22升到1.23 升级Master节点 (在master节点执行) 腾空节点 kubectl drain master --ignore-daemonsets 升级kubeadm yum install -y kubelet-1.23.17 kubeadm-1.23.17 kubectl-1.23.17…

【刷题6】一维前缀和、二维前缀和

目录 一、一维前缀和二、二维前缀和 一、一维前缀和 题目: 思路: 一、前缀和,时间复杂度O(1),快速得到区间的值 二、预处理,公式——dp[i] dp[i-1] arr[i] 三、使用前缀和,根据…

使用小尺寸大模型和 Dify 清洗数据:Qwen 2.5 7B

本篇文章,我们聊聊如何使用最近发布的 Qwen 2.5 7B 模型来做日常低成本的数据清理工作。 写在前面 这个月好像比上个月还忙,去了很多地方,见了很多朋友。 之前云栖大会上说要写几篇 Qwen 相关的实践,一直没有时间,趁…

银河麒麟,apt 安装软件报错640Unknown Status

今天把银行麒麟的机器恢复出厂了,然后apt install 安装极其不稳定,故障现象如下图所示: 错误提示里面有: 640 Unknown Status [IP: 106.116.184.122 80] E: 无法下载 http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/universe/f…

了解客户支持的人工智能:人工智能如何改变客户服务

作者:来自 Elastic Elastic Platform Team 我们都经历过这种情况:走进商店时,看到人工收银台排着长队,而所有自助收银台都是空的。这就是所谓的便捷工具并不那么便捷的情况。曾经,许多客户服务 “解决方案” 也处于这种…