О цветопередаче

Еще один пост, родившийся из комментария.

Давид Мзареулян спрашивает:

Вот у нас сенсор (+АЦП). Сигнал от него, как я понимаю, линейный с высокой точностью. Даже если точность не очень высокая, то откалибровать отклик конкретной модели сенсора не должно составлять труда. Перед сенсором светофильтры. Они тоже линейно сворачивают спектр в скаляры. RGB-пространство тоже линейно, ну гамма там по яркости. Получается, что задача преобразования сигнала от сенсора в RGB линейная с точностью до одной единственной заданной гаммы. Значит, чтобы заставить монитор светиться так же как светился объект перед камерой, достаточно линейно преобразовать сигнал от сенсора. С точки зрения цвета это означает ткнуть пипеткой в нейтральный объект и таким образом найти взаимные коэффициенты для трёх каналов. Ну и гамму потом наложить. Всё, этого должно быть достаточно.

Что я упускаю? Потому что если я ничего не упускаю, то совершенно непонятно, почему разные конвертеры по-разному разрешают и передают цвета с разных камер а они таки их передают по-разному.

Отвечаем (чуть подробнее, чем в том комментарии в ЖЖ):

Это место просто густо усыпано граблями. В том порядке, что вспомнил:

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

    Вот снимаешь радугу, смотришь, а на ней не все цвета (потому что профиль их завернул не туда).

    В той степени, в которой это возможно - преобразование из "камерных" в "мониторные" цвета делается путем применения "профиля" т.е. некоторого описания цветопередачи камеры.

  2. Откуда берутся эти самые профили камер, какое у них качество, должны ли мы иметь один профиль для всех съемочных случаев (с учетом пункта 1) - большой для меня вопрос.

    Ну, вероятно, снимают какую-то мишень или спектралку, строят ICC-профиль, применяют.

  3. Что там творится в цветовом движке, с учетом округлений, выхода за диапазон ("охват у камеры" - шире видимого диапазона) - не меньший вопрос. В примере по ссылке видно, как сильно по-разному разные CMS-движки интерпретируют одни и те же данные.

    Ну да, пример злой, там primaries камеры (в матричном профиле) - вне видимого глазом охвата, но кто сказал что так нельзя? Матричный профиль - это всего-то 3D-поворот.

  4. Вообще, ICC-стандарты для input profiles есть большая попаболь, они как-то работали со сканерами (где одна и та же лампа), а с камерами, как мне кажется, там все не слишком хорошо. Что хорошо видно на предыдущем примере: primaries оказались за гранью, а машинка не справилась.

    В части ICC - Adobe уже от них фактически отказался, их DCP-профили - больше чем ICC. Но народу тоже не нравится, они их обратно раскручивают (untwisted profiles).

  5. На закуску. В тенях оно таки нелинейно (за счет шумов). А где будет синий канал у темно-красной плашки с колорчекера? Там и будет, в глубоких тенях, плашка темная, синий канал - слабый (в смысле чувствительности). А если посветить лампой накаливания, желая построить профиль для такого освещения?

    Это не говоря о всяких засветках-рассеянии от оптики, которые при съемке мишени тоже будут и линейности не прибавят. А описание мишени, построенное спектрофотометром - не учитывает никакого рассеяния, следовательно построенный профиль будет нелинейности как-то компенсировать. И сняв потом CC24 при том же освещении и применив профиль - мы таки получим очень неплохой рендеринг стандартных цветов колорчекера.

  6. А потом некто снимает с ETTR, потому что ему на семинаре так велели. Применяя профиль, построенный по мишени, снятой с нормальной экспозицией. Профиль построенный на пункте 5 будет компенсировать нелинейность (коя была в тенях нормально снятой мишени в слабом канале), но мы то подвинулись из области нелинейности - и нам это перекомпенсируют, цвета уедут.
  7. Ну и пользователи конверторов, они же не хотят правильного цвета. Они хотят красивого цвета. Может быть в этом причина расхождения в цветах?
  8. А, да, еще есть интерполяция, где цветовые компоненты восстанавливаются как-то. Эти эффекты больше влияют на шум, но в тенях, где шум виден хорошо, там и на цвет тоже.
А, да, готовых решений у меня нет. Ну кроме того, что если самостоятельно строить профили, то и использовать их надо в тех же условиях. Снимаете с ETTR - стройте и профили так же.

Comments

Ну, э.

