Зачем нужен chad tag в профайлах принтеров?

Статус
Закрыто для дальнейших ответов.
Ответ: Зачем нужен chad tag в профайлах принтеров?

Маленькое замечание по поводу работы программ в Excel, все таки удалось несколько раз наблюдать неработоспособность этих программ. Но у меня после перезапуска Excel все заработало. Так что у кого не заработают эти программы уже и незнаю, что делать... все перепробовал.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Еще один момент: как я понимаю у меня два последних профайла отличаются только матрицей CAT, таблицы LUT идентичные. В каком тогда месте участвует матрица CAT при цветовых преобразованиях? В спецификации ICC.1:2004-10 я не нашел (может быть плохо искал....). Единственное место где это можно сделать - это предварительные преобразования Lab, до LUT. Тогда по какому механизму это работает? Lab -> XYZ -> CAT -> Lab только это приходит в голову.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

BlackRed сказал(а):
Тогда по какому механизму это работает? Lab -> XYZ -> CAT -> Lab только это приходит в голову.
Ну, да. Собственно, ничего другого как бы и нет. Только чуть-чуть уточню: Lab -> XYZ -> CAT -> X`Y`Z`->L`a`b`
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Alexey Shadrin сказал(а):
Ну, да. Собственно, ничего другого как бы и нет. Только чуть-чуть уточню: Lab -> XYZ -> CAT -> X`Y`Z`->L`a`b`
Вот тут выяснилось что, мы пропустили еще одну стадию: конвертацию XYZ в "фундаментальную" систему (cone response domain) ρ, γ, β. Преобразования типа хромадаптации происходят там. Т.е. в сумме цепочка выглядит так: Lab -> XYZ -> ρ, γ, β -> ρ', γ', β' (CAT) -> X`Y`Z`->L`a`b`
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Alexey Shadrin сказал(а):
Вот тут выяснилось что, мы пропустили еще одну стадию: конвертацию XYZ в "фундаментальную" систему (cone response domain) ρ, γ, β. Преобразования типа хромадаптации происходят там. Т.е. в сумме цепочка выглядит так: Lab -> XYZ -> ρ, γ, β -> ρ', γ', β' (CAT) -> X`Y`Z`->L`a`b`
Алексей, а мне кажется что цепочка XYZ -> ρ, γ, β -> ρ', γ', β' (CAT)-> X`Y`Z` эквивалентна цепочке XYZ -> (CAT) -> X`Y`Z`. Матрица CAT как раз и заменяет преобразование в фундаментальную систему и из нее, по крайней мере ее расчет предполагает такую схему.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

То есть по аналогии с визуализацией файлов с профайлом абстрактного колориметра, когда собственно вычисления XYZ-координат нет, но их коэффициенты используются в матрице перехода? Я правильно понял Вашу мысль?
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Преобразование по алгоритму Bradford CAT не что иное, как масшабирование в фундаментальной системе координат. Если делать такое преобразование после перехода в ρ, γ, β, то надо просто отмасшабировать сами значения, в соответствии с источником освещения, а затем по обратной матрице Bradford вернуться в систему XYZ. А матрица CAT и является произведением трех матриц: обратной Bradford умноженной на диагональную, состоящую из коэффициентов отношений источников освещения в системе ρ, γ, β и умноженной на прямую матрицу Bradford., т.е. для удобства вычислений три матрицы заменены на одну.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

BlackRed сказал(а):
Алексей, а мне кажется что цепочка XYZ -> ρ, γ, β -> ρ', γ', β' (CAT)-> X`Y`Z` эквивалентна цепочке XYZ -> (CAT) -> X`Y`Z`. Матрица CAT как раз и заменяет преобразование в фундаментальную систему и из нее, по крайней мере ее расчет предполагает такую схему.
Совершенно верно. Но нужно не забывать, что преобразования в фундаментальной системе решают вопросы не только хромадаптации. Даже если замкнуться на проблеме учета окружения, то кроме точки белого (и освещения в т.ч.), там есть еще BPC. Поэтому, если упростить пересчет до уровня XYZ->X'Y'Z' (произведения трех матриц), мы теряем возможность вносить дополнительные коррекции.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

