图像增强库albumentations(v1.3.0, 2023.5)中所有图像增强方法记录(class)

news2024/11/28 1:52:41

整体概要

变换类型具体类
模糊/噪声AdvancedBlur*,Blur*,Downscale*,Defocus*,GlassBlur*,GaussianBlur*,GaussNoise*,ImageCompression*,ISONoise*,MultiplicativeNoise*,MedianBlur*,MotionBlur*,ZoomBlur*
几何变换Affine,Flip,GridDistortion,HorizontalFlip,OpticalDistortion,Perspective,PiecewiseAffine,RandomRotate90,Rotate,SafeRotate,ShiftScaleRotate,Transpose,VerticalFlip
裁剪/填充BBoxSafeRandomCrop,Crop,CenterCrop,CropAndPad,CropNonEmptyMaskIfExists,PadIfNeeded,RandomCrop,RandomCropFromBordersRandomCropNearBBox,RandomResizedCrop,RandomSizedBBoxSafeCrop,RandomSizedCrop
放缩LongestMaxSize,RandomScale,Resize,SmallestMaxSize
图像直方图CLAHE*,Equalize*,HistogramMatching*
图像基本属性ColorJitter*,HueSaturationValue*,RandomToneCurve*,RandomBrightnessContrast*
数据类型变换FromFloat*,ToGray*,ToFloat*,ToTensorV2,ToRGB*
DropoutChannelDropout*,CoarseDropout,Cutout*,GridDropout,MaskDropout,PixelDropout
特殊效果RandomFog*,RandomRain*,RandomShadow*,RandomSnow*,RandomSunFlare*,Spatter*,RandomGravel*
其余图像增强ChannelShuffle*,Emboss*,ElasticTransform,FDA*,FancyPCA*,InvertImg*,Lambda,Normalize*,PixelDistributionAdaptation*,Posterize*,RandomGamma*,RandomGridShuffle,RingingOvershoot*,RGBShift*,Sharpen*,Solarize*,Superpixels*,ToSepia*,TemplateTransform*,UnsharpMask*
工具类Compose,OneOf,OneOrOther,ReplayCompose,Sequential,SomeOf

注:

  • ImageOnlyTransform的子类(*标注)变换仅可应用于image。
  • DualTransform的子类变换可应用于image,mask,masks,bboxes,keypoints。
  • 斜体标注的图像增强,意味着可能会导致原图像宽高大小的不固定变化,使用时应注意。
  • 以IAA开头的图像增强需要依靠另一个图像增强库imgaug,由于大部分这样的方法在albumentations中已有替代方案,原方法大多数已经弃用,故这里不再列出。
  • JpegCompression已弃用,可用ImageCompression替代。
  • RandomBrightness、RandomContrast已弃用,可用RandomBrightnessContrast替代。
  • Github版本的Albumentations可能会比pip版本的多极少一部分图像增强方法。
  • Albumentations的通常输入是numpy.ndarray,数据类型应为int或32位float

详细说明

1、AdvancedBlur(ImageOnlyTransform): class

