ColorAnt reverse engineering:). Часть 3 - Edit Primaries.

serzin

Топикстартер
15 лет на форуме
Сообщения
858
Реакции
219
А вот тут мне требуется помощь зала.:( Вдруг у кого есть какие-то идеи насчет того, как делается этот трюк? Для простоты я предлагаю пока оставить в стороне спектры. Ограничимся lab-ами. По моим ощущениям ребята рассчитывают по измененной триаде некое преобразование цветового пространства(в каких координатах?) и затем применяют его ко всем измерениям. Какой математикой подобное можно седлать?
 
  • Спасибо
Реакции: colorprint

serzin

Топикстартер
15 лет на форуме
Сообщения
858
Реакции
219
Что именно не понятно?
Нельзя их оставить.
Подобное преобразование и ColorAnt и ColorTool проделывают и с файлами в которых нет спектров а только lab-ы. Как-то при этом они обходятся без спектров. А не понятно собственно как пересчитываются одни Lab-ы в другие.
 

TRANTOR

Son of a Gun
R.I.P.
Сообщения
4 566
Реакции
2 952
Результат, как написано на их сайте, без спектров не точный.

В чем именно вопрос? Как высчитываются наложения или как строятся таблицы A2B/B2A?
 

serzin

Топикстартер
15 лет на форуме
Сообщения
858
Реакции
219
В чем именно вопрос? Как высчитываются наложения или как строятся таблицы A2B/B2A?
Как из спектров триады, наложений и бумаги адекватно рассчитывается спектр с заданным CMYK-ом?
 

TRANTOR

Son of a Gun
R.I.P.
Сообщения
4 566
Реакции
2 952
Спектры патчей переводятся в Lab и строится таблица A2B. Промежуточные (отсутствующие) значения интерполируются. Из полученной таблицы A2B получается охват. Перебирается весь куб Lab, делается gamut mapping, получается таблица B2A.
Все.

Патчи содержат primaries, градации primaries, наложения primaries, наложения градаций primaries.
 
  • Спасибо
Реакции: sasa

sasa

15 лет на форуме
Сообщения
1 875
Реакции
780
Спектры патчей переводятся в Lab и строится таблица A2B. Промежуточные (отсутствующие) значения интерполируются. Из полученной таблицы A2B получается охват. Перебирается весь куб Lab, делается gamut mapping, получается таблица B2A.
Все.

Патчи содержат primaries, градации primaries, наложения primaries, наложения градаций primaries.
Где можно прочитать подробнее КАК строятся таблицы A2B/B2A ?
Сам алгоритм интересует ...
 

sasa

15 лет на форуме
Сообщения
1 875
Реакции
780
А вот тут мне требуется помощь зала.:( Вдруг у кого есть какие-то идеи насчет того, как делается этот трюк? Для простоты я предлагаю пока оставить в стороне спектры. Ограничимся lab-ами. По моим ощущениям ребята рассчитывают по измененной триаде некое преобразование цветового пространства(в каких координатах?) и затем применяют его ко всем измерениям. Какой математикой подобное можно седлать?
Я недавно подумал, что это могут быть нейросети.
Сама фигура с точками/результатами измерений будет деформироваться, если "потянуть" за какую-либо точку.
Это могут быть и primaries, и градации. Они доступны для редактирования в ColorAnt и ColorTool.
Остаётся выяснить как описать связи между этими точками. А "обучать" можно на основании как всех своих более ранних измерений, также как и взятых из "фирменных" профайлов.
 

TRANTOR

Son of a Gun
R.I.P.
Сообщения
4 566
Реакции
2 952
КАК строятся таблицы A2B/B2A
Берется массив значений Lab патчей. Каждому патчу RGB (для простоты, чтобы не ломать голову о 4 и более мерные таблицы) соответствует значение Lab. Массив дополняется отсутствующими значениями патчей. Все вместе, имеющиеся патчи и отсутствующие, образуют куб (т.к. 3 компонента) RGB. Это A2B (координаты RGB, значение Lab). Данными из A2B заполняем другой куб, который Lab. Получается охват. Невалидные значения Lab, которыми предварительно инициализировали куб, за пределами охвата. Делаем для них gamut mapping. Получилось B2A (координаты Lab, значение RGB).

Конец.
 

almastu

15 лет на форуме
Сообщения
489
Реакции
75
Берется массив значений Lab патчей. Каждому патчу RGB (для простоты, чтобы не ломать голову о 4 и более мерные таблицы) соответствует значение Lab. Массив дополняется отсутствующими значениями патчей. Все вместе, имеющиеся патчи и отсутствующие, образуют куб (т.к. 3 компонента) RGB. Это A2B (координаты RGB, значение Lab). Данными из A2B заполняем другой куб, который Lab. Получается охват. Невалидные значения Lab, которыми предварительно инициализировали куб, за пределами охвата. Делаем для них gamut mapping. Получилось B2A (координаты Lab, значение RGB).

Конец.
Правильно ли я понимаю, что вот тут: "для простоты, чтобы не ломать голову о 4 и более мерные таблицы" кроется самая магия различия разных полиграфических профилировщиков и их ноу-хау;
а вот тут: "Массив дополняется отсутствующими значениями патчей" кроются какие-то алгоритмы интерполяции, которые тоже не все одинаковые у всех?
Или я себя зря накручиваю и все прописано в спецификациях (не читал, каюсь)?
И gamut mapping скажем для perceptual не затронет ли и in-gamut colours?
 

TRANTOR

Son of a Gun
R.I.P.
Сообщения
4 566
Реакции
2 952
кроется самая магия различия разных полиграфических профилировщиков и их ноу-хау
Что у них там кроется, не знаю. Пространство какого device может быть сколь угодно мерным, принцип не меняется. Трехмерное проще представить.

какие-то алгоритмы интерполяции, которые тоже не все одинаковые у всех?
Да.

все прописано в спецификациях
В спецификациях про построение ничего нет. В них просто описания таблиц A2B/B2А и других похожих.

perceptual не затронет ли и in-gamut colours?
Как правило, затрагивает. На сколько сильно? Смотря как делать. Perceptual не формализован.
 
Последнее редактирование:
  • Спасибо
Реакции: almastu

sasa

15 лет на форуме
Сообщения
1 875
Реакции
780
Данными из A2B заполняем другой куб, который Lab.
Заполняем КАК?.. :)
По какому принципу?
Имея входные значения RGB/CMYK и их цветовые координаты, XYZ/Lab, я получаю некую объёмную фигуру.
"Недостающие значения" при помощи интерполяции могу создать. Это понятно.
Т.е. Имею связь такого рода: некий входной сигнал с заранее известным "рецептом" - некий отклик, измеренный в XYZ/Lab.
И теперь надо построить обратную таблицу, какой "рецепт" RGB/CMYK нужно создать, чтобы получить заранее известный отклик в XYZ/Lab.
И вопрос в том - по какому принципу это происходит. Слово "заполняем" мне не даёт ответа... :)
 