sabos сказал(а):
Совершенно верно. Но нужно не забывать, что преобразования в фундаментальной системе решают вопросы не только хромадаптации. Даже если замкнуться на проблеме учета окружения, то кроме точки белого (и освещения в т.ч.), там есть еще BPC. Поэтому, если упростить пересчет до уровня XYZ->X'Y'Z' (произведения трех матриц), мы теряем возможность вносить дополнительные коррекции.
То что все матричные расчеты - это сильное упрощение, согласен полностью. Но в спецификации профайлов ICC.1:2004-10 (Profile version 4.2.0.0) в приложении E (формула E.2, стр. 88) матрица адаптации задана как произведение трех матриц...
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Еще одна полезная информация о хроматической адаптации.
В спецификации ICC.1:2004-10 (Profile version 4.2.0.0), раздел A.2 (стр. 44) читаем: if the illumination on the test object or reproduction medium differs from the reference illuminant (D50), it will be necessary to apply a chromatic adaptation transform to the measured values.. Т.е хроматическая адаптация должна быть учтена еще на уровне значений XYZ. Естественно сразу захотел проверить (пришлось ручками по спектру расчитать значения XYZ), что получил (белая точка на бумаге):
1. XYZ расчитано для источника A: 95.5372 87.0662 33.4244
2. XYZ + CAT (для этого же источника A): 84.5155 87.2831 77.7022
3. XYZ из файла данных (XYZ Lab) от MeasureTool при задании источника A: 84.6426 87.4647 77.7532

Из этого становится понятным почему матрица CAT (тэг chad) в профайле, построенным по данным от MeasureTool (XYZ Lab) единичная - адаптация учтена уже на этапе расчета XYZ.

Но если матрица CAT не единичная при расчете по спектральным данным, то наверно следует полагать, что при построении профайла в этом случае расчет XYZ -> Lab выполняется по другому (без хроматической адаптации) и соответственно LUT строится по этим данным, а адаптации учитывается матрицей CAT по механизму, описанному в предыдущих сообщениях. Чтобы проверить это придется проанализировать таблицы LUT для одного и другого случая, попробую сделать в эти выходные.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Володя, поскольку я сижу и как библиотечный червь перевожу спецификацию, то уже наткнулся на ряд противоречий. К примеру:

"9.2.11 chromaticAdaptationTag
Сигнатура: 'chad' (63686164h)
Класс тэга: s15Fixed16ArrayType
Данный тэг должен быть инвертируемым и представлять XYZ-значения, полученные при освещении, специфичном для данного устройства (и полной адаптации зрения по нему), в XYZ-значениях при PCS-источнике.
Тэг демонстрирует все используемые сегодня методы конверсии, каждый из которых основан на матричном преобразовании. Для ICC-профайлов рекомендовано т.н. брэдфордское преобразование (Bradford transform) (см. Приложение E)."

Далее:

"9.2.24 mediaBlackPointTag
Сигнатура: ‘bkpt’ (626B7074h)
Класс тэга: XYZType
Описывает черную точку носителя изображений и содержит XYZ-колориметрию (CIE 1931) черной точки фактического носителя. Если измерения выполнены под источником с цветностью, отличной от цветности D50, то значения измерений, перед тем как быть записанными в тэг, должны быть представлены в D50 с помощью матрицы chromaticAdaptationTag."

Таким образом получается, что обязаловка касается только черной точки. По всей видиости СММ должен уметь понять, какова ситуация: если матрица единична -- все уже сделано, если нет -- вперед, считай.
Так думаю на сегодня, волне вероятно, что изменю точку зрения, пройдя по спецификации дальше.
Заодно: Володя, я хочу просить Вас, Павла Топоркова, Германа, Мишу и всех желающих отрецензировать перевод и помочь мне перевести отдельные предложения, на которые у меня не хватило ни знания языка, ни сообразительности, ни знания материала (в первую очередь это касается информатики и программирования). Но там совсем немного (пока), слава Богу.
Сейчас я ровно в середине текста и до отпуска вряд ли успею. Но, надеюсь, к началу сентября всё будет готово.
Алексей.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Можно ли в двух словах сформулировать, каков же всё-таки итог данного обсуждения? Зачем реально может быть полезен chad, в каких случаях (для профилей каких устройств) он необходим, и как вообще раньше жили без него?