1. Спектры чувствительности колбочек глаза L(w), M(w) S(w) не являются линейной комбинацией спектров фильтров R(w), G(w) и B(w), где w - длина волны. Эта задача линейного решения не имеет (имеет линейное приближение). С монитором всё как раз лучше, ибо задача цветокоррекции для устройств вывода решается линейно.

2. У монитора и у жизненного объекта разный диапазон контраста и яркости. А значит, воспринимаем мы эти цвета по разному просто психологически.

3. Собственно, пока действительно есть проблема шума. Человеческий глаз способен смотреть на диапазон яркости больший, чем способна дать камера.

Пункт 1 со слайдом никого не смущал.

Кстати хорошая мысль снять радугу.

В смысле сделать серию снимков щели спектрографа (с серым общим фоном чтобы баланс не плавал) от белого источника прогнав по видимому спектру.

Ибо никаких RGB нет, это выдумка и обман зрения.

Можно просто честно снять радугу в пейзаже. У меня от результата - попаболь.

Можно, кстати, на призму посветить солнцем через дырку в занавеске, чтобы на одном кадре было. Тоже забавно получается.

Разрешение низкое. А подцепив фотоаппарат к монохроматору можно легко получить и 10 тысяч точек развёртки. После чего есть что анализировать.

Ну да, естественно, радуга и призма - это качественный эксперимент. Но показательный.

Что же касается количественного, то в колориметрической практике ширина отсчета в 5нм считается вполне приемлемой, что на весь диапазон в ~400нм дает 80 отсчетов на весь спектр.

Ок, да, первый пункт принимаем конечно, характеристики фильтров на матрице не обязаны соответствовать каким-то rgb-шным стандартам. Тогда у нас возникает задача приведения цветового охвата этих фильтров к диапазону файла. Задача, видимо, не совсем линейная (как там, в фотошопе при смене профиля relative colorimetric, absolute colorimetric, perceptual и т. д.). С другой стороны, эта задача должна быть уже исследована вдоль и поперёк и должно быть или устраивающее всех решение или какой-то минимальный набор решений. Ну то есть не должно быть ситуации, когда каждый конвертер решает её заново.

Откуда берутся профили это вопрос, конечно. Но, блин, даже если мерить честно, по спектрально чистым цветам, это не должно быть какой-то сверхсложной задачей. Ну да, нужно некое хорошее оборудование, но это задача масштаба одной оптической лаборатории, а не целого НИИ. Встречающиеся иногда рассуждения о секретных профилях мне не очень понятны. Оптика линейна. Тупо прогнать по спектру, отнормировать на такую же матрицу без фильтров и у тебя в руках кривая, которая полностью описывает твой фильтр в любой световой ситуации. Уж какой-нибудь Адоб точно может это сделать.

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

Не-не, это очень проблемная задача.

1) Оборудование (камера) путает цвета. Два разных (с точки зрения человека) цвета дают один отклик, два одинаковых (с точки зрения глаза) - разный отклик. Невидимый (ИК, УФ) - тоже дает отклик.

2) Цветовая наука в ее распространенном виде (готовые color engines) не готова работать с этими данными.
Она даже с контекстным gamut mapping не готова работать промышленно (не все пространство во все пространство, а с учетом охвата реального изображения)

3) Спектральные данные не спасают. Все что может предложить цветовая наука (в распространенном ее виде) - это проинтегрировать по спектру, получить смоделированные отклики (триплеты или квадруплеты) и дальше с ними работать.

Ну и пункт 7, точный цвет интересен только для репродукции.

Ну а Adobe что. Adobe честно делает профили. И просто матричные, которые в DNG зашивает и существенно более сложные DCP. У них какое-то качество, пипл хавает.
Но есть мнение, что профиль надо строить под освещение и под конкретную оптику (с учетом светорассеяния), а значит Адобой счастлив не будешь.

Мерси. Во всяком случае, проблемные места, вроде, стали видны яснее.

>Но есть мнение, что профиль надо строить под освещение и под конкретную оптику (с учетом светорассеяния), а значит Адобой счастлив не будешь.

Мне в этом смысле очень нравится подход Datacolor-а в SpyderCheckr - там для лайтрума строятся "профили" (которые сохраняются в лдайтрумовские User preset-ы), суть которых состоит в двигании лайтрумоскких цветовых движков в панели HSL. Соответственно пресетов можно понаделать на всякие случаи жизни (т.е. всякие освещения\объективы).

Но сам я не пробовал пока за неимением датаколоровских плашек и софта.

