Rawspeed: записки на манжетах
Есть такая библиотека RawSpeed, которая натурально написана с душой и склонностью к правильным оптимизациям. Например, файлы .CR2 распаковываются раз в пять быстрее чем это делает LibRaw.
В стремлении эту несуразность поправить, фтыкаю в ее исходники одним глазом, вторым и третьим - в результаты прогона профайлера на LibRaw и RawSpeed на одном и том же файле.
И вижу интересное (в исходниках, не в профайле): Canon 1D Mark III обрабатывается у Коффина в dcraw (и у нас) специфическим способом. Там, как обычно, грубый хак, но работающий. Касается этот хак буквально двух пикселов по ширине на рамке, видимой части изображения - не касается. Ага, сказали мужики и достали лом побольше пошаговый отладчик и grep.
Зная, что меня читают некоторые пользователи RawSpeed, имею сказать, исключительно в информационных целях:
- RawSpeed извлекает уровень черного только из DNG и NEF, в остальных случаях берется predefined-значение из базы данных по камерам.
- Уровень черного - это одно число. Даже не два, как в LibRaw/dcraw и не сложная структура, как оно бывает в некоторых камерах вроде PhaseOne (да и DNG - тоже. DNG-шные теги усредняются).
- Banding не подавить. Его не так много на современных камерах, однако ж.
- Беря общий для всех камер (данной модели) уровень черного - легко испортить тени. На кэноновских камерах уровень черного на разных ISO отличается до нескольких единиц (на одной камере и на кадрах снятых подряд), что немало, если учесть что в последнем "стопе с деталями" всего 8-16 (а то и меньше, в зависимости от уровня требовательности) уровней.
Ситуация с уровнем белого аналогичная: для всех форматов кроме NEF и DNG уровень белого (насыщения) берется из базы. Тогда как у одной и той же камеры на разных ISO он может скакать в пределах трети стопа, если не больше.
Если не принимать затем специальных мер, а просто пользоваться этим уровнем белого дальше, то в зависимости от того, куда он попал, мы либо зарежем ~треть стопа (зависит от камеры и ISO) в светах, либо будем изучать тайну розовых облаков. В случае современных кэноновских камер, поведение будет зависеть от ISO т.к. максимумы здорово пляшут.
Проблема с белым решается легко (можно просто по извлеченным данным его посчитать и если вдруг что - поправить), уровень черного чинится только внутри RawSpeed.
Клаусу напишу, но пока не починили - пользоваться RawSpeed лучше с учетом вышенаписанного.
Написанное про уровень черного касается только тех камер, где черный не вычитается на этапе записи RAW. Из распространенных - это Кэноны в первую очередь. Уровень белого касается практически всех.
Comments
Ну и как - есть какой-нибудь прогресс в этом вопросе у RawSp
Ну и как - есть какой-нибудь прогресс в этом вопросе у RawSpeed? А то ведь его теперь в darktable впилили...
Я на прошлой неделе делал SVN diff c той версией, которая оп
Я на прошлой неделе делал SVN diff c той версией, которая описана выше в посте.
Увидел разницу в обработчике .PEF (Pentax) - там есть специфический случай с фирмварью для K-5 (или K-r, я их путаю) и по сути - все.
Т.е. если прогресс и есть, я его не углядел. С Клаусом мы попереписывались тогда, а потом переписка заглохла как-то.
Печально...
Печально...