Кратко о чувствительности цифровых камер
Я несколько опережаю события и фактически презентую незаконченное микро-исследование, но мне кажется полезным немножко обсудить методику с сообществом, прежде чем доделывать работу до конца.
Текущие стандарты (ISO 12232) на чувствительность цифровых камер довольно креативны: специфицируется значение, которое должен иметь средний тон (18%-й серый) в sRGB-файле, а про RAW ничего не говорится. Неявно предполагается, что RAW обрабатывается каким-то проявителем конвертором и, соответственно, чувствительность оценивается у всего комплекса камера-конвертор. Собственно, оно так и было в пленочном мире, пока не проявишь - ничего не понятно.
Вместе с тем, линейная передаточная характеристика современных цифровиков и доступность RAW-данных в цифровом виде позволяют подойти к проблеме и с другой стороны.
Методика
Где должен быть 18% серый в RAW-данных? Они линейны, значит получается что на 18% от максимума. Да, при этом мы оставляем всего 2.45 стопа в светах, но как минимум для низкоконтрастных сюжетов это вполне оправданно: полутона сразу окажутся там, где им и предписано.
Как это проверить? Взять серую карту (или белый лист бумаги, это неважно), поставить по нему экспозицию, снять, посмотреть какие данные в RAW-файле. При этом надо еще учесть два соображения:
- Если камера не вычитает уровень черного (bias), а, например, RAW-данные с камер Canon именно такие, то этот черный надлежит вычесть из всех значений в RAW-файле самостоятельно.
- Нужно еще снять кадр с пересветом и определить таким образом уровень насыщения у камеры (вычтя оттуда уровень черного при необходимости) - это будет весь размах сигнала.
Кроме того, мы помним, что экспонометры принято калибровать не на 18%, а на 12.5-14 и если средний тон мы получим на этом уровне, значит нам дают в светах не 2.45 стопа, а 2.7-3.
Результаты
Была взята камера Canon 450D и вышеописанная операция была проделана при дневном (пасмурном московском) свете. Серая карта (лист пенокартона) занимала весь кадр, снимал с расфокусировкой и все такое. Что получается:
- Показания экспонометра камеры и внешнего экспонометра (Sekonic L-558) полностью совпадают.
- Показания экспонометра и, собственно, результаты съемки одинаковы для всех режимов замера камеры и всех ISO.
- И результаты эти таковы:
- Для ISO100: серое поле в зеленом канале имеет усредненное значение 1409, а точка насыщения - 13579 (обе цифры - после вычитания черного).
- Для ISO1600: серое поле имеет значение 1540, точка насыщения 15075
Иными словами, константа калибровки экспонометра - 10.2-10.3%. Это на четверть стопа меньше, чем констата калибровки Sekonic, а если считать стандартом серую карту - то на 0.8 стопа меньше.
Выводы или как к этому относиться
Все вышесказанное относится к зеленому каналу, остальные два недодержаны еще более (красный - на стоп с четвертью, синий - на полстопа, но надо учитывать, что используемый свет был более холодным, чем стандартный дневной).
В зеленом канале мы, ориентируясь на камерный экспонометр, имеем 3.3 стопа запаса до насыщения. В очень многих условиях съемки это означает, что можно смело делать коррекцию в плюс.
Чувствительность пленки нет смысла рассматривать без учета процесса проявления. Можно считать, что стандартный проявитель конвертор (DPP в случае кэнона) делает push на 0.8 стопа (отчего снятая серая карта оказывается в нужном тоновом диапазоне), а если мы пользуемся собственным проявителем (без тоновой кривой выгнутой вверх) то надо считать, что чувствительность у нас не ISO100, а ISO58.
Понятно, зачем так делают производители: передержку не спасти никак, а лишний шум в тенях большинство потребителей не заметит.
В-общем, старые пленочные приемы, когда снималась серия тестовых кадров (и серая шкала в эти тесты входила) и данному сочетанию "партия пленки-режим проявки" присваивалась чувствительность - они никуда не деваются и могут быть с успехом использованы и в цифровую эру. Тем более, что эксперимент простой, с помощью средств из LibRaw можно уложиться в несколько минут (собственно, 4channels почти все делает).
Желающим повторить оный эксперимент хочу отдельно указать, что Photoshop показывает 16-битные значения в шкале 0..32767 т.е. банально делит все на два. Поубивав бы.
Кроме того, стало примерно ясно, как относиться к цифрам чувствительности от DxO. Для 450D они указывают ISO80 для установленных на камере ISO100. Это поправка не относительно 18%-го серого, а относительно принятой сейчас калибровки экспонометра (12.5%)
Comments
О! То-то я меньше +1 на камере не держу... Надо будет как ве
О! То-то я меньше +1 на камере не держу...
Надо будет как вернусь с Индии померять точнее.
Я уже все как-то померял для 350d :) Поэтому у меня тоже обы
Я уже все как-то померял для 350d :) Поэтому у меня тоже обычно положительная экспокореркция.
Производители полагабют, что в RAW 18% серый должен быть на
Производители полагабют, что в RAW 18% серый должен быть на том месте, которое превратится в 18% в sRGB :) Отсюда - его уползание вниз. Ты же помнишь, что внутрикамерный конвертор у многих камер по умолчанию не использует верх ДД.
Ааааааааааааааааааааа ......... :)
Ааааааааааааааааааааа ......... :)
Что значит "не использует"? Там тоновая кривая вроде вот эти
Что значит "не использует"? Там тоновая кривая вроде вот этих вот: http://www.libraw.su/articles/ettr-underexposure-wedges.html
Аааааааааааа ..... уже по другому поводу :) Ты же читал htt
Аааааааааааа ..... уже по другому поводу :)
Ты же читал
http://skoblov.livejournal.com/23906.html
там тема про "запас в светах" и последний график, наглядно демонстрирующий его наличие. Ну и цифры в таблице, в которых видно, что при jpeg=255 RAW еще очень далек до максимума.
мы же это обсуждали кучу раз.
350D (12-битная) - это другая статья, в новых камерах все ин
350D (12-битная) - это другая статья, в новых камерах все иначе. Интересно, кстати, что оно показало бы для автоматического баланса, у тебя же оно не уравняно там.
Руки дойдут - сделаю. Пока что я вижу на практике, что запас
Руки дойдут - сделаю. Пока что я вижу на практике, что запас есть.
ББ у меня стоял какой-то реалистический, кажется. Да и автоматический ББ в идеале лишь выровнял бы перекос по каналам, и усреднил запас, который у меня присуствует во всех каналах, но сильно разный.
Ну какой он реалистический. Вот в среднем тоне R/G/B=120/146
Ну какой он реалистический.
Вот в среднем тоне R/G/B=120/146/156
Сделай файл с такой заливкой, подывысь.
<p> Спасибо, интересные наблюдения. </p> <p&
<p>
Спасибо, интересные наблюдения.
</p>
<p>
Интересное рядом. Провёл эксперимент на дому.
</p>
<p>
Подопытные:<br/>
* Canon EOS 40D;<br />
* X-Rite Mini Gay Balance Card;<br />
* три энергосберегающих лампы непонятного происхождения (не я покупал), светящие в потолок.
</p>
<p>
Вычислял средние по RAW каналам из центрального квадрататика 200×200 пикселей (4 раза по 100×100 пикселей).
Производилось ли вычитание чёрного не знаю, так и не разобрался ещё, как это в LibRaw-0.7.0-a3 работает (текст программы <a href="http://forum.ixbt.com/topic.cgi?id=20:25524-16#409">здесь</a>).
Итого:<br />
* R = 12.1 %; G<sub>1</sub> = 13.2 %; B = 8.3 %; G<sub>2</sub> = 13.2 %;<br />
* конвертация в Canon DPP, sRGB, PS: Faithful, все настройки «по нулям», ББ &lauqo;авто»: R = 165; G = 119; B = 78;<br />
* конвертация в Canon DPP, sRGB, PS: Faithful, все настройки «по нулям», ББ &lauqo;пипеткой по карте»: R = G = B = 119.<br />
</p>
<p>
Удивительное рядом!
В RAW 13 процентов, в sRGB 18.
</p>
Об том и речь - <i>фирменный проявитель</i> дела
Об том и речь - <i>фирменный проявитель</i> делает пуш на 2/3 стопа.
Вдогонку - если вы filtration_mode не меняете, оставляя умол
Вдогонку - если вы filtration_mode не меняете, оставляя умолчание, то LibRaw черный - вычитает.
Правда в этом месте были всякие ошибки-недоделки, которые к BETA2 вроде как все выловлены. Лучше пересобрать
http://www.libraw.su/download#beta
И еще вдогонку. Был неправ в предыдущем комментарии. Если вы
И еще вдогонку.
Был неправ в предыдущем комментарии. Если вы делаете unpack(), а более ничего не делаете, то для кэноновских файлов проведено подавление banding, а черный не вычтен.
Итого, константа экспонометра не 13% а процентов 8-10, а может и меньше (уровень черного около 1024, а какой вы намеряли максимум - не знаю, нужно кадр на насыщение снимать на самом деле).
Я вчера в этом месте сначала ошибся - если черный не вычтен, то у 450D константа экспонометра получается 0.17
Вот это, кстати, для меня загадка. Читаю уже минут пятнадцат
Вот это, кстати, для меня загадка. Читаю уже минут пятнадцать документацию по LibRaw, где и как уровень чёрного вычесть найти не могу. Скорее всего, не там смотрю :-( [идёт читать документацию дальше]
Уровень черного лежит в imgdata.color.black http://www.libra
Уровень черного лежит в imgdata.color.black
http://www.libraw.su/docs/API-datastruct-rus.html#libraw_colordata_t
(для PhaseOne - в imgdata.color.phase_one_data)
Там, к сожалению есть бардак, который унаследован от исходной codebase (dcraw), ну и от самих камер
- у некоторых камер все вычтено, париться не надо
- у которых не вычтено - рассчитываем единствнный параметр black который и будет вычтен на этапе постпроцессинга (если вы им пользуетесь)
- все более сложные случаи сводим к единственному black (все остальное вычитаем на этапе распаковки).
Пример вычитания черного мимо постпроцессинга - samples/4colors.cpp (от BETA3, вышедшей минут 20 назад, http://www.libraw.su/download#beta )
Спасибо.
Спасибо.
Кстати да, про насыщение не подумал. Спасибо, уберегли от гл
Кстати да, про насыщение не подумал. Спасибо, уберегли от глупой ошибки. В imgdata.color.maximum у меня ажно 16224 лежит при том, что на ISO100 камера (Canon EOS 40D) даже 14 тысяч намерить не может.
На этих выходных поковыряюсь с новой версией LibRaw с уровнем чёрного и насыщением. Дюже интересно с экспозамером и программными гламуризаторами поиграться.
Насколько я понял, если <u>до</u> вызова LibRaw::unpack() сделать imgdata.params.filtering_mode = LibRaw_filtering( LIBRAW_FILTERING_NOZEROES | LIBRAW_FILTERING_NOBLACKS ), то чёрный вычитаться не будет, а подавление banding всё равно сработает. Правильно понял?
Неправильно поняли :) NOBLACKS выключает весь препроцессинг
Неправильно поняли :)
NOBLACKS выключает весь препроцессинг черного на стадии распаковки _и_ на стадии постпроцессинга (хотя для чего это может быть нужно на стадии постпроцессинга - не знаю).
Предполагается, что если вы это выключили - то вам нужны сами исходные данные и вы знаете что с ними делать (например, посчитаете уровень черного сами по рамке).
http://www.libraw.su/docs/API-datastruct-rus.html#LibRaw_filtering
Да, дурная архитектура, но мы пока принципиально поддерживаем полную совместимость с dcraw по фичам т.е. можно собрать эмулятор, который будет производить битово-одинаковые результаты (с точностью до одного бага обработки PhaseOne, который таки поправили навсегда)
<em>> Предполагается, что если вы это выключили - т
<em>> Предполагается, что если вы это выключили - то вам нужны сами исходные данные и вы знаете что с ними делать (например, посчитаете уровень черного сами по рамке).</em>
Именно это мне и нужно. Уровень чёрного (и не только) как раз сам хочу посчитать.
Кстати, подавление бандинга можно где-нибудь выключить? Чтобы получить as RAW as possible.
Да, _NOBLACKS вам выключит подавление бандинга. А уровень че
Да, _NOBLACKS вам выключит подавление бандинга. А уровень черного (средний между для четных и нечетных строк) - будет посчитан.
as RAW as possbibe - это LIBRAW_FILTRATION_NONE, который вообще весь возможный препроцессинг отключает (конкретно у Canon там только _NOBLACKS имеет значение).
LibRaw is very well documented, unfortunately it is all in C(++)
LIBRAW_FILTERING_NOZEROES =1, // no remove zeroes
LIBRAW_FILTERING_NOBLACKS =2, // no black subtraction
LIBRAW_FILTERING_NORAWCURVE =4, // no raw data postprocessing (e.g. PhaseOne corrections etc)
LIBRAW_FILTERING_NONE =7, // (_NOZEROES | _NOBLACKS | _NORAWCURVE)
Отлично, спасибо.
Отлично, спасибо.
Вопрос. Подавление бандинга относится к препроцессингу черно
Вопрос. Подавление бандинга относится к препроцессингу черного?
Yeah. Но чтобы быть полностью честным, оно есть только для
Yeah.
Но чтобы быть полностью честным, оно есть только для Canon (рассчитывается для всех камер по рамке) и PhaseOne (данные для этого дает сама камера)
> еявно предполагается, что RAW обрабатывается каким-то проя
> еявно предполагается, что RAW обрабатывается каким-то проявителем конвертором
Внутрикамерным. Остальные должны подгоняться под него.
На самом деле, ситуация достаточно неловкая, мягко говоря. Не сообщая мне ничего (то есть, не нормируя размер зерна, говоря по нашему, - а сообщать данные о гранулярности считалось обязательным при характеризации конкретной пары плёнка + обработка), мне навязывают пуш-процессинг. Ну и автоматика вспышек начинает недодерживать на полтора стопа.
Кстати, откуда дрова про принятую сейчас калибровку экспоном
Кстати, откуда дрова про принятую сейчас калибровку экспонометра? Например, есть точное подтверждени от секоника, что он калибрует под 12,5?
У него прямо в инструкции оная константа написана. Вот для
У него прямо в инструкции оная константа написана.
Вот для 758-го
http://www.sekonic.com/upload/files/L-758_Operating%20Manual_English.pdf
9-й раздел Technical Data (стр 60):
Reflected Light Metering: K=12.5
Спасибо!
Спасибо!
Леш, есть проблема. Это не коэффициент отражения: http://en
Леш, есть проблема.
Это не коэффициент отражения: http://en.wikipedia.org/wiki/Light_meter#Calibration_constants
Ага, ты прав. По счастью, для тамошнего С (340) это дает Re
Ага, ты прав.
По счастью, для тамошнего С (340) это дает Reflectance в ~12% т.е. никакой практической разницы нет для замера полусферой.
Но вообще, мысль забавная, надо ее обдумать
Вообще, я так поискал, действительно похоже, что экспонометр
Вообще, я так поискал, действительно похоже, что экспонометры где-то находятся в 12-14%.
Похоже, действительно надо привыкать для каждого покупаемого элемента системы проводить калибровку и носить с собой шпаргалку поправок.
три вопроса. 1) 18% в sRGB в гамма 1.8 это вроде не 18% в RA
три вопроса.
1) 18% в sRGB в гамма 1.8 это вроде не 18% в RAW. может быть нужно пересчитать % по гамме?
2) практический вопрос. получается, что ACR тоже делает для камер Canon пуш +2/3?
3) практический вопрос. правильно ли я понял, что рекомендуется всегда делать коррекцию экспозиции +2/3 при съемке и потом -2/3 в конвертере? смысл получается в том, что будет меньше шума и выше ДД.
1) Первый вопрос меня ввел в ступор. sRGB - это gamma 2.2 (э
1) Первый вопрос меня ввел в ступор. sRGB - это gamma 2.2 (это для simplified, для настоящего там чуть сложнее). Средний тон в RGB с gamma 2.2 должен иметь значения R-G-B равные 119.
2) ACR стандартно делает push около стопа. Это некая стандартная величина, на самом деле она у разных камер - разная. Вопрос нуждается в изучении, которое запланировано, но еще не проведено.
3) Практический ответ, на мой взгляд, выглядит так (точнее, первая его часть)
- нужно поснимать серую карту при разных параметрах камеры (о подробностях - см. сегодняшний постинг). Кроме этого нужно снять кадры с большим пересветом, чтобы выяснить полный диапазон значений (он может быть разным при разных ISO)
- нужно посмотреть на RAW-данные серой шкалы (для чего очень удобна программка 4channels из поставки LibRaw) и пересчитать их в запас по экспозиции "от серого до насыщения", в eV или там в процентах, что удобнее.
- если есть привычка к какому-то стандартному материалу, вроде слайда, можно на основании данных из предыдущего пункта посчитать "эффективную чувствительность"
- надо понимать, что запас "от серого до насыщения" зависит от света (скажем, для ламп накаливания чувствительности каналов практически выровняны)
Как-то так. Надеюсь, окончательно запутал.
1) просто забыл константу :-) 3) пусть получил я некое эффек
1) просто забыл константу :-)
3) пусть получил я некое эффективное ISO или запас, что с ним делать дальше? просто как FYI или всё же делать сдвиг при съемке?
Все же очень просто (в этом приближении - уровень серого):
Все же очень просто (в этом приближении - уровень серого):
- берем объект (для простоты дальнейшего изложения - нейтральный и при дневном свете).
- меряем по нему экспозицию (о счастье, внешний и встроенный экспонометры показывают одно и то же)
Если мы по этому замеру снимем, то объект отрендерится туда, куда мы намеряли собственно снимая серую (белую) карту.
Если мы дадим экспопоправку в +3.2 стопа (пусть мы намеряли, что реальный серый отклик - 10.2% от максимума, как в моем эксперименте с 450D), то объект отрендерится в самый максимум, какой может быть без клиппинга в зеленом канале.
Теперь, допустим мы замеряли не основной объект, а самые света, где мы хотим получить следы фактуры (про highlight recovery забыли пока). В предыдущем абзаце ответ - дадим поправку +3.2 (относительно замера светов) и света окажутся ровно там, где мы хотим. Это, собственно, замер "как слайд снимали".
Headroom по двум другим каналам (при дневном свете) - больше.
Что будет с цветными объектами при дневном свете:
- зеленые в насыщение попадают раньше
- красные и синие - позже (при большей передержке относительно замера)
Что будет с другим освещением
- при переходе в теплую область разбаланс чувствительности каналов (эффективный) уменьшается, headroom увеличивается.
Что со вспышкой:
- т.к. светим мы на объект, а ярких светов обычно нет, то правильно дать вспышке коррекцию в плюс. Примерно +1. Но у современных камер много лишнего интеллекта, рекомендуют вспышечную коррекцию задавать на вспышке, а не на камере.
Спасибо за объективные
Спасибо за объективные пояснения насчет цветопередачи в RAW-формате.