Если я правильно понял эксперименты Гилда-Райта, у них опорный белый был 6500 К. То есть модель XYZ вроде бы под этот осветитель создавалась. А в профиле (матричном с XYZ-привязкой) тогда что должно быть записано — адаптация под D50?!

Кстати, по поводу того классического колориметра: какой же там всё-таки белый был? Судя по иллюстрациям, три базовых стимула либо вырезались из 6500 оптическими фильтрами, либо призмами. А на тестовый образец продолжал падать исходный свет — не комбинация тройки «кардиналов». Почему такая неувязка?
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Samsonov сказал(а):
в каких случаях (для профилей каких устройств) он необходим
Для тех, у которых PCS не совпадает по белому со стандартным D50. Простыми словами - если для оттисков вы пользуете учет осветителя, то белый может оказаться любым. А состыковывать такой профиль придется с D50. Переход от произвольного белого к D50 делается матричным линейным преобразованием, chad - коэффициенты матрицы такого преобразования.
Samsonov сказал(а):
как вообще раньше жили без него?
Однозначно приводили профиль принтера к D50.
Samsonov сказал(а):
Если я правильно понял эксперименты Гилда-Райта, у них опорный белый был 6500 К.
Неправильно. Сам термин "опорный белый" к любым экспериментам по метамерному уравниванию (в условиях темновой адаптации) применять нельзя. Там окружение пары не учитывалось. "Опорный белый" возникает тогда, когда начинается учет окружения.
Samsonov сказал(а):
по поводу того классического колориметра: какой же там всё-таки белый был?
Произвольный широкополосный свет.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

sabos сказал(а):
Для тех, у которых PCS не совпадает по белому со стандартным D50… Сам термин «опорный белый» к любым экспериментам по метамерному уравниванию (в условиях темновой адаптации) применять нельзя.
Вот я и пытаюсь понять, о каком совпадении по белому идёт речь, если для XYZ такое понятие отсутствует.

Пример, чтобы все числа разные были. Создаём профиль монитора с температурой 9300 К. Пространство привязки, ессно, XYZ. Колориметр тоже выдаёт XYZ (получается, без привязки к какой-либо точке белого). Что в профиле должно быть записано? Просто исходные данные с колориметра для rXYZ, gXYZ, bXYZ и wtpt (9300)? Без всякой там адаптации под D50?

Либо, как делает Monaco, записать туда wtpt:=5000, адаптированные координаты базовых и использованную для адаптации матрицу chad? И вот на кой нужен подобный вариант в реальной жизни? Всё равно же примитивный алгоритм этой хроматической адаптации даёт очень приблизительные результаты. Всё равно же при конвертировании между пространствами требуется куда более изящная математика, нежели умножение на матрицу.


«Опорный белый» возникает тогда, когда начинается учет окружения. В классическом колориметре был произвольный широкополосный свет.
То есть всё равно, освещали бы тестовый образец лампой 6500 К, 5000 или вообще 2850 К, так? Во всех трёх случаях подобранные наблюдателем координаты RGB были бы одинаковыми? Тогда о какой хроматической адаптации под другой осветитель мы говорим?
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Samsonov сказал(а):
То есть всё равно, освещали бы тестовый образец лампой 6500 К, 5000 или вообще 2850 К, так? Во всех трёх случаях подобранные наблюдателем координаты RGB были бы одинаковыми? Тогда о какой хроматической адаптации под другой осветитель мы говорим?