Еще кину большой камень в лампы мониторов. Всё это CCFL-безобразие с фирменными смесями люминофоров тоже дает неизвестно что, а не белый свет, потом фильтры монитора пытаются еще довершить процесс лепки конфет из непонятно чего.
LED-подсветка новомодная - не меньшее дерьмо, потому что если там не RGB-диоды, то это голубые диоды, которые намазаны смесью желтого и "розового" люминофоров. Которые со временем по-разному деградируют.

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

это все от того, что RGB в raw это не те RGB, что в jpeg.

народ по наивности думает, что запись и воспроизведение взаимно обратимы, как например в случае со звуком.

>Не учтено то, что спектры фильтров и спектры пикселей на мониторе - разные.
допустим, они были бы одинаковы. это вообще никак бы не поменяло ситуацию. первый пункт мимо.

>primaries камеры (в матричном профиле) - вне видимого глазом охвата, но кто сказал что так нельзя?
ну это же как-то... нефизично. вне видимого глазом охвата ничего нет. это как мнимая единица. абстракция.

ну были же вообще CMY матрицы у Canon когда-то, и ничего, цвета восстанавливали :)

По второму пункту.

Физично или нефизично, но
а) охват камеры (для матричного профиля) - это то что поместилось в треугольник между primaries
б) если в этот треугольник помещаются "все видимые цвета", то primaries должны быть за границей человечьего охвата
в) при этом ситуаций, когда реальный сигнал выпадает за охват - может и не быть на практике, не бывает сигнала в котором только 'R'. Правда интерполяторы (демозаики) и тут нагадят, конечно.

О чем я и толкую - современные CMM на ситуацию "охват камеры - весь видимый свет и еще немножко" не рассчитаны. Во всяком случае, в спецификациях такого нет, на что мне и указывали, когда я троллил цветовых ученых (ремесленников) вышепомянутым постом.

По первому пункту: сдается мне, что если через цветоделительные фильтры снять, а потом через них же воспроизвести проекторами, то получится довольно неплохо. Хотя я и не пробовал.

Алексей

Я прошу прощения, но слово "primaries" к устройствам ввода вообще плохо применимо.

Да, конечно. Это просто название для "углов треугольника", по аналогии.

а тут нет никакой аналогии.

вот у нас в глазу три колбочки, но "охват" (ака локус) на треугольник похож очень и очень отдаленно.

>сдается мне, что если через цветоделительные фильтры снять, а потом через них же воспроизвести проекторами, то получится довольно неплохо.

нет, получится плохо. хорошо получится только если фильтры через которые фотают есть линейная комбинация колбочковых чувствительностей, a primaries проектора достаточно широко расставлены.

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

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

>при этом ситуаций, когда реальный сигнал выпадает за охват - может и не быть на практике,
всякие разговоры о том, что за пределами локуса есть цвет - ересь.
можно фотать в рентеновском диапазоне, при этом результатом будет все что угодно, но не цвет.

>сдается мне, что если через цветоделительные фильтры снять, а потом через них же воспроизвести проекторами, то получится довольно неплохо.

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

К вопросу о линейности. Нашёл сегодня вот такой сайтик: http://www.maxmax.com/spectral_response.htm. Если потыкать в меню слева, можно увидеть более подробные графики по отдельным камерам.

Отграфиков линейности отклика я несколько офигел. Там действительно ТАКАЯ нелинейность, или ребята что-то неправильно мерили?

Что меряет maxmax - для меня загадка, которую уже обсуждали вот тут: http://blog.lexa.ru/2010/12/03/nu_za_lineinost.html

Я снимал Q13 с вилкой и смотрел на взаимные отношения между патчами в соседних снимках (т.е. отношение сигнала для 1-го патча в двух кадрах должно быть равно этому же отношению для другого патча). Измерение отношений позволяет забыть о погрешностях у затвора.
Так вот, у 5D2 в рабочем диапазоне (стопов 7-8 от насыщения вниз) с линейностью было все в порядке. Я конкретных цифр не помню, но вроде бы 2-й знак после запятой везде был в порядке, т.е. ничего такого уж нелинейного не было. Потому и не публиковал, ничего нетривиального не нашел.

А тебе вообще не попадались спектральные кривые для сенсоров?

Что-то в сети с ними туговато. По интернету ходит одна-единственная ссылка на данные по D3x http://actionphotosbymarianne.com/spectra/D3xAbsChanNum.csv, но кто их мерил и как непонятно.

Для ряда сенсоров (в первую очередь кодаковских, они очень аккуратны в этом деле) данные просто опубликованы самим производителем.

