from albumentations import DualIAATransform, to_tuple import imgaug.augmenters as iaa class IAAAffine2(DualIAATransform): """Place a regular grid of points on the input and randomly move the neighbourhood of these point around via affine transformations. Note: This class introduce interpolation artifacts to mask if it has values other than {0;1} Args: p (float): probability of applying the transform. Default: 0.5. Targets: image, mask """ def __init__( self, scale=(0.7, 1.3), translate_percent=None, translate_px=None, rotate=0.0, shear=(-0.1, 0.1), order=1, cval=0, mode="reflect", always_apply=False, p=0.5, ): super(IAAAffine2, self).__init__(always_apply, p) self.scale = dict(x=scale, y=scale) self.translate_percent = to_tuple(translate_percent, 0) self.translate_px = to_tuple(translate_px, 0) self.rotate = to_tuple(rotate) self.shear = dict(x=shear, y=shear) self.order = order self.cval = cval self.mode = mode @property def processor(self): return iaa.Affine( self.scale, self.translate_percent, self.translate_px, self.rotate, self.shear, self.order, self.cval, self.mode, ) def get_transform_init_args_names(self): return ("scale", "translate_percent", "translate_px", "rotate", "shear", "order", "cval", "mode") class IAAPerspective2(DualIAATransform): """Perform a random four point perspective transform of the input. Note: This class introduce interpolation artifacts to mask if it has values other than {0;1} Args: scale ((float, float): standard deviation of the normal distributions. These are used to sample the random distances of the subimage's corners from the full image's corners. Default: (0.05, 0.1). p (float): probability of applying the transform. Default: 0.5. Targets: image, mask """ def __init__(self, scale=(0.05, 0.1), keep_size=True, always_apply=False, p=0.5, order=1, cval=0, mode="replicate"): super(IAAPerspective2, self).__init__(always_apply, p) self.scale = to_tuple(scale, 1.0) self.keep_size = keep_size self.cval = cval self.mode = mode @property def processor(self): return iaa.PerspectiveTransform(self.scale, keep_size=self.keep_size, mode=self.mode, cval=self.cval) def get_transform_init_args_names(self): return ("scale", "keep_size")