Как управлять контрастом изображения на основе значений HSV / RGB

1

Мне было интересно, можно ли изменить контраст изображения, изменив его значения RGB, HSV (или аналогичные).

В настоящее время я делаю следующее, чтобы возиться с яркостью, насыщенностью и оттенком (в python):

import numpy as np
from PIL import Image as img
import colorsys as cs

#Fix colorsys rgb_to_hsv function
#cs.rgb_to_hsv only works on arrays of shape: [112, 112,255] and non n-dimensional arrays
rgb_to_hsv = np.vectorize(cs.rgb_to_hsv)
hsv_to_rgb = np.vectorize(cs.hsv_to_rgb)

def luminance_edit(a, h, s, new_v):
    #Edits V - Luminance

    #Changes RGB based on new luminance value
    r, g, b = hsv_to_rgb(h, s, new_v)

    #Merges R,G,B,A values to form new array
    arr = np.dstack((r, g, b, a))

    return arr

У меня есть отдельная функция для работы с RGB и HSV. A - альфа-канал, h - оттенок, s - насыщенность, а new_v - новое значение V (яркость).

Можно ли изменить контраст на основе этих значений, или я что-то упустил?

Изменение: у меня есть отдельная функция, которая импортирует изображения, извлекает значения RGBA и преобразует их в HSL/HSV. Позволяет называть эту функцию x.

В представленном коде (функция y) мы берем hue (h), насыщенность (s), яркость (v) и альфа-канал (a) - значения HSL, предоставленные из функции x, некоторого изображения.

Код изменяет значение V или яркость. На самом деле это не редактирует контраст. Это просто пример того, чего я стремлюсь достичь. Используя приведенные выше данные (HSL/HSV/RGB) или подобное, мне было интересно, можно ли отредактировать контраст изображения.

  • 0
    Ваш код не загружает изображения и не вызывает функцию luminance_edit() ? В вашем описании говорится, что вы планируете «связываться» с яркостью и насыщенностью, что совсем не поможет. В чем вопрос и что пытается достичь ваш неполный код, и какой аспект не работает?
  • 0
    Мой ответ решил твою проблему? Если это так, рассмотрите возможность принятия его в качестве ответа - щелкнув пустую галочку / галочку рядом с подсчетом голосов. Если нет, пожалуйста, скажите, что не сработало, чтобы я или кто-то другой мог помочь вам в дальнейшем. Благодарю. meta.stackexchange.com/questions/5234/...
Теги:
image-processing
rgb
image
hsl

1 ответ

1

Мне очень трудно понять, что вы пытаетесь сделать в своем вопросе, так что вот "удар в темноте", который вы пытаетесь увеличить контрастность изображения без изменения цвета.

Вы верны при переходе от RGB к цветовому пространству HSL/HSV, чтобы вы могли регулировать яркость, не влияя на насыщенность и оттенок. Итак, я в основном взял канал яркости мрачного изображения и нормализовал его, так что теперь яркость охватывает весь диапазон яркости от 0..255 и помещает его обратно в изображение. Я начал с этого изображения:

Изображение 174551

И закончил с этим:

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню