Цветовой конвертер LCh, Lab, RGB, hex, XYZ, xyY, CMYK, Pantone

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
Вот накропал за пару вечеров C I E L a b . X Y Z • Цветовой конвертер
Можно тестировать.
Может прикручу потом и цмик по фогре 39 если комп потянет эти таблицы налету. Пока мне для веба давно хотелось отдельно работать ползунками LCh - чего нет в фотошопе к сожалению.
 

evgeny_morg

Участник
Сообщения
77
Реакции
24
У меня ползунок перескакивает вправо от мышки, то есть не совпадает реальное положение ползунка и курсора мыши. Невозможно увести ползунки в крайнее левое положение
 

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
@evgeny_morg, спасибо, если подскажете какой браузер - попробую поковырять. Я раньше прикручивал иногда один такой ползунок, они не идеальны, но с описанным поведением пока не сталкивался. Для яваскрипта к сожалению и этого ползунка конкретно в том числе браузер имеет значение: все норовят по-своему интерпретировать язык.
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 095
Реакции
1 998
Вот такие интересные значения - если всё вправо
upload_2018-10-12_15-27-30.png
 
  • Спасибо
Реакции: ~RA~

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 721
Реакции
3 402
Написано же "out of gamut!" Недостаточно крупно? Надо потрясти экраном и издать мерзкий звук? ;)
 
Последнее редактирование:
  • Спасибо
Реакции: RPavel и mihas

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
@TRANTOR, спасибо, мелкие огрехи допилю постепенно. Там их пока много. Это ты хорошо нашел на светлоте 8 баг в массиве HEX видимо, я пока не замечал.
 

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
@dastin, @TRANTOR, замечания учел, исправил, спасибо!
Тестируем дальше. Там еще баг есть, который никак не найду где сидит, вечерком поковыряю понастойчивее.
 

TRANTOR

Son of a Gun
R.I.P.
Сообщения
4 566
Реакции
2 954
  • Спасибо
Реакции: _MBK_

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
Нужно корректно gamut mapping считать, а не издавать всякое. Иначе какой смысл?
Здесь клиппинг.
Крупные. Отрицательные RGB ни в какие ворота.
Совершенно спокойно отношусь к отрицательным RGB - они прямо проистекают из этих матричных уравнений, мы и применяем маппинг или клиппинг в тех случаях, только когда получаем корректные значения за пределами диапазона 0-1 (0-255).
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 721
Реакции
3 402

Не по теме:
А может мы на пороге открытия? Ну как раньше считали, что извлечение корня чётной степени из отрицательного числа это
ни в какие ворота.
и тут бац такой Эйлер со своей теорией, без которой нонче толком ничего сложнее школьной арифметики и решить. ;)

 
  • Спасибо
Реакции: _MBK_

TRANTOR

Son of a Gun
R.I.P.
Сообщения
4 566
Реакции
2 954
  • Спасибо
Реакции: _MBK_

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
@TRANTOR, я вовсе не против расширять и улучшать функционал! Ты в вопросе гамут маппинга большой гуру - посоветуй красивый алгоритм маппинга который тебе нравится, я его прикручу к расчетам. Желательно конечно попонятнее и попроще и покрасивее. Если смогу разобраться - сделаю. Потому что например тот же BPC от адоба я поковырял как-то, но он настолько сложный, что мне филологу не под силу это запрограммировать.
А картинка твоя не по делу - я выложил протестировать чтобы улучшить и устранить все недочеты, а не остановиться на бета-версии.
 

TRANTOR

Son of a Gun
R.I.P.
Сообщения
4 566
Реакции
2 954
К отрицательным RGB нельзя спокойно относиться. Это колориметрический нонсенс. Поэтому мотивирующая картинка.
 
  • Спасибо
Реакции: _MBK_

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
@TRANTOR, Я не вижу нонсенса и Линдблум не видит, это совершенно корректные результаты вычислений - отрицательное значение - за охватом модели - наглядно и понятно. Лабы превышают видимый охват, ProPhoto использует невидимые несуществующие значения цвета, когда видишь минус - наглядно понятно что за охватом, а в профото будет не минус, но поди разбери что это вообще никак не видимые цифры.
 
  • Спасибо
Реакции: ignatcolor

TRANTOR

Son of a Gun
R.I.P.
Сообщения
4 566
Реакции
2 954
Физического смысла отрицательные значения RGB не несут и не могут нести. Как и спектров отрицательных быть не может. Почему ты на монитор не выводишь отрицательные значения и значения более 1? Потому, что не получится. Тогда почему они в полях присутствуют?

Так же, например, ярко-синий цвет в "сэмплере" при L=0 иллюстрирует неправильный клиппинг.
 
  • Спасибо
