Skip to main content

Spatial distortions for image augmentations

Project description

saug (Spatial Augmentation)

Spatial distortions for image augmentations

Cite this library:

@article{oskouei2024segmentation, title={Segmentation of Non-Small Cell Lung Carcinomas: Introducing DRU-Net and Multi-Lens Distortion}, author={Oskouei, Soroush and Valla, Marit and Pedersen, Andr{'e} and Smistad, Erik and Dale, Vibeke Grotnes and H{\o}ib{\o}, Maren and Wahl, Sissel Gyrid Freim and Haugum, Mats Dehli and Lang{\o}, Thomas and Ramnefjell, Maria Paula and others}, journal={arXiv preprint arXiv:2406.14287}, year={2024} }

and

DOI || Harvard citation: Soroush Oskouei (2024) “SoroushOskouei/saug: saug”. Zenodo. doi: 10.5281/zenodo.10780398.

Include both citations!

Overview

This Python library provides a collection of functions to apply various distortion effects to images. These effects range from simple pixelation and mirroring to more complex transformations like elastic and wave distortions, enabling creative alterations of images for artistic or research purposes. The library leverages NumPy for efficient array manipulations, ensuring high performance even for large images.

Dependencies

NumPy: For array operations and mathematical functions. OpenCV (cv2): For image reading and saving functionalities, as well as some image processing tasks.

Functions

This library includes a variety of functions to apply different types of distortions to images. Each function accepts an image (as a NumPy array) as input and returns the distorted image. The main functions include:

apply_perspective_transform: Applies a random perspective distortion.

multi_lens_distortion: Applies several lens distortion effects on various positions.

elastic_transform: Applies an elastic deformation to the image.

twirl_distortion01 and twirl_distortion02: Apply a twirling effect to parts of the image.

wave_distortion01, wave_distortion02, and wave_distortion: Create wave-like distortions across the image.

pixelate_image: Pixelates a specified region or the entire image.

cartesian_to_polar_image_stretched: Transforms the image from Cartesian to polar coordinates, stretching the pixels.

mirror_effect: Applies a mirroring effect to a specified side of the image.

tilt_shift_effect: Simulates a tilt-shift photography effect, blurring parts of the image while keeping a specific area in focus.

ripple_effect: Creates a ripple effect across the image.

zoom_blur: Applies a zoom blur effect from a specified point.

space_distortion_v1: Distorts the space within the image in a specified direction.

wind_distortion: Simulates the effect of wind on the image.

squeeze_stretch_effect: Applies a squeeze and stretch effect to the image.

smooth_lens_distortion: Applies a smooth lens distortion effect centered around a specified point.

crystallize_distortion: Simulates a crystalline effect by averaging blocks of pixels.

honeycomb_distortion: Applies a honeycomb-like distortion effect across the image.

moving_blur: Applies a moving blur effect on the whole image with specified direction and intensity.

warp_bubbles_effect: Creates a warp-like effect around a specified position.

Usage Examples Below are examples demonstrating how to use some of the functions provided in this library. These examples use a chessboard image as the input, but you can replace it with any image of your choice.

distorted_chessboard = apply_perspective_transform(chessboard, interpolation='full') image

distorted_chessboard = multi_lens_distortion(chessboard, num_lenses=8, radius_range=[120, 190], strength_range=[-0.2, 0.7]):

image

distorted_chessboard = elastic_transform(chessboard, 90, 7)

image

distorted_chessboard = twirl_distortion01(chessboard, (170,270), 200, 0.8)

image

distorted_chessboard = twirl_distortion02(chessboard, (170,170), 10, 0.12)

image

distorted_chessboard = wave_distortion01(chessboard, (170,100), 10, 10)

image

distorted_chessboard = wave_distortion02(chessboard, (170,100), 8, 60)

image

distorted_chessboard = wave_distortion(chessboard, 8, 80)

image

distorted_chessboard = pixelate_image(chessboard, 14, (50, 50, 340, 340))

image

distorted_chessboard = cartesian_to_polar_image_stretched(chessboard, center=None)

image

distorted_chessboard = mirror_effect(chessboard, direction='horizontal', mirror_line_position=180, side='right')

image

distorted_chessboard = tilt_shift_effect(chessboard, 0.3, 0.7, 5, 0.4)

image

distorted_chessboard = ripple_effect(chessboard, 3, 7)

image

distorted_chessboard = zoom_blur(chessboard, (150, 150), intensity=0.07, blend=0.3)

image

distorted_chessboard = space_distortion_v1(chessboard)

image

distorted_chessboard = wind_distortion(chessboard, direction=(0.4, -1), strength=21)

image

distorted_chessboard = squeeze_stretch_effect(chessboard)

image

distorted_chessboard = smooth_lens_distortion(chessboard, 200, 200, 150, 1.3)

image

distorted_chessboard = crystallize_distortion(chessboard, crystal_size=27)

image

distorted_chessboard = honeycomb_distortion(chessboard)

image

distorted_chessboard = moving_blur(chessboard, 2,0.4, 3)

image

distorted_chessboard = warp_bubbles_effect(chessboard, [(170, 170)], 149, 3)

image

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

saug-0.0.5.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

saug-0.0.5-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file saug-0.0.5.tar.gz.

File metadata

  • Download URL: saug-0.0.5.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for saug-0.0.5.tar.gz
Algorithm Hash digest
SHA256 c1f6ff79412fa2449d8a719857d207fa37be083a475cadff64cfce7e5751c2b4
MD5 74a17e8f855b03a85d47475f45a22943
BLAKE2b-256 bc62914a613c8ca4cb5617e09a3228ea58a5f8a04575fac1891117c525478c42

See more details on using hashes here.

File details

Details for the file saug-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: saug-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for saug-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a0eb47fb516c38b239f8a191073b23f7d371718e63d101de894b20e2377bee31
MD5 cd2e911a19642b3f6ab2d3281bb61cc9
BLAKE2b-256 06c664223cfcf2f0b91e18147b62ebbbea8e3a4d8847373916ce66fd77138821

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page