1) Нет, не так. Разный спектр осветителя дает разные стимулы от одного и того же образца.
2) Здесь речь не идет об адаптации под осветитель. В опытах Гилда и Райта наблюдатель находился в состоянии темновой адаптации.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Samsonov сказал(а):
для XYZ такое понятие отсутствует.
Для XYZ такое понятие присутствует. XYZ_D50 не равен XYZ_D65. Еще раз повторяю "Переход от произвольного белого к D50 делается матричным линейным преобразованием, chad - коэффициенты матрицы такого преобразования".
Samsonov сказал(а):
Что в профиле должно быть записано? Просто исходные данные с колориметра для rXYZ, gXYZ, bXYZ и wtpt (9300)? Без всякой там адаптации под D50?
Если white point профиля отличается от стандартного D50, программа обязана выполнить chomatic adaptation transform (CAT). При этом наличие предпросчитанного chad не обязательно. К примеру фотошоп для матричных профилей (компенсация на дисплей) делает CAT самостоятельно, без помощи chad, по bradford-алгоритму.
Samsonov сказал(а):
примитивный алгоритм этой хроматической адаптации даёт очень приблизительные результаты.
Это очень смелое утверждение. В подавляющем большинстве случаев "примитивный алгоритм" дает очень хороший prediction.
Samsonov сказал(а):
при конвертировании между пространствами требуется куда более изящная математика, нежели умножение на матрицу.
Я не знаю, что такое "изящная" математика. При конвертировании между пространствами применяется тот алгоритм, который нужен для конвертирования между пространствами. Если для перехода от sRGB к adobeRGB нужно "неизящное" умножение на матрицу - обходятся им.
Samsonov сказал(а):
То есть всё равно, освещали бы тестовый образец лампой 6500 К, 5000 или вообще 2850 К, так?
Для начала - в экспериментах Гилда и Райта измеряли emission, а не отражение от образца.
Samsonov сказал(а):
Во всех трёх случаях подобранные наблюдателем координаты RGB были бы одинаковыми?
Нет.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Наверное, проблема в том, что я не до конца понимаю опыты Гилда-Райта. Поэтому хотелось бы:
  • Узнать точную схему их колориметров. Изначально я как раз и думал, что оба стимула (тестовый и настраиваемый) были самосветящимися. Но конкретной схемы нигде не видел. Потом наткнулся на рисунок в статье Шадрина — там тестовый образец отражает опорный белый свет. Вот отсюда и путаница пошла.
  • Узнать точные условия эксперимента. Честно говоря, для меня большой сюрпиз, что наблюдатели сидели в полной темноте; я думал, что там просто слабое-слабое освещение было. А какова тогда яркость базовых стимулов? Ведь под что-то же чувствительность глаз должна была адаптироваться.

sabos сказал(а):
Для XYZ понятие опорного белого присутствует. XYZ_D50 не равен XYZ_D65.
Ну вот конкретно в профиле что используется? Спецификация ICC вроде никаких «разновидностей» XYZ не определяет. Там сказано, что единственным допустимым осветителем PCS может быть D50. Получается, в профиле всегда координаты строго для D50?

Если white point профиля отличается от стандартного D50, программа обязана выполнить chomatic adaptation transform.
И само значение wtpt тоже должно быть записано в пересчёте на D50, так?

А колориметр тогда что выдаёт? Координаты для текущей температуры экрана (9300) или для D50 или, может, для D65? (При этом в создаваемом профиле отсутствует тэг chad, но в софте есть диалог выбора предпочитаемого метода адаптации.)

Что подразумевается вне контекста ICC-профилей? Для L*a*b* это всегда D50, если не указано другое. А для XYZ? То есть получается, что это тоже не абсолютная координатная система, что она тоже требует нормировки по некоторому белому.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

Samsonov сказал(а):
Потом наткнулся на рисунок в статье Шадрина.
Комментировать статью я пожалуй не стану, это к авторам. Лишь imho, вводить на первых шагах такое непростое понятие, как "опорный белый", я бы не стал. Сильно путает.
Samsonov сказал(а):
Узнать точные условия эксперимента.
Практически все известные мне установки по вычислению color matching function уравнивали узкоспектральный стимул со смесью кардиналов. Такая методика (пройти по локусу) дает наивысшую точность (наибольший охват колориметра).
Samsonov сказал(а):
А какова тогда яркость базовых стимулов?
100 кд/м2.
Samsonov сказал(а):
Получается, в профиле всегда координаты строго для D50?
В большинстве случаев. Или PCS D50, или chad.
Samsonov сказал(а):
И само значение wtpt тоже должно быть записано в пересчёте на D50, так?
Вы ставите очень общие вопросы. Дабы ответить строго, нужно пояснить и теорию базовой колориметрии, и практику применения. Это даже не статья, это книга. Разрешите ответить упрощенно.

