Функция определения яркости цвета (идентичная восприятию яркости цвета человеком)

 

Глядя на это решил сделать что-то подобное, но чтобы цвета гармонично подбирались. Как получить разные, гармонично сочетаемые, цвета - это не вопрос, известная тема.

Столкнулся со следующей проблемой. Например, два цвета: Lime (rgb(0,255,0)) и Blue (rgb(0,0,255)) - по цифрам у них одинаковая яркость, однако Lime выглядит как яркий, на нем лучше писать черным цветом, а Blue - темный, на нем лучше писать белым цветом. Это одна задача - определить каким цветом делать надписи (черным или белым).

Есть еще посложнее задача - сетка. Сетка должна быть серая, по яркости не сильно отличающаяся от фона и при этом, для разных цветов фона, разница яркости фона и сетки должна казаться одинаковой. Здесь, надо определить по цвету яркость (не по цифрам, а кажущуюся человеку яркость), по это яркости вычислить серый цвет, сдвинуть его, притом, что сдвигать нужно на разную величину для разных цветов.

Кому-нибудь что-нибудь известно на эту тему?

Ps. Решил поразвлекаться на досуге с раскрасочкой, а задачка-то оказалась огого!

 
Integer:

Ps. Решил поразвлекаться на досуге с раскрасочкой, а задачка-то оказалась огого!

А то :)

Надо будет RGB преобразовывать к например вот или вот

LAB — Википедия
  • ru.wikipedia.org
Lab — аббревиатура названия двух разных (хотя и похожих) цветовых пространств. Более известным и распространенным является CIELAB (точнее, CIE 1976 L*a*b*), другим — Hunter Lab (точнее, Hunter L, a, b). Таким образом, Lab — это неформальная аббревиатура, не определяющая цветовое пространство однозначно. Чаще всего, говоря о пространстве Lab...
 
Если речь о гамма-коррекции, на вики формула есть, а вот универсальных таблиц не встречал. Не уверен, что вообще есть универсальные, они вроде затачиваются программно-аппаратно, если можно так выразиться.
 
TheXpert:

А то :)

Надо будет RGB преобразовывать к например вот или вот

Оно :)
 
Silent:
Если речь о гамма-коррекции, на вики формула есть, а вот универсальных таблиц не встречал. Не уверен, что вообще есть универсальные, они вроде затачиваются программно-аппаратно, если можно так выразиться.

Не открывается у меня ссылка, напишите просто текстом.

Здесь у нас аппратом является глаз, вот что пишут:

Комитет CIE провёл множество экспериментов с огромным количеством людей, предлагая им сравнивать различные цвета, а затем с помощью совокупных данных этих экспериментов построил так называемые функции соответствия цветов (color-matching functions) и универсальное цветовое пространство (universal color space), в котором был представлен диапазон видимых цветов, характерный для среднестатистического человека. 

http://ru.wikipedia.org/wiki/XYZ 

 

http://ru.wikipedia.org/wiki/Гамма-коррекция

upd я вот об этом:

"Гамма-коррекция (Gamma correction) обеспечивает компенсацию для различий в отображаемых цветах на различных устройствах вывода так, чтобы изображение выглядело одинаково при просмотре на различных мониторах. Значение гамма, равное 1, соответствует «идеальному» монитору, то есть такому, который имеет совершенно линейную зависимость отображения от белого к черному." 

http://superbiblioteka.ru/cifrovoe-foto-polnyi-kurs/glava-9-cifrovaja-laboratorija/monitory-ih-parametry-i-nastroika/gama-korekcija.html

у Adobe есть утиль Gamma, тут немного о методе http://digital-master.ru/?p=81 может из нее что то получится выжать

Гамма-коррекция — Википедия
Гамма-коррекция — Википедия
  • ru.wikipedia.org
Гамма-коррекция изначально служит: для демонстрации изображений на устройствах вывода с нелинейной яркостной характеристикой; для хранения оцифрованного изображения в форме, где на темные цвета приходится меньший относительный шум квантования, чем на светлые. Исторически введение гамма-коррекции было обусловлено тем, что у...
 
Integer:

...Сетка должна быть серая, по яркости не сильно отличающаяся от фона и при этом, для разных цветов фона, разница яркости фона и сетки должна казаться одинаковой. Здесь, надо определить по цвету яркость (не по цифрам, а кажущуюся человеку яркость), по это яркости вычислить серый цвет, сдвинуть его, притом, что сдвигать нужно на разную величину для разных цветов...

Вот если правильно понимаю, одной таблице цветов (фоновой)

в виде R*gamma1G*gamma1B *gamma1 должна соответствовать таблица

цветов картинки  R*gammaG *gamma2B *gamma2.

там http://ru.wikipedia.org/wiki/Гамма-коррекция картинка есть, Пример гамма-коррекции изображения на ЭЛТ. Кривая вроде "не случайно" кривая, какая-то функция, и зеркальная для двух кривых. 

Гамма-коррекция — Википедия
Гамма-коррекция — Википедия
  • ru.wikipedia.org
Гамма-коррекция изначально служит: для демонстрации изображений на устройствах вывода с нелинейной яркостной характеристикой; для хранения оцифрованного изображения в форме, где на темные цвета приходится меньший относительный шум квантования, чем на светлые. Исторически введение гамма-коррекции было обусловлено тем, что у...
 
Integer:
Держи, там есть в том числе и алгоритм гамма-коррекции.
Файлы:
chirikov.zip  1041 kb
 
Urain:
Держи, там есть в том числе и алгоритм гамма-коррекции.
Мега книга. Спасибо!
Причина обращения: