В современный век цифровых технологий методы улучшения изображений играют решающую роль в улучшении визуальной эстетики и привлечении внимания зрителя. Одним из таких методов является дрожание цвета. Цветовое дрожание добавляет тонкие вариации цветам изображения, что приводит к более яркому и динамичному визуальному восприятию. В этой статье мы рассмотрим несколько методов добавления дрожания цвета к изображению, сопровождаемые примерами кода. Если вы фотограф, графический дизайнер или просто энтузиаст, желающий улучшить свои изображения, это руководство поможет вам!
Методы добавления дрожания цвета к изображениям:
-
Использование Python и OpenCV:
Пример кода:import cv2 import numpy as np def color_jitter(image, jitter_strength): hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) h, s, v = cv2.split(hsv_image) h_jitter = np.random.uniform(-jitter_strength, jitter_strength, h.shape) s_jitter = np.random.uniform(-jitter_strength, jitter_strength, s.shape) v_jitter = np.random.uniform(-jitter_strength, jitter_strength, v.shape) h = np.clip(h + h_jitter, 0, 255).astype(np.uint8) s = np.clip(s + s_jitter, 0, 255).astype(np.uint8) v = np.clip(v + v_jitter, 0, 255).astype(np.uint8) jittered_hsv = cv2.merge([h, s, v]) jittered_image = cv2.cvtColor(jittered_hsv, cv2.COLOR_HSV2BGR) return jittered_image # Usage original_image = cv2.imread('image.jpg') jitter_strength = 20 # Adjust the strength of jitter as per your preference jittered_image = color_jitter(original_image, jitter_strength) -
Использование Python и PIL (библиотеки изображений Python):
Пример кода:from PIL import Image import numpy as np def color_jitter(image, jitter_strength): image_array = np.array(image) jitter = np.random.uniform(-jitter_strength, jitter_strength, size=image_array.shape) jittered_image_array = np.clip(image_array + jitter, 0, 255).astype(np.uint8) jittered_image = Image.fromarray(jittered_image_array) return jittered_image # Usage original_image = Image.open('image.jpg') jitter_strength = 20 # Adjust the strength of jitter as per your preference jittered_image = color_jitter(original_image, jitter_strength) -
Использование глубокого обучения и переноса стилей:
Пример кода:import torch import torchvision.transforms as transforms from torchvision.models import vgg19 from torchvision.utils import save_image def color_jitter(image, jitter_strength): device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # Preprocess the image preprocess = transforms.Compose([ transforms.Resize(256), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ]) image_tensor = preprocess(image).unsqueeze(0).to(device) # Load pre-trained VGG19 model model = vgg19(pretrained=True).features.to(device).eval() # Apply style transfer to introduce color jitter with torch.no_grad(): jittered_image = model(image_tensor) jittered_image = jittered_image * jitter_strength + image_tensor * (1 - jitter_strength) jittered_image = jittered_image.squeeze(0).cpu() jittered_image = transforms.ToPILImage()(jittered_image) return jittered_image # Usage original_image = Image.open('image.jpg') jitter_strength = 0.2 # Adjust the strength of jitter as per your preference jittered_image = color_jitter(original_image, jitter_strength)