Порой белый не важен (emission), но чаще всего важен (reflection). Если белый важен, и если не указано другое, то подразумевается D50.
Samsonov сказал(а):
При этом в создаваемом профиле отсутствует тэг chad
Этот тег не встраивают в матричные профили (illumination=emission).
Samsonov сказал(а):
это тоже не абсолютная координатная система, что она тоже требует нормировки по некоторому белому.
В цвете не бывает "абсолютных координатных систем". В цвете работает своя "теория относительности", имя которой color (in)constancy. Только что прошла дискуссия о "как пень вкопанных" функциях и координатах.
 
Ответ: Зачем нужен chad tag в профайлах принтеров?

sabos сказал(а):
Вводить на первых шагах такое непростое понятие, как «опорный белый», я бы не стал. Сильно путает.
Вот это и не ясно: сначала проводится эксперимент в полной темноте, с узкополосными стимулами, строится некая модель, и вдруг — опа — откуда-то появляется адаптация под осветитель, требуются различные системы отсчёта XYZ.

В профилях или указываются координаты PCS D50, или chad. Порой белый не важен (emission), но чаще всего важен (reflection). Если белый важен, и если не указано другое, то подразумевается D50. Тег chad не встраивают в матричные профили (illumination=emission).
Как раз-таки встраивают — отчасти поэтому и возник мой вопрос. В приложенном архиве лежит подборка матричных профилей с chad, созданных разными программами: MonacoOPTIX 2.0 Pro, Eye-One 3.6 (easy mode), Huey 1.0. Хотя все мониторы калибровались под 6500, в профиле записано wtpt=5000. Так с каких это пор цветовая температура для устройств отображения не важна? Для сравнения, в архив добавлен профиль, созданный Spyder2 2.3 Pro, — там и wtpt=6500, и chad отсутствует. И все эти профили идентифицируются смотрелками как имеющие PCS-осветитель D50, в то время как сецификация ICC вообще не определяет разновидностей PCS какого бы то ни было типа (XYZ, LAB) под каждую температуру — там просто говорится, что данные должны быть для D50.

И опять-таки, я не понимаю, что же выдаёт колориметр? Координаты с адаптацией под текущую температуру экрана чтоль? Например, API того же Spyder2 не имеет точек входа для задания температуры — там есть только инициализация и считывание XYZ. Правда, при инициализации требуется прикладывать датчик к белому экрану, но во-первых, это происходит ещё до установки требуемой температуры на экране, и во-вторых, никакой разницы между показаниями, куда бы ни прикладывался датчик при инициализации (хоть к столу, хоть к окошку), я не заметил.

Только что прошла дискуссия о «как пень вкопанных» функциях и координатах.
Да если бы в этих своих дискуссиях к какому-то единому членораздельному выводу приходили, то чтение вашей хроники сломанных копий действительно могло приносить пользу. А так — просто жаркая полемика с уклоном в глубокую биологию. Мне же не эти недра естествознания нужны, а просто разобраться в подробностях создания модели XYZ и её применения на практике, в том числе в колориметрах и профилях ICC. Надеюсь, это уже где-то изложено внятным языком. Но пока что мне попадались только материалы общего плана, где всё описывается сжато и пространными фразами, а как до деталей — так пробел.
 

Вложения

Ответ: Зачем нужен chad tag в профайлах принтеров?

sabos сказал(а):
Для XYZ такое понятие присутствует. XYZ_D50 не равен XYZ_D65.
Вопрос. А что такое XYZ_D50? Где можно достать спецификацию, например, функций сложения цветов для этой цветовой системы координат (цветового пр-ва)?

Как раз пару недель назад в очередной раз посидел над спецификацией ICC и в очередной раз не понял, что такое PCS (именно PCS XYZ).
 
Статус
Закрыто для дальнейших ответов.