一 背景
最近在做关于图像数据增强方面,发现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'])
效果图如下
四总结
根据上面的测试,发现有些功能效果不是很好,比如雾,应该跟图片有些关系(调了几次参数效果不理想),在使用时应该多注意图片本身,不能一股脑使用。