功能:使用随机参数的广义正态卷积核来模糊输入图像。这一转换会先向产生的随机参数卷积核添加乘法噪声,然后再应用卷积。(论文链接:https://arxiv.org/pdf/2107.10833.pdf)
初始化参数:
blur_limit: 用以模糊输入图像的最大高斯核大小。若为0则会根据sigma进行计算:round(sigma * (3 if img.dtype == np.uint8 else 4) * 2 + 1) + 1。若为单一值,则等同于(0, blur_limit)。(可以为二元整数tuple或者单一值,必须为[0, inf)间的0或奇数)(默认(3, 7))
sigmaX_limit: x方向上高斯核的标准差。若为单一值则等同于(0, sigma_limit)。若为0则会如此计算:sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8。(可以为二元tuple或者单一值,必须在[0,inf)间)(默认0)
sigmaY_limit: y方向上高斯核的标准差,同上。
rotate_limit: 在给定范围内选择一个随机角度旋转高斯核。如果为单一值则等同于(-rotate_limit, rotate_limit)。(可以为二元整数tuple或单一值)(默认(-90, 90))
beta_limit:分布形状参数,1为正态分布。低于1会使得分布尾部比正态分布更重,高于1会使得分布比正态分布更轻。(可以为二元tuple或单一值)(默认(0.5, 8.0))
noise_limit: 控制卷积核噪声强度的乘法因子。如果设置为单一值则等同于(0, noise_limit)。(可以为二元tuple或单一值。必须为正值,最好是以1.0为中心的区间)(默认(0.75, 1.25))
always_apply: 是否总应用。(bool)(默认False)
p:应用该转换的概率。(默认0.5)

t = A.AdvancedBlur(blur_limit=11, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

2、Affine(DualTransform): class

功能:对图像应用仿射变换。(仿射变换涉及:图像平移,旋转,放缩,剪切)。
初始化参数:
scale: 放缩因子。1.0意味着没有变化,0.5意味着缩小到原来的50%。(可以为二元tuple、单值或者具有键“x”和“y”的字典(当keep_ratio=False时,对x、y轴使用不同的值才有意义))(默认None)
translate_percent: 以原图像的宽高比例为单位的平移。0意味着没有变化,0.5意味着移动该方向大小的一半。(可以为二元tuple、单值或者具有键“x”和“y”的字典)(默认None)
translate_px: 以像素为单位的平移。(可以为二元tuple、单值或者具有键“x”和“y”的字典)(默认None)
rotate: 旋转角度。旋转发生在图像的中心而不是左上角。(可以为固定值或者二元区间,若为区间则会在其中随机均匀采样)(默认None)
shear: 剪切角度。合理的值应位于[-45, 45]。(可以为固定值或者二元区间,若为区间则会在其中随机均匀采样,也可以为具有键“x”和“y”的字典)(默认None)
interpolation: 插值方法。(默认cv2.INTER_LINEAR)
mask_interpolation: 掩码插值方法(默认cv2.INTER_NEAREST)
cval: 填充新创建的像素时所使用的常数值。仅当mode=“constant”时有效。(默认0)
cval_mask: 类似cval但是仅对掩码有效。(默认0)
mode: opencv的边界填充策略。(默认cv2.BORDER_CONSTANT)
fit_output: 如果为True,则将调整图像平面的大小和位置,以在仿射变换后紧密地捕捉整个图像(忽略“translate_pcenter”和“translate-px”)。否则(“False”),变换后的图像的部分可能最终出现在图像平面之外。拟合输出形状对于避免应用旋转后图像的角在图像平面之外是有用的。(默认False)
keep_ratio: 若为True,在应用随机放缩后原始的宽高比会被保持。(默认False)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Affine(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

t = A.Affine(shear={"x":30, "y":10}, fit_output=True, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

3、Blur(ImageOnlyTransform): class

功能:使用随机大小的核模糊输入图像
初始化参数:
blur_limit: 用以模糊输入图像的最大核大小。(可以为int或二元int tuple)(默认(3, 7))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Blur((10, 11), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述
4、BboxParams(Params): class

功能:指定bounding box的类型参数。一般用在Compose实例的初始化参数中。
初始化参数:
format: bounding boxes的类型。(应为“coco”, “pascal_voc”,“albumentations”或者“yolo”。
“coco”格式:[x_min, y_min, width, height"]。
“pascal_voc”格式:[x_min, y_min, x_max, y_max]。
“albumentations”格式:如“pascal_voc”,但是归一化好了,即范围在[0,1]。
“yolo”格式:[x, y, width, height],x,y指归一化的bbox中心;width,height指归一化的bbox宽高。

label_fields: 与boxes相关联的变量列表,应与boxes类型一致。(列表)(默认None)
min_area: 一个bounding box的最小面积。所有可见面积(像素单位)小于这个值的bounding box将被移除。(默认0.0)
min_visibility: 保持该box在列表中的最小面积比。(默认0.0)
check_each_transform: 如果为True,在每个dual transform后都会检查bboxes是否满足限制。(bool)(默认True)

5、BBoxSafeRandomCrop(DualTransform): class

功能:在不损失bboxes的条件下裁剪输入的一个随机部分。
初始化参数:
erosion_rate: 在裁剪前应用到图像的腐蚀高度比例(默认0,有可能损失bbox)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

bboxes = [[50, 50, 400, 350]]   # [x1, y1, width, height]
category_ids=[0]
t = A.Compose([
    A.BBoxSafeRandomCrop(erosion_rate=0.5, always_apply=True)],
    bbox_params=A.BboxParams(format='coco', label_fields=['category_ids']))
res = t(image=img, bboxes=bboxes, category_ids=category_ids)

在这里插入图片描述

6、Compose(BaseCompose): class

功能:组合transforms并且处理有关bounding boxes的变换
初始化参数:
transforms: 一系列组合的transformations(列表)
bbox_params: 用于bounding boxes变换的参数(BboxParams)(默认None)
keypoint_params: 用于关键点变换的参数(KeypointParams)(默认None)
additional_target: 具有“键(新target名称), 值(旧target名称)”的字典(dict)(默认None)
p: 应用所有变换的概率(默认1.0)

t = A.Compose([
    A.ColorJitter(),
    A.Flip(),
    A.GaussianBlur(blur_limit=(17, 19))
], p=1)
res_img = t(image=img)["image"]

在这里插入图片描述

7、Crop(DualTransform): class

功能:从图像中裁剪一个区域
初始化参数:
x_min, y_min, x_max, y_max: 裁剪区域在原图像左上方点x,y坐标和右下方x,y坐标(int)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.Crop(20, 20, 300, 300, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

8、ColorJitter(ImageOnlyTransform): class

功能:随机变换图像的亮度,对比度和饱和度。注意与torchvision的ColorJitter相比可能会有些小区别。
初始化参数:
brightness: 改变亮度的程度。从区间[max(0, 1-brightness), 1+brightness]或给定[min, max]中均匀取值。(必须为非负数,可以为单一值或者二元序列)(默认0.2)
contrast: 改变对比度的程度。从区间[max(0, 1-contrast), 1+contrast]或给定[min, max]中均匀取值。(必须为非负数,可以为单一值或者二元序列)(默认0.2)
saturation: 改变饱和度的程度。从区间[max(0, 1-saturation), 1+saturation]或给定[min, max]中均匀取值。(必须为非负数,可以为单一值或者二元序列)(默认0.2)
hue: 改变色度的程度。从区间[-hue, hue]或给定[min, max]中均匀取值。(必须满足0<=hue<=0.5或者-0.5<=min<=max<=0.5,可以为单一值或者二元序列)(默认0.2)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ColorJitter(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

9、CLAHE(ImageOnlyTransform): class

功能:限制对比度的自适应直方图均衡(CLAHE详解推荐这篇博文:https://blog.csdn.net/u9Oo9xkM169LeLDR84/article/details/107438106)
初始化参数:
clip_limit: 对比度阈值限制的界限(默认4.0)。若为单一值,则等同于(1, clip_limit)。(可以为单一值或二元序列)(默认(1, 4))
tile_grid_size: 直方图均衡化使用的tile网格大小(二元序列)(默认(8,8))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.CLAHE(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

10、Cutout(ImageOnlyTransform): class

功能:图像中方形区域的删除(论文链接:https://arxiv.org/abs/1708.04552)
初始化参数:
num_holes: 需要抹除的区域数量(int)(默认8)
max_h_size: 空洞的最大高度(int)(默认8)
max_w_size: 空洞的最大宽度(int)(默认8)
fill_value: 空洞的填充值(可以单一值或者列表)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Cutout(max_h_size=40, max_w_size=40, fill_value=0, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

11、CenterCrop(DualTransform): class

功能:裁剪图像的中心区域
初始化参数:
height: 裁剪后的宽度(int)
width: 裁剪后的高度(int)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1)

t = A.CenterCrop(300, 300, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

12、ChannelDropout(ImageOnlyTransform): class

功能:随机删除输入图像的一个色彩通道
初始化参数:
channel_drop_range: 选择删除通道的范围(二元Tuple,通道索引从1开始,并且不能删除全部通道)(默认(1, 1))
fill_value: 删除后的通道用什么像素值填充(默认0)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ChannelDropout(channel_drop_range=(1, 2), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

13、ChannelShuffle(ImageOnlyTransform): class

功能:随机排列输入RGB图像的色彩通道
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ChannelShuffle(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

14、CoarseDropout(DualTransform): class

功能:随机删除图像的方形区域(论文链接:https://arxiv.org/abs/1708.04552)
初始化参数:
max_holes: 需要抹除的区域的最大数量(int)(默认8)
max_height: 单个区域的最大高度(若为浮点数,则视为图像高度的比例)(默认8)
max_weight: 单个区域的最大宽度(若为浮点数,则视为图像宽度的比例)(默认8)
min_holes: 需要抹除的区域的最小数量(int)(默认None)
min_height: 单个区域的最小高度(若为浮点数,则视为图像高度的比例)(int)(默认None)
min_weight: 单个区域的最小宽度(若为浮点数,则视为图像高度的比例)(int)(默认None)
fill_value: 对于删除后区域像素的填充值(int)(默认0)
mask_fill_value: 对于掩码中删除后区域的填充值(int)(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.CoarseDropout(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

15、CropAndPad(DualTransform): class

功能:使用指定像素数量或者图像尺寸的比例裁剪和填充图像。裁剪将移除图像边缘的像素,填充将向图像边缘添加像素。此变换将永不裁剪高度或宽度小于1的图像。(注意:此变换自动将图像resize回他们原来的大小,若不希望这么做,请设置keep_size=False。)
初始化参数:
px: 需要在图像每侧裁剪(为负值)或者填充(正值)的像素量。(不能与percent同时设置。
  若为None,将禁用此项;
  若为int,将对每一侧应用给定值;
  若为二元tuple,则将从该tuple指定的区间中均匀采样:同时若same_independently为False,会采样一个值应用到图像的每一侧,否则采样不同值应用到图像的不同侧;
  若为四元tuple,那么就分别表示上右下左四个方向,每个方向可以指定一个单一值或者一个采样区间(二元tuple)或者一个采样列表(多元list)。)(默认None)
percent: 指定比例裁剪(负值)或填充(正值)在图像每一侧的像素数量。(必须位于(-1.0, inf)间,不能与px参数同时设置。
  若为None,将禁用此项;
  若为float,将对每一侧应用给定值;
  若为二元tuple,则将从该tuple指定的区间中均匀采样:同时若same_independently为False,会采样一个值应用到图像的每一侧,否则采样不同值应用到图像的不同侧;
  若为四元tuple,那么就分别表示上右下左四个方向,每个方向可以指定一个单一值或者一个采样区间(二元tuple)或者一个采样列表(多元list)。)(默认None)
pad_mode: OpenCV边界模式。(默认None)
pad_cval: 若pad_mode为“BORDER_CONSTANT”,此项指定要填充的常数值。(
若为单值,将使用该值;
若为二元tuple,若其中至少一个是float,则将从该连续区间中均匀采样并用作填充值;若均为int,则该采样区间视为离散区间;
若为多元list,则会从该列表中随机选择一个元素作为填充值。)(默认None)
pad_cval_mask: 与cval相同但仅对mask有效(默认None)
keep_size: 在裁剪和填充之后,是否要resize回图像原来大小。(bool)(默认True)
same_independently: 若为False,则px/percent从区间采样或从列表采样的值可以分别作用到图像的不同侧。(bool)(默认True)
interpolation: 插值模式。(int)(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.CropAndPad(px=[(30,40), (40,50), (50,60), (60,70)], keep_size=True, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

16、CropNonEmptyMaskIfExists(DualTransform): class

功能:如果mask非空,则用mask裁剪图像(感觉上是尽量裁剪到mask附近的区域);否则随机裁剪。
初始化参数:
height: 像素单位的裁剪后竖直方向大小。(int)
width:像素单位的裁剪后水平方向大小。(int)
ignore_values: 需要忽略的mask上的值,“0”值是永远忽略的。(int列表)(默认None)
ignore_channels: 需要忽略的mask上的通道。(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

mask = np.zeros(img[:,:,0].shape)
mask[100:300, 200:400] = 1
t = A.CropNonEmptyMaskIfExists(200, 200, always_apply=True)
res= t(image=img, mask=mask)
res_img = res["image"]
res_mask = res["mask"]

在这里插入图片描述

17、Downscale(ImageOnlyTransform): class

功能:通过先下采样再上采样来降低图像质量
初始化参数:
scale_min: 图像放缩的下界。(应小于1)(默认0.25)
scale_max: 图像放缩的上界。(应小于1)(默认0.25)
interpolation: cv2插值方法。(单一值,该方法将同时应用于下采样和上采样;字典{downscale=flag1, upscale=flag2);Downscale.Interpolation(downscale=flag1, upscale=flag2))(默认None,即Interpolation(downscale=cv2.INTER_NEAREST, upscale=cv2.INTER_NEAREST))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Downscale(scale_min=0.1, scale_max=0.3, interpolation={"downscale":cv2.INTER_NEAREST, "upscale":cv2.INTER_LINEAR},
                always_apply=True)

在这里插入图片描述

18、Defocus(ImageOnlyTransform): class

功能:应用defocus图像增强。(论文链接:https://arxiv.org/abs/1903.12261)
初始化参数:
radius: 失焦的半径的范围。(int或二元int元组,若为单一值,等效于[1,limit])(默认(3, 10))
alias_blur: 失焦的alias_blur的范围(高斯模糊的sigma)。(float或二元float数组,若为单一值,等效于(0, limit))(默认(0.1, 0.5))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Defocus(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

19、Emboss(ImageOnlyTransform): class

功能:对输入图像进行浮雕,并将结果与原始图像叠加。
初始化参数:
alpha: 设置浮雕后图像的可见性的范围。(二元tuple。若为0,则只有原始图像可见;若为1,则只有浮雕版本可见。)(默认(0.2, 0.5))
strength: 浮雕化的强度范围。(二元tuple)(默认(0.2, 0.7))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Emboss(alpha=(0.7, 0.8), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

20、Equalize(ImageOnlyTransform): class

功能:均衡化图像直方图。
初始化参数:
mode: 使用OpenCV还是Pillow均衡化方法。({‘cv’, ‘pil’})(默认"cv")
by_channels: 若为True,则均衡化将分别应用到各个色彩通道,否则将把图像转化到YCbCr表示并对“Y”通道进行均衡化。(bool)(默认True)
mask: 如果指定,只有被mask选中的像素需要包含在分析中。(可以为1通道或3通道numpy.ndarray或可调用对象(“image”参数必须在函数签名中包含))(默认None)
mask_params: mask函数的参数(str列表)(默认())
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Equalize(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

mask = np.zeros(img[:, :, 0].shape)
mask[0:100, 0:100] = 1    # 选择图像左上角的一个方形区域
t = A.Equalize(mask=mask, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

def getLarger(image, thr):	# 只选择值大于界限thr的像素
    image = image.copy()
    image[image<thr] = 0
    return image
t = A.Equalize(mask=getLarger, mask_params=["thr"], always_apply=True)
res_img = t(image=img, thr=100)["image"]	# 调用变换时需指定thr参数

在这里插入图片描述

21、ElasticTransform(DualTransform): class

功能:对图像应用弹性变换。(参考链接:https://gist.github.com/ernestum/601cdf56d2b424757de5)总而言之,就是先从范围为[-1, 1]的均匀分布中采样生成替换流,然后利用标准差为σ(也称弹性因子)的高斯卷积处理替换流,再将替换流乘上一个放缩因子α,最后再利用处理后的替换流对原图像进行处理即可得到变形后的图像。(这里的σ应当取适当值,值较大会接近仿射变换)。当然实际实现中可能会略有不同。
初始化参数:
alpha: 放缩因子。(默认1)
sigma: 弹性因子,高斯滤波器参数。(默认50)
alpha_affine: 均匀采样的值范围。(float,表示区间(-alpha_affine, alpha_affine))(默认50)
interpolation: 指定插值方法。(默认cv2.INTER_LINEAR)
border_mode: 指定边缘填充方法。(默认cv2.BORDER_REFLECT_101)
value: 如果边缘填充为常数填充,则此项用于指定填充的常数值。(默认None)
mask_value: 如果边缘填充为常数填充,则此项用于指定mask填充的常数值。(默认None)
always_apply: 是否总应用。(bool)(默认False)
approximate: 是否以固定的卷积核大小对替换图进行平滑,启用此项将可以获得在大图像上2倍的速度提升。(bool)(默认False)
same_dxdy: 是否对x方向和y方向使用相同的随机变换,启用此项将可以获得在打突袭上2倍的速度提升。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ElasticTransform(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

22、FDA(ImageOnlyTransform): class

功能:傅里叶域变换。(参考链接:https://github.com/YanchaoYang/FDA)将target_img与img进行傅里叶变换到频域空间后,将target_img对应频域图像中的幅度图的中心区域(即低频区域,指图像灰度变化平坦的部分,与之相反的高频区域即指图像灰度变化剧烈的部分如边缘、轮廓等)(量由beta参数控制)替换到img对应频域图像中的幅度图的相应位置中去,再将结果图像进行傅里叶变换的逆变换重新变换回空间域。
初始化参数:
reference_images: 参考图像路径的列表(默认)或参考图像的列表。(str列表或者numpy.ndarray列表)
beta_limit: 论文中的beta系数,建议在0.3以下。(默认0.1)
read_fn: 使用该函数读取图像。该函数应该返回关于图像像素的numpy array。(默认read_rgb_image)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.FDA(reference_images=[img2_path], beta_limit=0.01, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

23、Flip(DualTransform): class

功能:对输入进行水平、垂直或水平垂直翻转。
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Flip(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

24、FancyPCA(ImageOnlyTransform): class

功能:对图像应用fancy PCA(论文:http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)。简单来说就是让图像矩阵,加上根据由图像本身色彩通道处理得到的某个特殊矩阵,以此来实现图像增强。(个人理解是一种基本不影响原图像所有语义信息的图像增强)
初始化参数:
alpha: 扰动/放缩特征向量和特征值的幅度。scale将从高斯分布(mu=0,sigma=alpha)中采样。(默认0.1)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.FancyPCA(alpha=0.5)
res_img = t(image=img)["image"]

在这里插入图片描述

25、FromFloat(ImageOnlyTransform): class

功能:输入一个所有值都处于[0, 1.0]范围内的数组,将它乘上“max_value”然后转化结果值到“dtype”指定的数据类型。如果“max_value”为None,这个变换将尝试通过“dtype”数据类型推断最大值。
初始化参数:
max_value: 最大可能的输入值。(默认None)
dtype: 输出的数据类型。(默认’uint16’)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.FromFloat(max_value=150, always_apply=True)
res_img = t(image=img/255.)["image"]

在这里插入图片描述

26、GlassBlur(Blur): class

功能:为输入图像添加玻璃模糊。(参考链接:https://arxiv.org/abs/1903.12261)通过高斯模糊以及迭代地交换一定距离的图像像素实现。
初始化参数:
sigma: 高斯核的标准差。(默认0.7)
max_delta: 交换像素的最大距离。(int)(默认4)
iterations: 迭代的次数。(int,必须位于[1, inf)之间)(默认2)
always_apply: 是否总应用。(bool)(默认False)
mode: 计算模式。({‘fast’, ‘exact’})(默认“fast”)
p: 应用该变换的概率。(默认0.5)

t = A.GlassBlur(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

27、GaussianBlur(ImageOnlyTransform): class

功能:使用随机大小的高斯卷积核对输入图像进行模糊。
初始化参数:
blur_limit: 用来模糊输入图像的最大高斯核大小。若为0则会根据sigma进行计算:round(sigma * (3 if img.dtype == np.uint8 else 4) * 2 + 1) + 1。若为单一值,则等同于(0, blur_limit)。(可以为二元整数tuple或者单一值,必须为[0, inf)间的0或奇数)(默认(3, 7))
sigma_limit: 高斯核标准差。若为单一值则等同于(0, sigma_limit)。若为0则会如此计算:sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8。(可以为二元tuple或者单一值,必须在[0,inf)间)(默认0)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.GaussianBlur(blur_limit=(9, 11), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

28、GaussNoise(ImageOnlyTransform): class

功能:向输入图像中添加高斯噪声。
初始化参数:
var_limit: 噪声的方差范围。(可以为单一值或者二元tuple。若为单一值,则等同于(0, var_limit))(默认(10.0, 50.0))
mean: 噪声的均值。(默认0)
per_channel: 如果设置为True,噪声会分别对各个色彩通道采样;否则,噪声将仅采样一次并应用到所有通道上。(bool)(默认True)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.GaussNoise(var_limit=(80, 100), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

29、GridDistortion(DualTransform): class

功能:网格变形。(参考链接:https://github.com/albumentations-team/albumentations/pull/722)
初始化参数:
num_steps: 每一侧的网格数量。(int)(默认5)
distort_limit: 变形界限。(单一值或者二元tuple。若为单一值,等同于(-distort_limit, distort_limit))(默认0.3)
interpolation: 指定插值算法。(int)(默认cv2.INTER_LINEAR)
border_mode: 指定边界填充算法。(int)(默认cv2.BORDER_REFLECT_101)
value: 若边界填充为常数填充模式,则此项指定填充值。(默认None)
mask_value: 若边界填充为常数填充模式,则此项指定mask填充值。(默认None)
normalized: 若为True,则变形会被归一化,以防止超出图像。(bool)(False)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.GridDistortion(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

t = A.GridDistortion(num_steps=50, normalized=True, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

30、GridDropout(DualTransform): class

功能:以网格形式删除图像和对应mask的方形区域。(参考链接:https://arxiv.org/abs/2001.04086)
初始化参数:
ratio: 相对于unit_size的掩码空洞比例(水平和垂直方向相同)(必须位于0和1之间)(默认0.5)
unit_size_min: 网格单元的最小大小。(int,必须位于2和图像短边大小之间。若为None,holes_number_x和holes_number_y将用于建立grid。)(默认None)
unit_size_max: 网格单元的最大大小。(int,必须位于2和图像短边大小之间。若为None,holes_number_x和holes_number_y将用于建立grid。)(默认None)
holes_number_x: x方向上网格单元的数量。(int,必须位于1和image width//2之间。若为None,网格单元宽度将设为image_width//10。)(默认None)
holes_number_y: y方向上网格单元的数量。(int,必须位于1和image height//2之间。若为None,网格单元高度将等同于网格单元宽度和图像高度中的较小值)(默认None)
shift_x: x方向上从(0,0)坐标的网格偏移。裁剪至0和网格unit_width-hole_width之间。(int)(默认None)
shift_y: y方向上从(0,0)坐标的网格偏移。裁剪至0和网格unit_height-hole_height之间。(int)(默认None)
random_offset: 是否随机用0到网格unit size-hole size间的值设置偏移。若为True,则shift_x和shift_y将被忽略,偏移将被随机设置。(bool)(默认False)
fill_value: 删除后像素的填充值。(int)(默认None)
mask_fill_value: mask删除后像素的填充值。(int)(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.GridDropout(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

31、HistogramMatching(ImageOnlyTransform): class

功能:应用直方图匹配。它操纵输入图像的像素,使其直方图与参考图像的直方图相匹配。如果图像具有多个通道,则只要输入图像和参考中的通道数量相等,就对每个通道独立地进行匹配。直方图匹配可以用作图像处理的轻量级归一化,例如特征匹配,特别是在图像是从不同来源或在不同条件下(即照明)拍摄的情况下。(参考链接:https://scikit-image.org/docs/dev/auto_examples/color_exposure/plot_histogram_matching.html)
初始化参数:
reference_images: 参考图像的文件路径的列表(默认)或者参考图像的列表。
blend_ratio: 混合比例的上下限。匹配图像将以随机因子与原图像混合,以增加产生图像的多样性。(二元tuple)(默认(0.5, 1.0))
read_fn: 使用自定义的方法去读取图像。该方法应当能获取图像路径并返回图像的numpy.ndarray。(默认read_rgb_image)。
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.HistogramMatching(reference_images=[img2_path], blend_ratio=(0.9, 1.0), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

32、HorizontalFlip(DualTransform): class

功能:沿y轴对输入进行水平翻转
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.HorizontalFlip(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

33、HueSaturationValue(ImageOnlyTransform): class

功能:随机改变输入图像的色度,饱和度和值。
初始化参数:
hue_shift_limit: 改变色度的范围。(可为int或二元int元组。若为单一值,则等同于(-hue_shift_limit, hue_shift_limit))(默认(-20, 20))
sat_shift_limit: 改变饱和度的范围。(可为int或二元int元组。若为单一值,则等同于(-sat_shift_limit, sat_shift_limit))(默认(-30, 30))
val_shift_limit: 改变值的范围。(可为int或二元int元组。若为单一值,则等同于(-val_shift_limit, val_shift_limit))(默认(-20, 20))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.HueSaturationValue(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

34、ImageCompression(ImageOnlyTransform): class

功能:降低Jpeg,WebP格式图像的压缩。
初始化参数:
quality_lower: 图像质量的下界。(对于Jpeg,必须在范围[0,100]内;对于webp,必须在范围[1,100]内。)(默认99)
quality_upper: 图像质量的上界。(对于Jpeg,必须在范围[0,100]内;对于webp,必须在范围[1,100]内。)(默认100)
compression_type: 压缩类型。(必须为ImageCompressionType.JPEG或ImageCompressionType.WEBP)(默认ImageCompressionType.JPEG)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ImageCompression(always_apply=True, quality_lower=10, quality_upper=30)
res_img = t(image=img)["image"]

在这里插入图片描述

35、InvertImg(ImageOnlyTransform): class

功能:通过使用255减去图像像素值来翻转输入图像。
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.InvertImg(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

36、ISONoise(ImageOnlyTransform): class

功能:添加摄像机传感器噪声。
初始化参数:
color_shift: 颜色色度变化的方差范围。以在HLS色彩空间的360度色度角度比例测量。(二元tuple)(默认(0.01, 0.05))
intensity: 控制色彩强度和光照噪声的乘法因子。(二元tuple)(默认(0.1, 0.5))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ISONoise(color_shift=(0.1, 0.5), intensity=(0.4, 0.5), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述
37、KeypointParams(Params): class

功能: 关键点的参数。
初始化参数:
format: 关键点的格式。({‘xy’, ‘yx’, ‘xya’, ‘xys’, ‘xyas’, ‘xysa’},其中x指x坐标,y指y坐标,s指关键点尺度,a指以角度或弧度为单位(取决于KeypointParams.angle_in_degrees)的关键点方向)(str)
label_fields: 与关键点相关联的变量列表,例如labels。(应与关键点同样类型)(默认None)
remove_invisible: 是否删除掉变换后不可见的点。(bool)(默认True)
angle_in_degrees: 在’xya’,‘xyas’,'xysa’模式下的关键点的角以角度还是弧度为单位。(bool)(默认True)
check_each_transform: 如果为True,则在每次dual transform后都检查关键点。(bool)(默认True)

38、Lambda(NoOp): class

功能:一个灵活的转换类,用于每个目标使用用户定义的转换函数。函数签名必须包括**kwargs才能接受插值方法、图像大小等可选参数。
初始化参数:
image: 图像转换函数。(callable)(默认None)
mask: 掩码转换函数。(callable)(默认None)
keypoint:关键点转换函数。(callable)(默认None)
bbox:BBox转换函数。(callable)(默认None)
always_apply: 表示这个变换是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.Lambda(image=lambda x, **kwargs: x // 2, always_apply=True)    # 包括**kwargs是必要的
res_img = t(image=img)["image"]

在这里插入图片描述

39、LongestMaxSize(DualTransform): class

功能:重新调整图像的尺度,以使得最大边与max_size相等,同时保持原始图像的长宽比。
初始化参数:
max_size: 变换后图像的最大大小。(int或int列表,如果是一个列表,最大值将会从该列表中随机选择。)(默认1024)
interpolation: 插值方法。(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.LongestMaxSize(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

40、MultiplicativeNoise(ImageOnlyTransform): class

功能:将图像乘上一个随机数或一个随机数组。
初始化参数:
multiplier: 若为单一值图像会乘上这个值,若为元组,则会从[multiplier[0], multiplier[1])中取随机值用作乘数。(可为单一值或者多元元组)(默认(0.9, 1.1))
per_channel: 若为False,相同的值会被使用在所有通道上;若为True,将对各个通道分别采样。(bool)(默认False)
elementwise: 如果False,则将图像中的所有像素与采样一次的随机值相乘。如果True,则将图像像素与按像素随机采样的值相乘。(bool)(默认False)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.MultiplicativeNoise(multiplier=(0.2, 0.8), per_channel=True, elementwise=True, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

41、MedianBlur(Blur): class

功能:使用随机核大小的均值滤波器模糊输入图像。
初始化参数:
blur_limit: 模糊输入图像的最大核大小。(int或二元int元组,必须是位于[3, inf)的奇数。若为单一值等同于(3, blur_limit))(默认7)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.MedianBlur(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

42、MotionBlur(Blur): class

功能:使用随机核大小对输入图像应用运动模糊。
初始化参数:
blur_limit: 模糊输入图像的最大核大小。(int或二元int元组,必须是位于[3, inf)的奇数。若为单一值等同于(3, blur_limit))(默认7)
allow_shifted: 如果设置为True,将仅仅创建无偏移的核;否则创建随机偏移的核。(bool)(默认True)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.MedianBlur(blur_limit=(17, 19), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

43、MaskDropout(DualTransform): class

功能:图像和遮罩增强,将遮罩和对应于从遮罩中随机选择的对象实例的图像区域清零。掩码必须是单通道图像,零值被视为背景。图像可以是任意数量的通道。(参考链接:https://www.kaggle.com/c/severstal-steel-defect-detection/discussion/114254)
初始化参数:
max_objects: 能被清零的最大标签数量。(可为int或二元int元组,若为元组则等同于[min, max]中随机选择值作为最大数量。)(默认1)
image_fill_value: 填充图像时使用的填充值。(数值,也可为’inpaint’以应用修补(必须为3通道图像),实现只清零mask效果)(默认0)
mask_fill_value: 填充遮罩时使用的填充值。(默认0)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

mask = np.zeros(img[:, :, 0].shape)
mask[20:100, 20:100] = 1
mask[110:160, 120:200] = 1
mask[220: 300, 210:280] = 1
mask[310: 380, 300:380] = 1
t = A.MaskDropout(max_objects=4, always_apply=True)
res = t(image=img, mask=mask)
res_img = res["image"]
res_mask = res["mask"]

在这里插入图片描述

mask = np.zeros(img[:, :, 0].shape)
mask[20:100, 20:100] = 1
mask[110:160, 120:200] = 1
mask[220: 300, 210:280] = 1
mask[310: 380, 300:380] = 1
t = A.MaskDropout(max_objects=4, image_fill_value="inpaint", always_apply=True)
res = t(image=img, mask=mask)
res_img = res["image"]
res_mask = res["mask"]

在这里插入图片描述
44、NoOp(DualTransform): class

功能:无操作。
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

45、Normalize(ImageOnlyTransform): class

功能:用以下公式进行标准化:img = (img - mean * max_pixel_value) / (std * max_pixel_value)。
初始化参数:
mean: 均值。(float或float序列)(默认(0.485, 0.456, 0.406))
std: 方差。(float或float序列)(默认(0.229, 0.224, 0.225))
max_pixel_value: 最大可能的像素值。(默认255.0)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.Normalize(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

t = A.Normalize(mean=0, std=1, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

46、OneOf(BaseCompose): class

功能:选择其中一个变换应用。被选中的变换将被以“force_apply=True”调用。单一变换的概率将作为权重考虑,每个变换选中的概率将是其归一化后的加权概率。
初始化参数:
transforms: 一系列候选的变换。
p: 执行OneOf整体逻辑的概率。(默认0.5)

t = A.OneOf([
    A.ColorJitter(),
    A.Flip(),
    A.GaussianBlur(blur_limit=(17, 19))
], p=1)
res_img = t(image=img)["image"]

在这里插入图片描述

47、OneOrOther(BaseCompose): class

功能:选择一个或者另一个变换应用。被选中的变换将被以“force_apply=True”调用。
初始化参数:
first: 若transforms没有设置,则此项设置第一个变换。(默认None)
second: 若transforms没有设置,则此项设置第二个变换。(默认None)
transforms: 变换列表。(列表,长度必须为2。)(默认None)
p: 应用第一个变换的概率。(默认0.5)

t = A.OneOrOther(transforms=[
    A.ColorJitter(p=1),
    A.Flip(p=1)
], p=1)
res_img = t(image=img)["image"]

在这里插入图片描述

48、OpticalDistortion(DualTransform): class

功能:桶形/枕形变形。非常规增强。(参考链接:https://stackoverflow.com/questions/6199636/formulas-for-barrel-pincushion-distortion)。当透镜的放大倍数伴随着轴向距离减小的时候,每个图像上的点径向地向图像中心移动,导致了桶形畸变的发生。这就形成了典型的“桶”形状。桶变形模型为:ru = rd*(1+k*rd^2);其中ru和rd分别为到无变形图像和变形图像失真位置中心的距离,k是与透镜有关的变形参数。
在这里插入图片描述
初始化参数:
distort_limit: 变形参数k。(单一值或二元元组,若为单一值,等同于(-distort_limit, distort_limit))(默认0.05)
shift_limit: 形变中心的偏移量。(单一值或二元元组,若为单一值,等同于(-shift_limit, shift_limit))(默认0.05)
interpolation: 插值方法。(int)(默认cv2.INTER_LINEAR)
border_mode: 边界填充方法。(int)(默认cv2.BORDER_REFLECT_101)
value: 若边界填充方法为常数填充,则此项指定填充值。(默认None)
mask_value: 若边界填充方法为常数填充,则此项指定mask填充值。(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.OpticalDistortion(distort_limit=2, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

49、PadIfNeeded(DualTransform): class

功能:如果图像边缘比期望数字小,那么将其填充。
初始化参数:
min_height: 最小结果图像高度。(int)(默认1024)
min_width: 最小结果图像宽度。(int)(默认1024)
pad_height_divisor: 如果非None,保证图像高度是可以被此值整除。(int)(默认None)
pad_width_divisor: 如果非None,保证图像宽度是可以被此值整除。(int)(默认None)
position: 图像位置。(应为PositionType.CENTER或PositionType.TOP_LEFT或PositionType.TOP_RIGHT或PositionType.BOTTOM_LEFT或PositionType.BOTTOM_RIGHT或PositionType.RANDOM)(默认PositionType.CENTER)
border_mode: OpenCV边缘填充模式。(默认int)(默认cv2.BORDER_REFLECT_101)
value: 如果边缘填充模式为常数填充,则此项指定填充值。(默认None)
mask_value: 如果边缘填充模式为常数填充,则此项指定mask填充值。(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.PadIfNeeded(border_mode=cv2.BORDER_CONSTANT, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

50、Perspective(DualTransform): class

功能:应用随机四点视角变换到输入上。
初始化参数:
scale: 正态分布的标准差。用于采样子图像的角与完整图像的角的随机距离。(可以为单一值或者二元tuple。如果是个单一值,等同于(0, scale))(默认0.05, 0.1)
keep_size: 应用视角变换后是否将图像resize回初始大小。如果为False,输出图像可能最终会具有不同的形状,并总是一个列表而不是array。(bool)(默认True)
pad_mode: OpenCV边界填充模式。(int)(默认cv2.BORDER_CONSTANT)
pad_val: 如果填充模式为常数填充,则此项指定填充值。(默认0)
mask_pad_val: 如果填充模式为常数填充,则此项指定mask填充值。(默认0)
fit_output: 如果为True,则将调整图像平面的大小和位置,以便在透视变换后仍然捕获整个图像。(如果keep_size设置为True,则在resize图像前进行。)否则,变换图像的部分可能在图像平面之外。当使用大比例值时,此设置不应设置为True,因为它可能会导致非常大的图像。(bool)(默认False)
interpolation: 插值方法。(int)(cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Perspective(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

51、PiecewiseAffine(DualTransform): class

功能:应用局部邻域之间不同的仿射变换。这种增强将点的规则网格放置在图像上,并通过仿射变换随机移动这些点的邻域。这会导致局部失真。(注意:这个图像增强器非常慢。尝试使用ElasticTransformation作为替代,其具有10倍的速度提升效果。)(注意:对于基于坐标的输入如关键点、bounding box、多边形等,这个增强器仍会使用一个基于图像的增强,这会导致比其他变换更慢并且不是完全正确的结果。)
初始化参数:
scale: 规则网格上的每个点都通过正态分布进行移动。这个scale因子相当于正态分布的sigma。请注意,如果“absolute_scale=False”(默认值),抖动(每个点在哪个方向上移动了多远)将乘以图像的高度/宽度,因此对于不同大小的图像,该比例可以是相同的。(建议值取在0.01和0.05之间(从弱到强的增强))(可以为单一值或二元tuple,若为单一值,则该值总会被用作scale;若为二元tuple,会从该闭区间中均匀采样一个随机值给每个图像。)(默认(0.03, 0.05))
nb_rows: 规则网格应该具有的点的行数。(int或int元组。至少为2,对于大图像,建议取大于4的值,你因此需要调整scale到较小值。若为单一int,则该值总会被用作行数;若为二元tuple,则会从该闭离散区间中均匀采样一个值给每个图像。)(默认4)
nb_cols: 列数,与“nb_rows”相似。(默认4)
interpolation: 插值方法序号。(int,应在0-5之间。 - 0: Nearest-neighbor; - 1: Bi-linear (default); - 2: Bi-quadratic; - 3: Bi-cubic; - 4: Bi-quartic; - 5: Bi-quintic)(默认1)
mask_interpolation: 与interpolation一致但是是用于mask。(int)(默认0)
cval: 当填充一个新创建的像素时使用的常数值。(int)(默认0)
cval_mask: 与cval一致但是是用于mask。(int)(默认0)
mode: 位于输入边界外的点将用此模式填充(str)(默认"constant")
absolute_scale: 是否将scale视为一个绝对值。(bool)(默认False)
always_apply: 是否总应用。(bool)(默认False)
keypoints_threshold: 用于由距离图向关键点转换时的界限。通过搜索每个通道中的argmin(非反转)或argmax(反转)来搜索关键点。此参数包含要接受的最大(非反转)或最小(反转)值,以便将命中视为关键点。使用None来禁用min/max。(默认0.01)
p: 应用该变换的概率。(默认0.5)

t = A.PiecewiseAffine(nb_rows=8, nb_cols=8, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

52、PixelDropout(DualTransform): class

功能:随机将一些像素点设为0。
初始化参数:
dropout_prob: 像素删除概率。(默认0.01)
per_channel: 若为True,drop掩码会分别对每个通道进行采样;否则对所有通道应用相同的掩码。(bool)(默认False)
drop_value: 删除后的位置将被填充的值。(如果设为None将填充随机值)(默认0)
mask_drop_value: 在mask中删除后位置将被填充的值。(如果设为None将不改变原值。)(默认0)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.PixelDropout(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

53、PixelDistributionAdaptation(ImageOnlyTransform): class

功能:另一个简单而快速的像素级域自适应。它在原始图像和参考图像上拟合一个简单的变换(如PCA、StandardScaler或MinMaxScaler),使用在该图像上训练的变换来变换原始图像,然后使用在参考图像上匹配的变换来执行逆变换。(参考链接:https://github.com/arsenyinfo/qudida)
初始化参数:
references_images: 参考图像的文件路径列表(默认)或者参考图像列表。(str列表或numpy.ndarray列表)
blend_ratio: 混合比例的上限和下限。匹配的图像会与原图像以一个随机比例混合,以增强生成图像的多样性。(二元tuple)(默认0.25, 1.0)
read_fn: 读取图像的自定义函数。该函数应当获取图像路径并返回关于图像的numpy.ndarray。(默认read_rgb_image)
transform_type: 转换类型。({‘pca’, ‘standard’, ‘minmax‘})(默认’pca’)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.PixelDistributionAdaptation([img2_path], always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

54、Posterize(ImageOnlyTransform): class

功能:减少每个色彩通道的bit数(保留高位若干位,低位置0)。
初始化参数:
num_bits: 保留的高位bit数量。(必须位于范围[0, 8]内。可以为(int,int)或者int,或者int列表[r,g,b]或者[[r1,r2],[g1,g2],[b1,b2]]。如果为单一值,则等同于[num_bits, num_bits])(默认4)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Posterize(num_bits=(1, 4), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

55、RandomBrightnessContrast(ImageOnlyTransform): class

功能:随机改变输入图像的亮度和对比度。
初始化参数:
brightness_limit: 改变亮度的范围。(单一值或二元tuple,若为单一值,等效于(-limit, limit))(默认(-0.2, 0.2))
contrast_limit: 改变对比度的范围。(单一值或二元tuple,若为单一值,等效于(-limit, limit))(默认(-0.2, 0.2))
brightness_by_max: 若为True则通过图像数据类型最大值调整对比度,不然通过均值调整对比度。(bool)(默认True)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomBrightnessContrast(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

56、RandomCrop(DualTransform): class

功能:裁剪输入的一个随机部分。
初始化参数:
height: 输出高度。(int)
width:输出宽度。(int)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.RandomCrop(300, 300, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

57、RandomCropFromBorders(DualTransform): class

功能:从距离边缘的随机位置裁剪输入图像,并最终不进行resize。
初始化参数:
crop_left: 图像将被从距离左边缘[0, crop_left*width]中的随机位置剪切。(必须为(0.0, 1.0)中的单一值)(默认0.1)
crop_right: 图像将被从距离右边缘[0, (1-crop_right)*width]中的随机位置剪切。(必须为(0.0, 1.0)中的单一值)(默认0.1)
crop_top: 图像将被从距离上边缘[0, crop_top*height]中的随机位置剪切。(必须为(0.0, 1.0)中的单一值)(默认0.1)
crop_bottom: 图像将被从距离下边缘[0, (1-crop_bottom)*height]中的随机位置剪切。(必须为(0.0, 1.0)中的单一值)(默认0.1)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.RandomCropFromBorders(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

58、RandomCropNearBBox(DualTransform): class

功能:以随机坐标偏移(x,y)从图像中裁剪bbox。
初始化参数:
max_part_shift: x和y方向上相对于“cropping_bbox”(以cropping_box_key设置的名称)的宽高维度的最大偏移。(可为单一值或二元元组,若为单一值,则等同于(max_part_shift, max_part_shift))(默认(0.3, 0.3))
cropping_box_key: cropping box的额外目标键,该键指定的参数应传入一维列表[x1, y1, x2, y2]。(str)(默认"cropping_bbox")
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.RandomCropNearBBox(max_part_shift=(0.2, 0.3), always_apply=True)
res_img = t(image=img, cropping_bbox=[120, 120, 400, 400])["image"]

在这里插入图片描述

59、RandomFog(ImageOnlyTransform): class

功能:模拟图像的雾。(参考链接:https://github.com/UjjwalSaxena/Automold–Road-Augmentation-Library)
初始化参数:
fog_coef_lower: 雾强度系数的下限。(应在[0, 1]间)(默认0.3)
fog_coef_upper: 雾强度系数的上限。(应在[0, 1]间)(默认1)
alpha_coef: 雾圈的透明度。(应在[0, 1]间)(默认0.08)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomFog(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

60、RandomGamma(ImageOnlyTransform): class

功能:随机gamma变换。Gamma变换是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系。其提升了暗部细节,通过非线性变换,让图像从曝光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正。(个人参考:https://blog.csdn.net/pengchengliu/article/details/110097184)
初始化参数:
gamma_limit: gamma界限。(单一值或二元tuple。若为单一值,等同于(-gamma_limit, gamma_limit))(默认(80, 120))
eps: 已弃用。
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomGamma(gamma_limit=(80, 150), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

61、RandomGridShuffle(DualTransform): class

功能:随机打乱图像网格中的单元。
初始化参数:
grid: 分割图像的网格行列数量。(二元int元组)(默认(3, 3))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomGridShuffle(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

62、RandomRain(ImageOnlyTransform): class

功能:添加雨效果。(参考链接:https://github.com/UjjwalSaxena/Automold–Road-Augmentation-Library)
初始化参数:
slant_lower: 斜角的下限。(应为[-20, 20]中的值)(默认-10)
slant_upper: 斜角的上限。(应为[-20, 20]中的值)(默认10)
drop_length: 雨滴的长度。(应为[0, 100]中的值)(默认20)
drop_width: 雨滴的宽度。(应为[1, 5]中的值)(默认1)
drop_color: 雨滴的颜色。((r, g, b)列表)(默认(200, 200, 200))
blur_value: 下雨天看起来很朦胧。(int)(默认7)
brightness_coefficient: 下雨天通常很阴暗。(应为[0, 1]中的值)(默认0.7)
rain_type: 雨类型。({None, ‘drizzle’, ‘heavy’, ‘torrential’})(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomRain(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

63、RandomResizedCrop(_BaseRandomSizedCrop): class

功能:torchvision变体。裁剪输入的一个随机部分,然后将它rescale到某个尺度。
初始化参数:
height: 裁剪和resize后的高度。(int)
width: 裁剪和resize后的宽度。(int)
scale: 裁剪原始大小的尺度范围。(二元元组)(默认(0.08, 1.0))
ratio: 相对于原始长宽比的裁剪长宽比的范围。(二元元组)(默认(0.75, 1.3333333333333333)
interpolation: 指定插值算法的标识符。(int)(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.RandomResizedCrop(500, 500, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

64、RandomRotate90(DualTransform): class

功能:随机翻转输入90度零次或更多次。
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomRotate90(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

65、RandomScale(DualTransform): class

功能:随机resize输入。输出图像的大小与输入图像的大小不一致。
初始化参数:
scale_limit: 尺度因子范围。(单一值或二元tuple。若为单一值,则等同于(-scale_limit, scale_limit)。注意scale_limit会加上偏置1。如果scale_limit为tuple,如(low, high),则从(1+low, 1+high)中采样。)(默认0.1)
interpolation: 指定插值算法。(int)(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomScale(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

66、RandomShadow(ImageOnlyTransform): class

功能:模拟图像阴影。(参考链接:https://github.com/UjjwalSaxena/Automold–Road-Augmentation-Library)
初始化参数:
shadow_roi: 图像中展示阴影的区域。(四元组(x_min, y_min, x_max, y_max),所有值必须位于[0, 1]中)(默认(0, 0.5, 1, 1))
num_shadows_lower: 可能阴影的数量下限。(int,必须处于[0, ‘num_shadows_upper’]间)
num_shadows_upper: 可能阴影的数量上限。(int, 必须处于[‘num_shadows_lower’, inf)间)
shadow_dimension: 阴影多边形中边的数量。(int)(默认5)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomShadow(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

67、RandomSizedBBoxSafeCrop(BBoxSafeRandomCrop): class

功能:裁剪输入的随机部分,并rescale,同时保证没有bboxes的损失。
初始化参数:
height: 裁剪和resize后的高度。(int)
width: 裁剪和resize后的宽度。(int)
erosion_rate: 裁剪前应用到输入图像高度上的腐蚀比例。(默认0.0)
interpolation: 插值方法。(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

bboxes = [[50, 50, 400, 350]]   # [x1, y1, width, height]
category_ids=[0]
t = A.Compose([
    A.RandomSizedBBoxSafeCrop(500, 500, always_apply=True)],
    bbox_params=A.BboxParams(format='coco', label_fields=['category_ids']))
res = t(image=img, bboxes=bboxes, category_ids=category_ids)
res_img = res["image"]
res_bboxes = res["bboxes"]

在这里插入图片描述

68、RandomSizedCrop(_BaseRandomSizedCrop): class

功能:裁剪图像的随机部分,并放缩到某个大小。
初始化参数:
min_max_height: 裁剪大小限制。(二元int元组)
height: 裁剪和放缩后的高度。(int)
width: 裁剪和放缩后的宽度。(int)
w2h_ratio: 裁剪的宽高比。(默认1.0)
interpolation: 插值方法。(int)(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.RandomSizedCrop((200, 400), 500, 500)
res_img = t(image=img)["image"]

在这里插入图片描述

69、RandomSnow(ImageOnlyTransform): class

功能:漂白一些模拟雪的像素值。(参考链接:https://github.com/UjjwalSaxena/Automold–Road-Augmentation-Library)
初始化参数:
snow_point_lower: 雪数量的下限。(应在[0, 1]范围内)(默认0.1)
snow_point_upper: 雪数量的上限。(应在[0, 1]范围内)(默认0.3)
brightness_coef: 越大的值会导致越多的雪数量。(应>0)(默认2.5)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomSnow(brightness_coeff=0.1, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

70、RandomSunFlare(ImageOnlyTransform): class

功能:模拟光斑。(参考链接:https://github.com/UjjwalSaxena/Automold–Road-Augmentation-Library)
初始化参数:
flare_roi: 图像的何处要展示光斑。(四元tuple(x_min, y_min, x_max, y_max),所有值必须处于[0, 1]范围内。)(默认0, 0, 1, 0.5))
angle_lower: 角度下限。(必须位于[0, ‘angle_upper’]内)(默认0)
angle_upper: 角度上限。(必须位于[‘angle_lower’, 1]内)(默认1)
num_flare_circles_lower: 光斑数量的下限。(必须位于[0, ‘num_flare_circles_upper’]内)(默认6)
num_flare_circles_upper: 光斑数量的上限。(必须位于[‘num_flare_circles_lower’, inf]内)(默认10)
src_radius:光源半径。(int)(默认400)
src_color: 光斑色彩。(三元int元组(r, g, b))(默认(255, 255, 255))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomSunFlare(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

71、RandomToneCurve(ImageOnlyTransform): class

功能:通过操纵图像的色调曲线,随机改变图像亮区和暗区之间的关系。
初始化参数:
scale: 正态分布的标准差。用来采样修正图像曲线的两个控制点的随机移动距离。(应位于[0, 1]间)(默认0.1)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomToneCurve(scale=0.4, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

72、ReplayCompose(Compose): class

功能:应用变换后将保存本次变换的信息到返回结果的save_key对应的目标键中(默认"replay"),若要再现该变换,则可通过将该项传入类函数replay实现。
初始化参数:
transforms: transform列表。(列表)
bbox_params: bbox参数。(默认None)
keypoint_params: 关键点参数。(默认None)
additional_targets: 额外的目标。(默认None)
p: 应用所有变换的概率。(默认0.5)
save_key: 保存关键字。(str)(“replay”)

t = A.ReplayCompose([
    A.ColorJitter(always_apply=True)
])
res = t(image=img)
res_img1 = res["image"]
res_replay = res["replay"]  # 获得变换信息
res_img2 = t.replay(res_replay, image=img)["image"] # 再现变换

在这里插入图片描述

73、Resize(DualTransform): class

功能:放缩输入到给定高度和宽度。
初始化参数:
height: 输出高度。(int)
width: 输出宽度。(int)
interpolation: 插值方法。(int)(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.Resize(300, 300, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

74、RingingOvershoot(ImageOnlyTransform): class

功能:通过使用2D sinc滤波器对图像进行卷积来创建振铃或过冲伪影。(文献链接:https://arxiv.org/pdf/2107.10833.pdf)振铃伪影(ringing artifact)通常表现为图像中尖锐过渡附近的伪边缘,它们在视觉上看起来像边缘附近的条纹或“鬼影”。过冲伪影(overshoot artifact)通常与振铃伪影相结合,表现为边缘过渡处的跳跃增加。这些伪影的主要原因是信号在没有高频的情况下是带宽受限的。这些伪影非常常见,并且通常由图像锐化算法(例如JPEG等)引起。使用sinc滤波器(一个能切断高频的理想滤波器)来模拟振铃和过冲伪影。滤波器的参数定义如下图,其中(i, j)是核坐标,ωc是切断频率,J1是第一类一阶贝塞尔函数。
在这里插入图片描述
初始化参数:
blur_limit: sinc滤波器的最大核大小。(int或二元int元组。必须在[3, inf)间)(默认(7, 15))
cutoff: 选择cutoff频率(弧度)的范围。(必须在(0, np.pi)间)(默认(np.pi/4, np.pi/2))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RingingOvershoot(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

75、RGBShift(ImageOnlyTransform): class

功能:随机偏移输入GRB
初始化参数:
r_shift_limit: 为红色通道改变值的范围。(int或二元int元组。如果为单一值,则等同于(-r_shift_limit, r_shift_limit))(默认(-20, 20))
g_shift_limit: 为绿色通道改变值的范围。(int或二元int元组。如果为单一值,则等同于(-r_shift_limit, r_shift_limit))(默认(-20, 20))
b_shift_limit: 为蓝色通道改变值的范围。(int或二元int元组。如果为单一值,则等同于(-r_shift_limit, r_shift_limit))(默认(-20, 20))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RGBShift(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

76、Rotate(DualTransform): class

功能:使用通过均匀分布随机选择的角度旋转输入。
初始化参数:
limit: 随机角度选择范围。(int或二元int元组,若为单一值则等同于(-limit, limit))(默认(-90, 90))
interpolation: 插值方法。(int)(默认cv2.INTER_LINEAR)
border_mode: 边缘填充方法。(int)(默认cv2.BORDER_REFELCT_101)
value: 如果使用常数边缘填充,则此项指定填充值。(默认None)
mask_value: 如果使用常数边缘填充,则此项指定填充值。(默认None)
rotate_method: 对于bounding boxes使用的旋转方法。{‘largest_box’, ‘ellipse’}(默认’largest_box’)
crop_border: 若为True,则会在旋转后图像内部创建一个最大的可能的裁剪。(默认False)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Rotate(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

t = A.Rotate(crop_border=True, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

77、SafeRotate(DualTransform): class

功能:通过随机从均匀分布中选取的角度旋转在输入帧之内的输入,输出后的图像保持原本大小和长宽比。输出图像可能会具有伪影,因为在旋转之后,图像可能会具有一个不同的宽高比,而在resize之后,它会变回原来的形状和原来的宽高比,因此可能会导致部分伪影。
初始化参数:
limit: 随机选择角度的范围。(int或二元int元组,若为单一值,则等同于(-limit, limit))(默认(-90, 90))
interpolation: 插值方法。(int)(默认cv2.INTER_LINEAR)
border_mode: 边界填充方法。(int)(默认cv2.BORDER_REFLECT_101)
value: 若边界填充为常数填充,则此项指定填充值。(默认None)
mask_value: 若边界填充为常数填充,则此项指定mask填充值。(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.SafeRotate(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

78、Sequential(BaseCompose): class

功能:按序应用所有变换。此转换不用于替换“Compose”。相反,它应该在“Compose”中使用,就像使用“OneOf”或“OneOrOther”一样。例如,可以将“OneOf”与“Sequential”组合以创建一个包含多个图像增强序列的图像增强管道,并将一个随机选择的序列应用于输入数据。
初始化参数:
transforms: 变换列表。(列表)
p: 应用所有变换的概率。(默认0.5)

t = A.Sequential([
    A.ColorJitter(always_apply=True),
    A.Flip(always_apply=True)
], p=1)
res_img = t(image=img)["image"]

在这里插入图片描述

79、Sharpen(ImageOnlyTransform): class

功能:锐化图像并将结果与原图像重叠。
初始化参数:
alpha: 选择锐化后图像可见度的范围。若为0,则只有原图像可见;若为1,则只有锐化后图像可见。(二元tuple)(默认(0.2, 0.5))
lightness: 选择锐化后图像的亮度的范围。(二元tuple)(默认(0.5, 1.0))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Sharpen(alpha=(0.8, 1.0), always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

80、ShiftScaleRotate(DualTransform): class

功能:随机应用仿射变换:对输入进行平移、缩放和旋转。
初始化参数:
shift_limit: 对高度和宽度的偏移因子的范围。(单一值或二元tuple。若为单一值,则等同于(-shift_limit, shift_limit)。下限和上限的绝对值应在[0, 1]中)(默认(-0.0625, 0.0625))
scale_limit: 放缩因子范围。(单一值或二元tuple。若为单一值,则等同于(-scale_limit, scale_limit)。注意scale_limit将会以1为偏置。如果scale_limit是一个tuple如(low, high),则会从(1+low, 1+high)中采样。)(默认(-0.1, 0.1))
rotate_limit: 旋转范围。(int或二元int元组。若为单一值,则等同于(-rotate_limit, rotate_limit))(默认(-45, 45))
interpolation: 插值方法。(int)(默认cv2.INTER_LINEAR)
border_mode: 边界填充方法。(int)(默认cv2.BORDER_REFLECT_101)
value: 如果边界填充为常数填充,则此项指定填充值。(默认None)
mask_value: 如果边界填充为常数填充,则此项指定mask填充值。(默认None)
shift_limit_x: 宽度的偏移因子的范围。如果其被设置,会使用此值而非shift_limit所指定的值。(单一值或二元tuple。若为单一值,则等同于(-shift_limit_x, shift_limit_x)。下限和上限的绝对值应在[0, 1]中)
shift_limit_y: 高度的偏移因子的范围。如果其被设置,会使用此值而非shift_limit所指定的值。(单一值或二元tuple。若为单一值,则等同于(-shift_limit_y, shift_limit_y)。下限和上限的绝对值应在[0, 1]中)
rotate_method: 对bounding boxes使用的旋转方法。(应为’largest_box’或’ellipse’)(默认’largest_box’)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ShiftScaleRotate(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

81、SmallestMaxSize(DualTransform): class

功能:放缩图像以使得最小边长等同于max_size,同时保持原始图像的宽高比。
初始化参数:
max_size: 变换后图像短边的最大长度。(int或int列表,若为列表,则最大长度将从该列表中随机选择。(默认1024)
interpolation: 插值方法。(int)(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.SmallestMaxSize(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

82、Solarize(ImageOnlyTransform): class

功能:沿某一界限反转所有像素值。
初始化参数:
threshold: solarize方法的界限范围。(单一值或二元tuple。若为单一值,则等同于[threshold, threshold]。)(默认128)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Solarize(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

83、SomeOf(BaseCompose): class

功能:选择n个变换进行应用。所有选择的变换会以“force_apply=True”调用。每个变换本身的概率p会作为其在整个变换列表中的概率权重,所有变换的概率之和会被归一化为1。
初始化参数:
transforms: 变换列表。(列表)
n:应用的变换的数量。(int)
replace: 是否允许变换被重复选择。(默认True)
p: 应用整体逻辑的概率。(默认1)

t = A.SomeOf([
    A.ColorJitter(),
    A.Flip(),
    A.RandomCrop(300, 300),
    A.Rotate()
], n=2, p=1)
res_img = t(image=img)["image"]

在这里插入图片描述

84、Spatter(ImageOnlyTransform): class

功能:应用飞溅变换。它模拟了可以以雨或泥的形式遮挡镜头的腐蚀。(论文链接:https://arxiv.org/pdf/1903.12261.pdf)
初始化参数:
mean: 产生液体层的正态分布的均值。(单一值或float元组。若为单一值会将其作为均值,若为tuple,会从[mean[0], mean[1])中采样作为均值。)(默认0.65)
std: 产生液体层的正态分布的标准差。(单一值或float元组。若为单一值会将其作为标准差,若为tuple,会从[std[0], std[1])中采样作为标准差。)(默认0.3)
gauss_sigma: 液体层的高斯滤波的Sigma值。(单一值或float元组。若为单一值会将其作为gauss_sigma,若为tuple,会从[sigma[0], sigma[1])中采样作为gauss_sigma。)(默认2)
cutout_threshold: 液体层滤波的界限(决定水滴的数量)。(单一值或float元组。若为单一值会将其作为cutout_threshold,若为tuple,会从[cutout_threshold[0], cutout_threshold[1])中采样作为cutout_threshold。)(默认0.68)
intensity: 腐蚀的强度。单一值或float元组。若为单一值会将其作为强度,若为tuple,会从[intensity[0],intensity[1])中采样作为强度。)(默认0.6)
mode: 腐蚀的模式。({‘rain’, ‘mud’},可为str或者str列表。若为str列表则腐蚀会从该列表中采样。)(默认’rain’)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Spatter(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

85、Superpixels(ImageOnlyTransform): class

功能:将图像部分/完全转换为其超像素表示。这个实现使用了slimage版本的SLIC算法。(算法详解推荐:https://blog.csdn.net/cocapop/article/details/127466253)
初始化参数:
p_replace: 为所有线段定义该线段内的像素被其平均颜色替换的概率(否则,像素不会更改)。(可为单一值或二元元组,若为单一值,则该值会总被使用;若为二元元组(a, b),则会为每个图片从[a, b]中随机采样一个值作为概率。)
n_segments: 要生成多少超级像素的粗略目标数(算法可能会偏离此数)。较低的值将导致更粗糙的超级像素。较高的值在计算上更密集,因此会导致速度减慢。(int或二元int元组。若为单一值,则该值会总用作段的数量;若为二元元组(a,b),则会为每个图片从离散区间[a…b]中采样一个值。)
max_size: 执行增强时的最大图像大小。如果图像的宽度或高度超过此值,则在增强之前将缩小图像的大小,以便最长的边与“max_size”匹配。这样做是为了加快进程。最终的输出图像具有与输入图像相同的大小。请注意,如果“p_replace”低于“1.0”,则向下/向上缩放也会影响未被替换的像素。使用“无”可不应用缩小/放大。(int或None)(默认128)
interpolation: 插值方法。(int)(默认cv2.INTER_LINEAR)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Superpixels(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

86、TemplateTransform(ImageOnlyTransform): class

功能:应用输入图像与指定模板的混合。
初始化参数:
templates: 用于变换的作为模板的图像。(numpy array或者numpy array列表)
img_weight:用作输入图像所占的权重。(单一值或多元元组。若为单一值则总应用该值,若为多元tuple,则图像权重从[img_weight[0], img_weight[1])中取值。)(默认0.5)
template_weight: 用作输入图像所占的权重。(单一值或多元元组。若为单一值则总应用该值,若为多元tuple,则模板权重t从[template_weight[0], template_weight[1])中取值。)(默认0.5)
template_transform: 可以应用于模板的转换对象必须生成与输入图像大小相同的模板。(默认None)
name: 变换的名字,仅在反序列化时使用。(str)(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.TemplateTransform(templates=img2, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

87、ToGray(ImageOnlyTransform): class

功能:将输入的RGB图像转换为灰度图。如果结果图像的均像素值大于127,则将结果灰度图像反转。
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ToGray(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

88、ToFloat(ImageOnlyTransform): class

功能:将像素值除以“max_value”,得到float32输出数组,其中所有值都在[0, 1.0]范围内。如果“max_vvalue”为None,则变换将尝试通过检查输入图像的数据类型来推断最大值。
初始化参数:
max_value: 最大可能的输入值。(默认None)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.ToFloat(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

89、ToSepia(ImageOnlyTransform): class

功能:为输入RGB图像应用棕褐色滤波器。
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ToSepia(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

90、Transpose(DualTransform): class

功能:通过交换行列转置输入。
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.Transpose(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

91、UnsharpMask(ImageOnlyTransform): class

功能:使用Unsharp Masking处理锐化输入图像,并将结果与原始图像叠加。(论文链接:
arxiv.org/pdf/2107.10833.pdf)
初始化参数:
blur_limit: 用来模糊输入图像的最大高斯核大小。若为0则会根据sigma进行计算:round(sigma * (3 if img.dtype == np.uint8 else 4) * 2 + 1) + 1。若为单一值,则等同于(0, blur_limit)。(可以为二元整数tuple或者单一值,必须为[0, inf)间的0或奇数)(默认(3, 7))
sigma_limit: 高斯核标准差。若为单一值则等同于(0, sigma_limit)。若为0则会如此计算:sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8。(可以为二元tuple或者单一值,必须在[0,inf)间)(默认0)
alpha: 选择锐化后图像的可视性的范围。若为0,则只有初始图像可见;若为1,则只有锐化后的图像可见。(默认(0.2, 0.5))
threshold: 仅对原始图像和平滑版本之间像素差异较大的区域限制锐化的值。较高的阈值意味着平坦区域的锐化程度较低。(必须位于[0, 255]间)(默认10)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.UnsharpMask(blur_limit=(31, 51), alpha=(0.8, 1.0), threshold=0, always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

92、VerticalFlip(DualTransform): class

功能:沿x轴翻转图像。
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.VerticalFlip(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

93、ZoomBlur(ImageOnlyTransform): class

功能:应用缩放模糊变换。(论文链接:https://arxiv.org/abs/1903.12261)
初始化参数:
max_factor: 用于模糊的最大因子的范围。(单一值或二元tuple。若为单一值,等同于(1, limit)。所有的max_factor都必须大于1。)(默认1.31)
step_factor: 用作numpy.arrange的步长参数(单一值或二元tuple。若为单一值则使用之;若为tuple则step_factor会从范围[step_factor[0], step_factor[1]]中采样。所有step_factor因子都必须为正值。)(默认(0.01, 0.03))
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.ZoomBlur(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

94、ToTensorV2(BasicTransform): class

功能:将图像和掩码转换为“torch.Tensor”。将Numpy的“HWC”图像转换为pytorch的“CHW”张量。如果图像是“HW”格式(灰度图像),它将被转换为pytorch“HW’张量。这是旧的“ToTensor”转换的简化和改进版本(“ToTensor”已被弃用,现在它不存在于库中。应该使用“ToTensorV2”)。(此类位于albumentations.pytorch中,要调用该类,可以通过from albumentations.pytorch import ToTensorV2)
初始化参数:
transpose_mask: 如果为True,并且输入掩码有三个维度,则此转换将转换维度,使形状“[height,width,num_channels]”变为“[num_channels, height, width]”。后一种格式是PyTorch张量的标准格式。(bool)(默认False)

95、RandomGravel(ImageOnlyTransform): class

功能:添加砂砾。(参考链接:https://github.com/UjjwalSaxena/Automold–Road-Augmentation-Library)
初始化参数:
gravel_roi: 砂砾出现的区域。(四元元组(top-left x, top-left y, bottom-right x, botom-right y),应位于[0, 1]间)(默认(0.1, 0.4, 0.9, 0.9))
number_of_patches: 砂砾片的数量。(int)(默认2)
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认0.5)

t = A.RandomGravel(always_apply=True)
res_img = t(image=img)["image"]

在这里插入图片描述

96、ToRGB(ImageOnlyTransform): class

功能:将输入的灰度图转换为RGB图。
初始化参数:
always_apply: 是否总应用。(bool)(默认False)
p: 应用该变换的概率。(默认1.0)

t = A.ToRGB(always_apply=True)
res_img = t(image=img[:, :, 0])["image"]

在这里插入图片描述

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

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

相关文章

MySQL基础-SQL介绍

本文介绍MySQL中SQL通用语法&#xff0c;包括&#xff1a;DDL&#xff0c;DML&#xff0c;DQL&#xff0c;DCL 文章目录 SQL分类DDL&#xff08;数据定义语言&#xff09;数据库操作表操作 DML&#xff08;数据操作语言&#xff09;添加数据更新和删除数据 DQL基础查询条件查询…

Linux sed流编辑器

sed流编辑器 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储在一个命令文本文件中。 sed 的工作流程主要包括读取…

智能的本质人工智能与机器人领域的64个大问题阅读笔记(二)

目录 如果一个人不能理解所说语言的全部信息&#xff0c;那么说这种语言也是没有意义的。 “20年内&#xff0c;机器将能够胜任人类承担的所有工作”&#xff08;赫伯特西蒙&#xff0c; 1965&#xff09;。 以及21世纪的人类愿意相信超智能机器时代的到来&#xff0c;与前几…

项目中大批量数据查询导致OOM

项目中有时候一次性将大批量数据都查出来到内存中导致内存占用过多很可能会导致内存溢出 问题复现 搭建一个本地项目。需求描述&#xff1a;查询表call_task中待拨打的数据进行拨打&#xff0c;call_task中一次可能会有大批量数据需要处理。本次准备了1万条数据。 /*** 查询…

【Java校招面试】基础知识(九)——Redis

目录 前言一、基础概念二、Redis持久化三、Redis分布式存储后记 前言 本篇主要介绍Redis数据库的相关内容。 “基础知识”是本专栏的第一个部分&#xff0c;本篇博文是第九篇博文&#xff0c;如有需要&#xff0c;可&#xff1a; 点击这里&#xff0c;返回本专栏的索引文章点…

(c语言实现)数据结构链表oj题(2)

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:分析力扣中有关链表的部分题目. 目录 前言一、链表中倒…

HTML第二天

第二天 表格 表格的主要作用 1.表格主要用于显示、展示数据&#xff0c;因为它可以让数据显示的非常的规整&#xff0c;可读性非常好。特别是后台展示数据的时候&#xff0c;能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理2.表格不是用来…

Java基础知识:1,DOS命令

1&#xff0c;盘名称 加 : 进入该盘目录下 例如&#xff1a;e: 进入e盘 2&#xff0c;dir 查看当前路径下文件和文件夹 3&#xff0c;md 文件夹名字 》 创建文件夹&#xff08;md后要加空格&#xff09; &#xff08;md make directory&#xff09; 4&#xff0c;c…

Oracle11g下载与安装

一、Oracle11g下载 官网下载地址&#xff1a;Oracle Database 11g Release 2 for Microsoft Windows (x64) 选择"Accept License Agreement"&#xff0c;点击"win64_11gR2_database_1of2.zip"和"win64_11gR2_database_2of2.zip"&#xff0c;进行…

Debian11之 K3s 部署K8S集群

K3S 架构方案 Server 节点指的是运行 k3s server 命令的主机&#xff0c;control plane 和数据存储组件由 K3s 管理Agent 节点指的是运行 k3s agent 命令的主机&#xff0c;不具有任何数据存储或 control plane 组件Server 和 Agent 都运行 kubelet、容器运行时和 CNI 基于 …

GPUAnimation的Mesh动画烘焙到贴图,学习笔记

0.动画烘焙贴图工具作者 Unity-GPU Animation - 知乎 1.安装学习项目 GitHub - striter/Unity3D-ToolChain_StriteR 复制到URP项目中&#xff0c;并删掉多余报错的和GPUAnimation无关的模块 2.把学习项目中的HLSL搬到低版本Unity的CG版本 安装FBX Exporter把烘焙好的mesh导…

【秒杀系统】高并发编程入门学习

文章目录 一、秒杀系统的基本构成二、秒杀系统的常见问题三、秒杀系统的解决技术 一、秒杀系统的基本构成 二、秒杀系统的常见问题 高并发 大量的请求进来&#xff0c;在Redis缓存层会发生缓存雪崩 缓存击穿 缓存穿透这些问题&#xff0c;这些问题就会打挂MySQL。这样就会导致…

23种设计模式之建造者模式(Builder Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的建造者模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

C++ STL 之 list 的模拟实现

文章目录 &#x1f4cd;前言&#x1f308;STL之list的模拟实现&#x1f388;list_node节点的定义&#x1f388;iterator迭代器&#x1f56f;️构造函数&#x1f56f;️*it&#x1f56f;️->&#x1f56f;️it/it&#x1f56f;️it--/--it&#x1f56f;️! / &#x1f388;l…

[MAUI程序设计]界面多态与实现

文章目录 需求一&#xff1a;在不同设备上使用不同 UI 外观定义控件 UI 外观基于平台自定义配置 需求二&#xff1a;在不同数据类别中使用不同的 UI 外观定义视图 UI 外观创建数据模板创建选择器定义数据 需求三&#xff1a;在不同数据状态中使用不同的 UI 外观使用绑定模型更改…

【腾讯云FinOps Crane 集训营】Crane 助力云原生用户充分发挥云上资源的最大价值,帮助企业降本增效之利器

文章目录 Crane 助力云原生用户充分发挥云上资源的最大价值&#xff0c;帮助企业降本增效之利器前言云上资源成本虚高的现状一、云原生的崛起&#xff1a;服务上云二、服务上云的魔咒&#xff1a;服务健壮了&#xff0c;钱袋子却空了三、钱都去哪了&#xff1a;云资源无序投入的…

golang 微服务的负载均衡

上次我们说了一下 微服务的容错处理&#xff0c;是用的 断路器 这一次我们来一起看看 微服务的负载均衡是如何做的 负载均衡 负载均衡是什么呢&#xff1f; 他能够将大量的请求&#xff0c;根据负载均衡算法&#xff0c;将不同的请求分发到多台服务器上进行处理&#xff0c…

Git Mac设置系统命令别名和Git命令别名

有时候git命令的别名过长要如何&#xff0c;在命令行不方便输入&#xff0c;这时候我们可以设置命令别名。 设置系统命令别名 设置系统命令别名可以在.bash_profile文件中配置&#xff0c;这个文件也是我们经常配置环境变量的地方&#xff0c;这个文件本身是不可见的&#xf…

rtp h264 发送和接收程序的问题

目的 为了自己写一个投屏协议&#xff0c;目前重新启用rtp协议&#xff0c;使用rtp协议直传效率最高&#xff0c;并且使用的是udp ffmpeg 发送rtp ffmpeg的rtp发送时一般把sps和pps放在一个包里面&#xff0c;写接收代码的时候要注意&#xff0c;在单包里面可以直接接收到两…

第一章: Mybatis-Plus 之了解

目录 1.1&#xff1a;Mybatis-Plus介绍 1.2&#xff1a;代码及文档地址 1.3&#xff1a;特性 1.4&#xff1a;架构 1.5&#xff1a;作者 下面的图文来自于官方的介绍 1.1&#xff1a;Mybatis-Plus介绍 Mybatis-Plus 是一个 Mybatis 的增强工具&#xff0c;在Mybatis的基…