Марианна - очень надежный источник.

Спасибо, а она что-нибудь ещё меряла?

они там как-то стремно меряют, я бы не доверял. ни по спектральным хар-кам, ни по чувствительностям.

Я их спрашивал.

On Dec 10, 2010, at 6:46 PM, Iliah Borg wrote:

Dear Sir:

I'm reading your article on spectral response, here: http://maxmax.com/spectral_response.htm

Here is something that I would ask you to clarify: "Each picture was opened in Photoshop and the RGB raw values were compiled". Does it mean you used ACR for raw conversion? I believe it is not the case but would like to know for sure.

--
Iliah Borg
ib@pochtar.com

Hi Iliah,

Measuring the spectral response of cameras has been quite a challenge. The biggest difficulty is being able to measure consistently because there are many factors that can affect measured response. For instance, we found that power line voltage variations of less than 1 volt were causing major differences in the intensity of the light source feeding one of the two monochromators. Because there are so many steps to completing a graph, there are lots of places were errors can creep in.

Since we started measuring the cameras, we have been refining the process. So results of cameras measured at different points at time will have differences until we get to a good consistent process that we are happy with. To fix the power line problem, we changed light sources and added a precision switching power supply were we can precisely dial in both the amperage and voltage.

We just acquired a forensic light source (Omnichrome Spectrum 9000) where you have dial in both wavelength and bandwidth (though we did find some design issues with the unit that we are trying to fix) to help in the UV-VIS measurements. On the VIS-IR monochromator, we are adding a precision adjustable output slit that goes down to one nm. The point is that the process is still in a state of flux.

Another issue has been integrating the UV-VIS monochromator data with the VIS-IR monochromator data. Because the two units have different gratings, the shape of the spectral output in different. Then you also have to factor in how you measure the actual power being output and think about things like how different fiber optic cables respond, power measurement calibrations, etc.

Camera issues are another matter. You can't output too much light to clip on the sensor, but not too little that you don't get a good signal. Monochromator power output varies quite a bit especially at the high and low limits. Add in sensor response variations, and you have to change shutter times to compensate. This means you have to compensate when you measure the results from the camera.

Some other camera issues: camera response to light is not completely linear. We have found that low levels and high levels are non-linear. So you want to keep the camera operating in the most linear range which is between 25-75%. If you have long shutter times, which are likely especially in the UV, then you introduce noise.

Our basic process is to route a bifurcated fiber optic cable from a monochromator to the camera and spectrometer. Dial in a wavelength, measure power, take a picture, make a note of the two, download the pictures, measure each picture for its average RGB values, put values in a spreadsheet, make lots of adjustments and calculations based on things like shutter times, wavelengths, measured power, monochromator grating curve differences, power measurement calibrations, spectrometer drift, fiber optic cable response, etc.

By the time you have done all this, you realize shooting in RAW is not (I don't think) that important. There are so many other sources of errors, that the RAW conversion process is not a big worry yet. Since measuring the response requires taking a picture every 20nm from 300nm to 1000nm, and you need to take both UV-VIS and VIS-IR from separate monochromators, you end up with a lot of pictures. So far, we have just been taking JPG pictures to keep the file sizes and processing time down.

Regards,

Dan Llewellyn
LDP LLC
220 Broad Street
Carlstadt, NJ 07072
USA

001-201-882-0344 Voice
001-201-882-0326 Fax

http://www.maxmax.com

Какая-то ерунда.
Они очень точно готовят сигнал, уделяют этому внимание большое и все такое.

А что меряют (т.е. что на выходе у "прибора", точнее камеры) - при этом не знают.....

Измеряют, что дал внутрикамерный JPEG - "So far, we have just been taking JPG pictures to keep the file sizes and processing time down". Такие дела.

Молодцы, че.

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

Не, ну они зачем-то же делали эти измерения, потратили кучу сил и времени. И все - коту под хвост.

Вау. Столько пафоса, и вдруг в последнем абзаце всё коту под хвост There are so many other sources of errors, that the RAW conversion process is not a big worry yet . Ну блин.

Ага-ага, сама идея мерять спектральный респонс *после* применения color engine (вроде как камерной), тоновой кривой и всего остального - меня сильно удивляет.

Похоже, люди от электроники - и от софта всякой подлости не ждут. Ну а я бы, к примеру, подлости от питания не ожидал бы.

Подлость от питания и не надо ждать - надо использовать правильные источники света и правильные приборы.