← Back to all transforms
Downscale
Description
Decrease image quality by downscaling and upscaling back. This transform simulates the effect of a low-resolution image by first downscaling the image to a lower resolution and then upscaling it back to its original size. This process introduces loss of detail and can be used to simulate low-quality images or to test the robustness of models to different image resolutions. Args: scale_range (tuple[float, float]): Range for the downscaling factor. Should be two float values between 0 and 1, where the first value is less than or equal to the second. The actual downscaling factor will be randomly chosen from this range for each image. Lower values result in more aggressive downscaling. Default: (0.25, 0.25) interpolation_pair (InterpolationDict): A dictionary specifying the interpolation methods to use for downscaling and upscaling. Should contain two keys: - 'downscale': Interpolation method for downscaling - 'upscale': Interpolation method for upscaling Values should be OpenCV interpolation flags (e.g., cv2.INTER_NEAREST, cv2.INTER_LINEAR, etc.) Default: {'downscale': cv2.INTER_NEAREST, 'upscale': cv2.INTER_NEAREST} p (float): Probability of applying the transform. Should be in the range [0, 1]. Default: 0.5 Targets: image Image types: uint8, float32 Note: - The actual downscaling factor is randomly chosen for each image from the range specified in scale_range. - Using different interpolation methods for downscaling and upscaling can produce various effects. For example, using INTER_NEAREST for both can create a pixelated look, while using INTER_LINEAR or INTER_CUBIC can produce smoother results. - This transform can be useful for data augmentation, especially when training models that need to be robust to variations in image quality or resolution. Example: >>> import albumentations as A >>> import cv2 >>> transform = A.Downscale( ... scale_range=(0.5, 0.75), ... interpolation_pair={'downscale': cv2.INTER_NEAREST, 'upscale': cv2.INTER_LINEAR}, ... p=0.5 ... ) >>> transformed = transform(image=image) >>> downscaled_image = transformed['image']
Parameters
- p: float (default: 0.5)
- interpolation_pair: InterpolationPydantic (default: {"upscale":0,"downscale":0})
- scale_range: tuple[float, float] (default: (0.25, 0.25))
Targets
- Image
Try it out
Original Image (width = 484, height = 733):
Transformed Image:
Transform not yet applied