RGB - Проблема выбора менее насыщенного цвета одинакового оттенка

  • Автор темы Автор темы MrAdrianS
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

MrAdrianS

Участник
Топикстартер
Сообщения
2
Реакции
0
Всем добрый вечер!
Столкнулся с проблемой вычисления цвета в RGB. Ситуация вкратце такая пользователь выбирает картинку со своего компьютера в качестве фона. Программно мы вычисляем преобладающий цвет на загруженном изображении. Допустим что это 81, 117, 30. Цвет достаточно темный и его нужно сделать светлым. Но таким образом что бы оттенок его не изменился.
1111.PNG
Смещаемся чуть выше по формуле
Av (R,G,B) = Av (R,G,B) + Av (R,G,B) /2
R' = 81 + 81/2 = 121
Сохраняем отношение между цифрами: V1=R/G=0.6923 и V2=G/B=3.9;
G' = R'/V1=121/0.6923=174
B' = G'/V2=174/3.9=44
R'G'B'= (121, 174, 44)
2222.PNG
Цвет стал светлее, но мне нужно сдвинуться еще в лево ближе к оттенкам серого.... на фотошопе это достаточно просто достаточно изменить Насыщенность/Saturation (S) к меньшему, а вот как это сделать программно???

Спустя несколько часов я пришел к этой формуле но она не всегда корректно работает:
Max (R',G',B')=Max (R',G',B'); в данном случае G''=G' = 174
Min (R',G',B')=2*Min (R',G',B'); в данном случае B''=B' = 2*44=88
R''=Min(R',B')+sin(max(R',B')-min(R',B')) * (100-min(R',G',B')/max(R',G',B')*100)=88+sin(88)*44/174=88+0.999*100-0.25*100=88+0.999*75=162, а должно быть 139 скорее всего ошибка в насыщенности в той части что после sin ':('
R''G''B''= (162, 174, 88)
Может есть более универсальная формула?
 
Ответ: RGB - Проблема выбора менее насыщенного цвета одинакового оттенка

С цветами удобней работать в HSB или LCH, ищите формулы для преобразований.
http://en.wikipedia.org/wiki/HSV_color_space
 
Ответ: RGB - Проблема выбора менее насыщенного цвета одинакового оттенка

Оооо спасибо большое, с HSV действительно удобнее работать :)
 
Статус
Закрыто для дальнейших ответов.