Задание 3. Цветокоррекция изображения в пространстве HSV
Реализовать метод цветокоррекции изображения через изменение в цветовой модели HSV:
- H (Hue) — оттенка
- S (Saturation) — насыщенности
- V (Value) — яркости
Для перевода в цветовое пространство HSV можно использовать готовую функцию из OpenCV:
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
Реализация цветокоррекции в HSV
Коррекция яркости (канал V)
Создайте функцию:
def adjust_value_channel(hsv_image, value_shift)
Требования:
-
Увеличивать или уменьшать яркость (канал V).
-
Ограничивать значения диапазоном [0, 255].
Проверить:
-
Осветление изображения
-
Затемнение изображения
Коррекция насыщенности (канал S)
Создайте функцию:
def adjust_saturation(hsv_image, saturation_scale)
где:
-
saturation_scale > 1— усиление насыщенности -
0 < saturation_scale < 1— ослабление насыщенности
Проверить:
-
Повышение насыщенности
-
Эффект выцветания
Сдвиг оттенка (канал H)
Создайте функцию:
def shift_hue(hsv_image, hue_shift)
Требования:
-
Реализовать циклический сдвиг оттенка.
-
Учесть, что в OpenCV:
-
H ∈ [0, 179]
-
-
Использовать операцию по модулю 180.
Комбинированная цветокоррекция
Создайте универсальную функцию:
def hsv_color_correction(image, hue_shift=0, sat_scale=1.0, val_shift=0)
Функция должна:
-
Переводить изображение в HSV.
-
Применять изменения к каналам H, S и V.
-
Возвращать результат обратно в BGR.