О цветовой интерполяции

Навеяно вот этим вот обсуждением, пожалуй запишу.

Абстрагируясь от профилей камер, давайте представим себе профиль принтера.

К примеру, Monaco Profiler с удовольствием сделает вам цветовой профиль с таблицами 33x33x33. То бишь почти 108 тысяч коэффициентов (+тоновые кривые). Круто, да.

А на вход ему при этом подадут ну, скажем, 1728 патчей (12 в кубе). Так как жрет он не спектральные данные, а простой рабоче-крестьянский XYZ, то это будет примерно 5200 значений.

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

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

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

Я клоню к тому, что вижу в имеющемся подходе тупик: маленькие профили (с маленькой таблицей) дают плохую точность, это все знают из опыта. Большие профили (33x33x33) - основаны на выдуманных данных, а снабдить их невыдуманными данными, скажем промерять не пару тысяч патчей, а тысяч тридцать - невозможно на практике, слишком трудоемко.

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

P.S. То что мишени для тех же принтеров генерируются, как правило, путем равномерной расстановки точек по всему пространству координат - отдельная печальная песня.

Comments

Несколько не в тему... СС24 имеет особенности - она выполнена так, чтобы минимизировать вероятность metameric failure и имеет малую зависимость от спектра источника (если спектр непрерывен). Проверка профиля камеры по ней - вещь не сильно показательная.

Ну а если брать "метамерную" мишень и получать по ней затем большое dE, то непонятно о чем это dE нам говорит, об свойствах камеры (которые никак нельзя обойти) или об свойствах (конкретного плохого) профиля.

Вот что реально надо бы посчитать, так это "Лютер-Айвсовость" какой-нибудь камеры, для которой есть спектральные данные. И сравнить со слайдом. Ибо идея о том, что слайд более Л-А (которую продвигают некоторые товарищи) мне кажется заблуждением.

Проверка по промеренной распечатке дополняет CC достаточно неплохо.

В отношении критерия Л-И (при том, что я не до конца уверен в правильности критерия) утверждение, что пленка лучше, плохо следует из документации, в частности - из публикации Секоника, где сравниваются спектральные чувствительности и обосновывается использование четвертого фильтра. Кроме того, по имеющимся у меня данным о спектральных характеристиках пленок и цифровых камер у последних очевидное преимущество в смысле критерия Л-И. Другое дело, что у, например, Nikon D2X и Kodak SLR с этим критерием тоже не лучше чем у пленок - а цвет на выходе весьма и весьма.

Kормление линейными комбинациями - дело странное. Например, Gretag в свое время использовал 6 спектрально-независимых красителей в СС24. Потом красителей осталось 4, так как 2 были на основе тяжелых металлов и Gretag заставили отказаться от "вредного производства". Так вот, они делали серьезный упор на то, что нужно использовать как можно больше независимых спектров.

В методике, рассмотренной Владимировичем, отклик камеры вычисляется. Поэтому смысла ограничиваться СС24 нет.

>Kормление линейными комбинациями - дело странное.

Я не смотрел как интерполяция в argyll сделана (если она там вообще есть). Но вот тут при ковырянии с 2 имеющимися под рукой интерполяторами показалось, что уточняющие, пусть и линейно полученные данные, вполне себе бывают полезны. Может это конечно реализация такая кривая попалась.... Если я конечно правильно понял вашу фразу.

Не, ну конечно они отбивают фантазию интерполировать как-то еще, да.

Но если эту фантазию надо отбивать, то модель негодная.

Что касается мишеней для профилирования принтера - а кто мешает расставлять точки по цветовому пространству более разумно?
Цветовой охват принтеров ведь примерно известен.

Да ничего не мешает, так и надо делать. Но посмотрите сами, что делают (стандартные) генераторы мишеней.

Алексей, а есть какие-то готовые мишени для Epson 3800 или алгоритм их генерации с учетом цветового охвата принтера?

Можно начать с того, что к стандартному кубу добавить патчи отсюда вот:
http://sail2ithaki.livejournal.com/91220.html

ну и вообще, двигаться в эту сторону:
- памятные цвета
- нейтраль и *околонейтральные* патчи (с небольшими отклонениями от нейтрали)

Плюс к тому, некоторые (выражусь аккуратно) системы построения профилей относятся ко всем патчам одинаково (с одинаковым весом). А нам важны, опять же, нейтрали/околонейтрали и памятные цвета, а на остальное - плевать. А значит, чтобы добавить веса важным нам местам, нужно их или сдублировать (в описании мишени и в замере) или просто наплодить плашек вокруг этих точек (одинаковые профилятор может объединить).

Да, это хороший пост у Ильи. Детальное описание хорошей методики. Глядишь, на ближайших плотерах, которые ждут моей калибровки, попробую получившиеся профайлы так проверить.

Если бы я еще понимал, как именно эти данные по дополнительным патчам вставлять в стандартный куб...

Да просто добавить их в описание мишени (добавить строчек). А дальше Argyll-ом сгенерировать соответствующий tiff.

Спасибо, сейчас попробую.

Ну блин!

Во-первых, условие "число неизвестных должно быть равно числу свободных параметров" - неверно. Любая задача на поиск минимума может иметь строго одно решение при огромном количестве свободных параметров. Одно грамотно посталвенное условие вида f(a1, a2, ... , an) -> min, и вся неоднозначность уходит.

Во-вторых, в моей модели можно взять спектры огромного количества красок, и тестировать на них.

Кстати, напишу сразу - на Canon 5d (первый), построение профиля сработало хреново. Думаю попытаться это исправить как раз тем, что сделаю не 19 патчей, а скажем 50. Но спектры реальных красок пока не знаю где взять.

Да нет же.

Ну совсем грубо говоря - через точку (линию, плоскость, многомерную плоскость) в которой задан этот самый f(...) -> min можно провести бесконечное количество даже линейных линий (плоскостей, гиперплоскостей), все из которых будут удовлетворять условию.

А в реальной практике условия - это минимизация отклонений от значений (dE), плюс требования на гладкость. И решений получается чуть больше, чем дохрена.

А по краскам - должны быть спектральные данные на пантоны, например.

Если задано сто тыщ точек, то, скажем, прямая по условиям "сумма квадратов расстояний от этих точек до прямой - наименьшая" проводится одним единственным образом.

Если у вас число степеней свободы (переменных) больше чем эти самые "сто тыщ", то сумма квадратов будет равна нулю (решение пройдет через сто тыщ точек точно), а самих решений чуть больше чем дохрена.

Пример:
две точки
прямую (y = ax+b)можем через них провести одну
плоскостей (z = ax + by +c) - сколько угодно.
парабол (если оставаться на плоскости) - тоже сколько угодно.

На сто тыщ этот пример тоже масштабируется.

Посмотрите спектры по минеральным краскам, напр., http://www.cis.rit.edu/people/faculty/berns/Files/HW3_data.xls

У пантона - тоже линейная комюинация.

Это спектры Colorchecker 24, я их и брал

Третий лист посмотрите.