Последнее редактирование:

sasa

15 лет на форуме
Сообщения
1 875
Реакции
780

almastu

15 лет на форуме
Сообщения
489
Реакции
75
Да, точно. Тупанул, спасибо. У нас же постранство компьютерно-дискретное, набор значений конечен. Для жестко заданного соответствия из 3 координат в 3 особой аналитики не требуется. Дело только за интерполяцией при заполнении недостающих значений - а тут вариантов масса на разный вкус и цвет.
 

serzin

Топикстартер
15 лет на форуме
Сообщения
858
Реакции
219
Ответ на начальный вопрос открылся в функции Rescale. Если проверить, с какой точностью эта функция из 32 полей(16 наложений и 16 точек градационных) достраивает eci2002, то не остается сомнений что внутри ColorAnt-а очень неслабая спектральная модель, которая позволяет рассчитывать спектры произвольного патча с весьма высокой точностью. Есть основания предположить что это некая прокачанная Neugebauer Model, но возможно это и не так. В таком случае этой спектральной моделью и производится Edit Primaries. Кстати вполне возможно, что Tone Value они тоже делают с ее помощью, а не с помощью интерполяции. Я снимаю шляпу.:)
 
  • Спасибо
Реакции: colorprint

serzin

Топикстартер
15 лет на форуме
Сообщения
858
Реакции
219
Дошли наконец руки реализовать классический вариант Neugebauer Model. К моему немалому удивлению получилась точность, практически такая же как у Color Ant-а. Результаты в приложенном архиве. Там исходный файл и два расчета - Rescale Color Ant-а и мой Neugebauer Model по 16-ти наложениям и градационным цветов триады через 10%. Поскольку я не был уверен в успехе, то делал в полу ручном режиме. Поэтому цельного кода пока нет. Если кому интересно, пишите в личку - расскажу что и как делал и дам куски кода.
 

Вложения

  • Neugebauer.zip
    410.2 КБ · Просм.: 109

serzin

Топикстартер
15 лет на форуме
Сообщения
858
Реакции
219
Эта модель предсказывает спектр при растрировании плашек?
Да. Она имея на входе спектры градационных цветов триады, бумаги и всех возможных наложений плашек(двойные, тройные, четверные) предсказывает спектры всех остальных возможных комбинаций растра цветов триады. В моем примере я достраивал EC2002 по приложенному файлу.
 

Вложения

  • CD-74_Gloss_2-NoDup-SmCA-52.zip
    6.3 КБ · Просм.: 114