Система цвета RGB всем понятна, поскольку пользуясь этой системой мы задаем нестандартные (отсутствующие в палитре) цвета при работе с простейшим графическим редактором Paint системы MS Office. Не все ведь осваивают профессиональные редакторы Photoshop или Corel Draw, Paint же интуитивно понятен и осваивается за короткое время методом "тыка".
Система цвета RGB
Все знают, что RGB - это начальные буквы английских слов Red, Green, Blue — красный, зеленый, синий, обозначающих цвета, которые называются основными. Приведем их во всей их чистоте, слева направо именно в таком порядке. Система RGB удобна для описания цвета светящихся поверхностей.
Кроме основных цветов, в системе существуют еще и производные цвета, получаемые смешиванием основных в разных пропорциях. Для этого в электронно-лучевых телевизорах и мониторах (морально устаревших вследствие своей громоздкости) применяются 3 электронных пушки для красного, зеленого и синего каналов, а в матричных жидко-кристаллических мониторах и телевизорах (более современных) экран заполняется цветными светодиодами или же источниками белого цвета с соответствующими светофильтрами.
Ниже 5 вариантов смешивания основных цветов, при этом нулевые значения всех трех показателей RGB дают черный цвет, все 3 значения по 255 (это предельное значение показателя) дают белый цвет, а остальные 3 поля - это примеры смешивания 2 цветов со значением 255 и отсутствием третьего цвета (показатель равен 0).
За черным и белым цветом следуют 3 производных в системе RGB цвета - желтый (yellow), голубой (cyan) и пурпурный (magenta). Но в системе цвета CMY эти цвета являются основными, а красный, зеленый и синий - производными. Система CMY удобна для описания цвета отражающих поверхностей. Если у вас цветной принтер, матричный или лазерный, вы приобретаете к нему чернила или тонер цветов желтого, голубого и пурпурного (а также черного).
Так уж вышло, что с системой CMY человек знакомится раньше, чем с системой RGB. Любой ребенок знает, что если в наборе акварельных или гуашевых красок "вышел" зеленый цвет, его можно получить смешением желтого и голубого. Более в статье системы CMY мы касаться не будем, тема статьи - что за таинственные Оттенок, Контраст и Яркость отображаются на панели графического редактора Paint после задания в окне палитры составляющих RGB (или определения этих составляющих интересующего нас цвета посредством инструмента "Пипетка"; надеемся, вы умеете это делать).
Но можно и задавать в соответствующих окнах значения Оттенка, Контраста и Яркости, и тогда правее отобразятся соответствующие значения RGB. Тем самым, мы имеем 2 независимые системы задания цвета, с однозначным взаимным переводом показателей из одной системы в другую.
Эта новая для нас и малоизвестная (среди непрофессионалов) система называется HSL, в которой цвет создается с помощью 3 составляющих: оттенка (Hue), насыщенности (Saturation) и светлоты (Lightness).
Особенности системы HSL для графического редактора Paint
Но вот в Paint насыщенностm названа контрастом, а светлота яркостью. И увы, в одном из конвертеров (скорей на основе машинного перевода), светлота или яркость названы легкостью, что уже совершенно неверно - из множества значений английского слова взято самое неподходящее.
Тема статьи - перевод показателей цвета из системы RGB в показатели системы HSL.
Сразу скажем - здесь нас ждет неожиданность. Мы рассчитываем, что перевод будет осуществляться посредством линейного преобразования с какими-то основанными на особенностях человеческого восприятия коэффициентами, в крайнем случае согласимся на нелинейную зависимость (например, степенную), основываясь на внушенном нам некогда и интуитивно понятном осознании функциональной зависимости. Ан нет. Формулы перехода совершенно своеобразные, функциональная зависимость отсутствует, а то, что имеем, является обобщением понятия функциональной зависимости. Однозначность отсутствует, мы сталкиваемся с многозначной зависимостью.
Яркость (Светлота)
Зависимость такова:
ЯРКОСТЬ=24*(max(R,G,B)+min(R,G,B)/51)
Из 3 показателей RGB необходимо выбрать максимальный и минимальный, сложить их, умножить на коэффициент 24/51 (приближенно равный 0,471), и результат округлить до целого. Здесь неожиданностью для нас является то, что из набора 3 показателей RGB яркость в системе HSL определяется лишь 2 показателями из 3, а именно с максимальным и минимальным значением показателя, промежуточный по значению показатель влияния на яркость не оказывает.
Из формулы следует, что поскольку одновременно и максимальное и минимальное значения могут принять значения 255, их сумма 510, то при умножении на 24/51 полученное значение 240 является максимально разрешенным в системе значением яркости.
Оттенок
Другой перевод английского слова hue - цвет, цветовой тон.
Оттенок отображается на цветовом круге.
Если в оригинальной системе HSL оттенок приводится, что вполне логично, в градусах (поскольку полная окружность составляет 360°), то в системе Paint, возможно для единообразия шкалы всех 3 показателей с предельным значением 240, цветовой круг делится на 240 частей, как на рисунке выше.
Условно цветовой круг разделен на 3 сектора. Первый сектор с показателями от 0 до 80 охватывает цвета от красного (255,0,0) до зеленого (0,255,0). Второй сектор - от зеленого (0,255,0) до синего (0,0,255). Третий сектор - от синего (0,0,255) до красного (255,0,0).
Ниже таблица соответствия оттенков общепринятым в быту обозначениям цветов с соответствующими показателями цвета RGB.
Для перевода цвета в системе RGB в показатель оттенка следует прежде всего определить, к какому из 3 секторов цветового круга относится данный цвет, что задается тем показателем, значение которого максимально.
Максимален показатель R
Оттенок=40*(G-B)/(max(R,G,B)-min(R,G,B)), изменяется от 0 до 80.
Максимален показатель G
Оттенок=80+40*(B-R)/(max(R,G,B)-min(R,G,B), изменяется от 80 до 160.
Максимален показатель B
Оттенок=160+40*(R-G)/(max(R,G,B)-min(R,G,B)), изменяется от 160 до 240 (240 соответствует 0).
Полученное расчетом значение округляется до ближайшего целого.
Если из 3 показателей RGB равны 2 показателя, не имеет значения, по какому из них производить вычисления - результат окажется одним и тем-же, при этом возможны лишь значения оттенков 40, 120 или 200.
Если все 3 показателя равны (R=G=B), в формулах возникает неопределенность 0/0. В этом случае показатель Оттенок (для белого, серого или черного цвета) теряет смысл. В системе HSL показателю условно приписывается значение 0, в системе Paint рассчитывается достаточно случайное значение, колеблющееся при незначительных изменениях (малом шевелении) показателей RGB.
Контраст (Насыщенность)
Если все 3 показателя равны (R=G=B), показатель Контраст=0.
В общем случае