Реакции: _MBK_

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
@TRANTOR, я разделяю твою убежденность, что значения RGB за границами диапазона 0-1 бессмысленны. И не только они, хрома 200 бессмысленна по всему цветовому кругу кроме единственного угла и светлоты, где человек может разглядеть 202, в остальном диапазоне Chroma сильно меньше 200. Зачем присутствуют несуществующие цвета, их надо HVS ограничить. Зачем эти же несуществующие цвета в ProPhoto? Для адекватности простых матричных расчетов.
Всецело согласен, что при L=0 любая насыщенность нулевая и никаких ярких цветов быть не может. Доработаю. Здесь просто формулы CIE как есть, именно так их матричные уравнения переводят XYZ в RGB при яркости Y=0 и огромной насыщенности.
Один большой глюк с излишним опросом слайдеров я пофиксил, интерфейс теперь позволяет заняться более важными задачами, у меня в планах две вещи: таблицы Lab-CMYK и гамут-маппинг. Дашь ссылочку полезную на хороший алгоритм маппинга (или клиппинга) - скажу спасибо и займусь маппингом и клиппингом, я много чего могу наизобретать, но тут положился бы на опыт человечества, а не свой собственный. Ты эксперт в маппинге - ну так колись!-) Что сегодня самое лучшее - то и запрограммирую.

Я хочу сделать лучше, у меня была простая задача, вертелась давно в голове: в охвате sRGB получать безупречно разную насыщенность при константных светлоте и цветовом тоне. Фотошоп не позволяет. Задача решена, для моих целей подбора в LCh цветовых палитр hex# для веб ничего более мне не требуется, все вылеты за охват sRGB фиксируются, я не фоторедактор писал. Но, ты говоришь разумные вещи и их тоже можно сюда зашить.
 

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
Задействовал Clipping по краю охвата фигуры HVS (Human Visual Space или Lab Gamut). Цветов за границами этой трехмерной фигуры на картинке не существует в природе, поэтому ползунки светлоты и насыщенности теперь ограничены по краям массивом поверхности этой фигуры. Было очень интересно просчитать массив в удобном виде https://cielab.xyz/colorconv/HVS_LCh_surface.js и не слишком огромный, чтобы комп тянул в режиме реального времени передвижения слайдеров, написал для этой цели специальную программку на яваскрипте с задействованием монотонной интерполяции сплайнами Эрмита (Hermite Spline). Изначальная таблица поверхности фигуры HVS в Lab D50 2° на 31152 значения получена с помощью опции Спектрального калькулятора «HVS surface» в спойлере «Колориметрический справочник». Ноутбук в выходные совсем не тянул такие расчеты - дождался мощного домашнего компа.

Как покрасивее просчитать маппинг к любой из доступных для выбора модели RGB пока размышляю.

HVS_plane.png
 

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
clip_map.PNG
Пока с клиппингом и маппингом как-то так. Можно включить и выключить, в принципе слайдеры слушаются (насколько уж сумел их приручить), и плавно приводят светлоту к оптимальной для данной модели RGB и для данного тона Hue при повышении насыщенности. Информационные поля (обвел мышкой) сообщают, какая при данном цветовом тоне Hue максимально достижимая насыщенность Chroma при какой светлоте. Слева для фигуры HVS, справа - для выбранной цветовой модели RGB.
Приписал не пугаться отрицательных значений RGB за охватом модели - они нужны для корректных обратных матричных расчетов от RGB к другим моделям.
Так же увидите, что в ProPhoto возможны насыщенности выше, чем у видимого охвата цветов - так и есть, ProPhoto использует кучу несуществующих в природе и невидимых глазом цветов (Линдблум пишет, что таких 13% в этой модели, я не высчитывал, но заметно много). В фотошопе это не очень заметно, так как его колорпикер ограничен квадартом ab -128 +128, а ProPhoto сильно вылезает дальше за этот квадрат, примерно так (точками - ProPhoto, линией - HVS, желтым квадратом - Photoshop):
prophoto.PNG
Во всех скриптах обновления, браузерам даны указания кешировать скрипты всего на сутки, если пользуетесь чаще - почистите кеш от сохраненных файлов (от другого не надо чистить) если будет какая ошибка.
 

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 872
CMYK_Pantone.PNG
Добавил CMYK и Pantone в калькулятор. Можно тестировать.
Сделал как в CMM трилинейную интерполяцию таблиц LabCMYK - считает быстро в режиме реального времени - вроде у меня все поспевает за ползунками. Гранулярность перцепционных таблиц сделал небольшую чтобы не было бешенного трафика, для гладкой фогры 39 выше гранулярность особо не нужна в данном проекте.