* три энергосберегающих лампы непонятного происхождения (не я покупал), светящие в потолок.
Вычислял средние по RAW каналам из центрального квадрататика 200×200 пикселей (4 раза по 100×100 пикселей). Производилось ли вычитание чёрного не знаю, так и не разобрался ещё, как это в LibRaw-0.7.0-a3 работает (текст программы здесь). Итого:
* R = 12.1 %; G1 = 13.2 %; B = 8.3 %; G2 = 13.2 %;
* конвертация в Canon DPP, sRGB, PS: Faithful, все настройки «по нулям», ББ &lauqo;авто»: R = 165; G = 119; B = 78;
* конвертация в Canon DPP, sRGB, PS: Faithful, все настройки «по нулям», ББ &lauqo;пипеткой по карте»: R = G = B = 119.
Удивительное рядом! В RAW 13 процентов, в sRGB 18.
И еще вдогонку. Был неправ в предыдущем комментарии. Если вы делаете unpack(), а более ничего не делаете, то для кэноновских файлов проведено подавление banding, а черный не вычтен.
Итого, константа экспонометра не 13% а процентов 8-10, а может и меньше (уровень черного около 1024, а какой вы намеряли максимум - не знаю, нужно кадр на насыщение снимать на самом деле).
Я вчера в этом месте сначала ошибся - если черный не вычтен, то у 450D константа экспонометра получается 0.17
Вот это, кстати, для меня загадка. Читаю уже минут пятнадцать документацию по LibRaw, где и как уровень чёрного вычесть найти не могу. Скорее всего, не там смотрю :-( [идёт читать документацию дальше]
Там, к сожалению есть бардак, который унаследован от исходной 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 с уровнем чёрного и насыщением. Дюже интересно с экспозамером и программными гламуризаторами поиграться.
Насколько я понял, если до вызова LibRaw::unpack() сделать imgdata.params.filtering_mode = LibRaw_filtering( LIBRAW_FILTERING_NOZEROES | LIBRAW_FILTERING_NOBLACKS ), то чёрный вычитаться не будет, а подавление banding всё равно сработает. Правильно понял?
NOBLACKS выключает весь препроцессинг черного на стадии распаковки _и_ на стадии постпроцессинга (хотя для чего это может быть нужно на стадии постпроцессинга - не знаю). Предполагается, что если вы это выключили - то вам нужны сами исходные данные и вы знаете что с ними делать (например, посчитаете уровень черного сами по рамке).
Да, дурная архитектура, но мы пока принципиально поддерживаем полную совместимость с dcraw по фичам т.е. можно собрать эмулятор, который будет производить битово-одинаковые результаты (с точностью до одного бага обработки PhaseOne, который таки поправили навсегда)
> Предполагается, что если вы это выключили - то вам нужны сами исходные данные и вы знаете что с ними делать (например, посчитаете уровень черного сами по рамке).
Именно это мне и нужно. Уровень чёрного (и не только) как раз сам хочу посчитать.
Кстати, подавление бандинга можно где-нибудь выключить? Чтобы получить as RAW as possible.
Да, _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)
Спасибо, интересные наблюдения.
Интересное рядом. Провёл эксперимент на дому.
Подопытные:
* Canon EOS 40D;
* X-Rite Mini Gay Balance Card;
* три энергосберегающих лампы непонятного происхождения (не я покупал), светящие в потолок.
Вычислял средние по RAW каналам из центрального квадрататика 200×200 пикселей (4 раза по 100×100 пикселей).
Производилось ли вычитание чёрного не знаю, так и не разобрался ещё, как это в LibRaw-0.7.0-a3 работает (текст программы здесь).
Итого:
* R = 12.1 %; G1 = 13.2 %; B = 8.3 %; G2 = 13.2 %;
* конвертация в Canon DPP, sRGB, PS: Faithful, все настройки «по нулям», ББ &lauqo;авто»: R = 165; G = 119; B = 78;
* конвертация в Canon DPP, sRGB, PS: Faithful, все настройки «по нулям», ББ &lauqo;пипеткой по карте»: R = G = B = 119.
Удивительное рядом!
В RAW 13 процентов, в sRGB 18.
Reply
Reply
Правда в этом месте были всякие ошибки-недоделки, которые к BETA2 вроде как все выловлены. Лучше пересобрать
http://www.libraw.su/download#beta
Reply
Был неправ в предыдущем комментарии. Если вы делаете unpack(), а более ничего не делаете, то для кэноновских файлов проведено подавление banding, а черный не вычтен.
Итого, константа экспонометра не 13% а процентов 8-10, а может и меньше (уровень черного около 1024, а какой вы намеряли максимум - не знаю, нужно кадр на насыщение снимать на самом деле).
Я вчера в этом месте сначала ошибся - если черный не вычтен, то у 450D константа экспонометра получается 0.17
Reply
Reply
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 )
Reply
Reply
На этих выходных поковыряюсь с новой версией LibRaw с уровнем чёрного и насыщением. Дюже интересно с экспозамером и программными гламуризаторами поиграться.
Насколько я понял, если до вызова LibRaw::unpack() сделать imgdata.params.filtering_mode = LibRaw_filtering( LIBRAW_FILTERING_NOZEROES | LIBRAW_FILTERING_NOBLACKS ), то чёрный вычитаться не будет, а подавление banding всё равно сработает. Правильно понял?
Reply
NOBLACKS выключает весь препроцессинг черного на стадии распаковки _и_ на стадии постпроцессинга (хотя для чего это может быть нужно на стадии постпроцессинга - не знаю).
Предполагается, что если вы это выключили - то вам нужны сами исходные данные и вы знаете что с ними делать (например, посчитаете уровень черного сами по рамке).
http://www.libraw.su/docs/API-datastruct-rus.html#LibRaw_filtering
Да, дурная архитектура, но мы пока принципиально поддерживаем полную совместимость с dcraw по фичам т.е. можно собрать эмулятор, который будет производить битово-одинаковые результаты (с точностью до одного бага обработки PhaseOne, который таки поправили навсегда)
Reply
Именно это мне и нужно. Уровень чёрного (и не только) как раз сам хочу посчитать.
Кстати, подавление бандинга можно где-нибудь выключить? Чтобы получить as RAW as possible.
Reply
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)
Reply
Reply
Reply
Но чтобы быть полностью честным, оно есть только для Canon (рассчитывается для всех камер по рамке) и PhaseOne (данные для этого дает сама камера)
Reply
Leave a comment