bipolaroidbipolaroid/src/operations/random_edit.py

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