Image Perturbators

Image Perterbators All image-specific perturbators derive from the BlackboxImagePerturbator class. They take an PIL image as input and return a transformed version of it.

ImageNoisePerturbator

The ImageNoisePerturbator adds noise to an image. The probability distribution determines how much noise is added.

Usage

from insynth.perturbators.image import ImageNoisePerturbator
from PIL import Image
from scipy.stats import norm

perturbator = ImageNoisePerturbator(noise_prob=norm, noise_prob_args={'loc': 0.01, 'scale': 0.005})
im = Image.open('image.jpg')
perturbed_im = perturbator.apply(im)

Result

Noise

ImageBrightnessPerturbator

The ImageBrightnessPerturbator changes the brightness of an image. The probability distribution determines how much the brightness is changed.

Usage

from insynth.perturbators.image import ImageBrightnessPerturbator
from PIL import Image
from scipy.stats import norm

perturbator = ImageBrightnessPerturbator(brightness_change_prob=norm,
                                         brightness_change_prob_args={'loc': 1, 'scale': 0.5})
im = Image.open('image.jpg')
perturbed_im = perturbator.apply(im)

Result

Noise

ImageContrastPerturbator

The ImageContrastPerturbator changes the contrast of an image. The probability distribution determines how much the contrast is changed.

Usage

from insynth.perturbators.image import ImageContrastPerturbator
from PIL import Image
from scipy.stats import norm

perturbator = ImageContrastPerturbator(contrast_change_prob=norm, contrast_change_prob_args={'loc': 1, 'scale': 0.5})
im = Image.open('image.jpg')
perturbed_im = perturbator.apply(im)

Result

Noise

ImageSharpnessPerturbator

The ImageSharpnessPerturbator changes the sharpness of an image. The probability distribution determines how much the sharpness is changed.

Usage

from insynth.perturbators.image import ImageSharpnessPerturbator
from PIL import Image
from scipy.stats import norm

perturbator = ImageSharpnessPerturbator(sharpness_change_prob=norm, sharpness_change_prob_args={'loc': 1, 'scale': 0.5})
im = Image.open('image.jpg')
perturbed_im = perturbator.apply(im)

Result

Noise

ImageFlipPerturbator

The ImageFlipPerturbator flips an image horizontally or vertically. There is no probability distribution for this perturbator.

Usage

from insynth.perturbators.image import ImageFlipPerturbator
from PIL import Image

perturbator = ImageFlipPerturbator()
im = Image.open('image.jpg')
perturbed_im = perturbator.apply(im)

Result

Noise

ImageOcclusionPerturbator

The ImageOcclusionPerturbator adds occlusion to an image. The probability distribution determines how much occlusion is added. Also, a second and third probability distribution determines the size of each occlusion.

Usage

from insynth.perturbators.image import ImageOcclusionPerturbator
from PIL import Image
from scipy.stats import norm

perturbator = ImageOcclusionPerturbator(strength_prob=norm, strength_prob_args={'loc': 0.01, 'scale': 0.005},
                                        width_prob=norm,
                                        width_prob_args={'loc': 10, 'scale': 5}, height_prob=norm,
                                        height_prob_args={'loc': 10, 'scale': 5}, color='#000000')
im = Image.open('image.jpg')
perturbed_im = perturbator.apply(im)

Result

Noise

ImageCompressionPerturbator

The ImageCompressionPerturbator adds compression artefacts to an image. The probability distribution determines how much compression artefacts are added.

Usage

from insynth.perturbators.image import ImageCompressionPerturbator
from PIL import Image
from scipy.stats import norm

perturbator = ImageCompressionPerturbator(artifact_prob=norm, artifact_prob_args={'loc': 0.5, 'scale': 0.2})
im = Image.open('image.jpg')
perturbed_im = perturbator.apply(im)

Result

Noise

ImagePixelizePerturbator

The ImagePixelizePerturbator pixelates an image. The probability distribution determines how much pixelation is added.

Usage

from insynth.perturbators.image import ImagePixelizePerturbator
from PIL import Image
from scipy.stats import norm

perturbator = ImagePixelizePerturbator(pixelize_prob=norm, pixelize_prob_args={'loc': 0.2, 'scale': 0.1})
im = Image.open('image.jpg')
perturbed_im = perturbator.apply(im)

Result

Noise