38 lines
1,010 B
Python
38 lines
1,010 B
Python
from PIL import Image, ImageEnhance
|
|
from utils import random
|
|
from operations import (
|
|
add_noise,
|
|
add_random_colour_spill,
|
|
get_random_gamma,
|
|
adjust_gamma,
|
|
apply_pixel_shader,
|
|
get_random_brightness_lut,
|
|
get_random_saturation_per_hue_lut,
|
|
)
|
|
import numpy as np
|
|
|
|
|
|
def random_edit(img: Image, seed: int = 42) -> Image:
|
|
np.random.seed(seed)
|
|
|
|
ratio_of_unchanged_images = 0.95
|
|
if np.random.uniform(0, 1) > ratio_of_unchanged_images:
|
|
return img
|
|
|
|
img = img.convert("RGB")
|
|
|
|
img = ImageEnhance.Contrast(img).enhance(random(0.5, 1.5))
|
|
img = adjust_gamma(img, get_random_gamma())
|
|
|
|
img = img.convert("HSV")
|
|
saturation_lut = get_random_saturation_per_hue_lut()
|
|
brightness_lut = get_random_brightness_lut()
|
|
img = apply_pixel_shader(
|
|
img, lambda h, s, v: (h, round(s * saturation_lut[h]), brightness_lut[v])
|
|
)
|
|
img = img.convert("RGB")
|
|
|
|
img = add_random_colour_spill(img, 0.2)
|
|
img = add_noise(img, random(0, 0.1))
|
|
|
|
return img
|