rawspeed

RawDigger + RawSpeed, вторая попытка

Если репортить об ошибках, то они будут исправлены. Качаем-тестируем RawDigger+RawSpeed, вторую попытку:

Исправлена "ошибка строчной развертки" для форматов, где использовался RawSpeed, а длина строки RAW была некратна 8. Таких, на удивление, немного.

Пишу новым сообщением для тех, кто через RSS читает.

Mac: RawDigger+RawSpeed

Граждане фотографы-маководы!

Помимо виндовой версии, RawDigger с встроенным RawSpeed теперь доступен и для Mac:

Качаем: по ссылке из этого поста

Это альфа-версия: тестировано на нескольких маках, теперь хочется на живых тестерах.

Что изменилось:

  • Открытие файлов .CR2, .NEF, compressed-.DNG - должно стать заметно быстрее. Файлов .ARW, .PEF, .SRW, .ORF, .RW2 - несколько быстрее (незаметно).
  • Для файлов с камер Sony (не всех) - значения пикселов и уровня черного умножатся на 4.
Других видимых изменений быть не должно, все остальное должно быть как в версии 0.9.12. Если у вас изменилось что-то еще, особенно в худшую сторону - пишите.

Второе невидимое (я надеюсь) изменение - это переход с Qt 4.8.1 на Qt 4.8.3.

Update: достоверно известно о глюках со старыми .CR2 (30D, 5D), репортить уже не надо.

RawDigger + RawSpeed = RawDigger

Можно попробовать: качаем по ссылкам из этого поста.

В чем фишка:

Большие файлы CR2, NEF, жатые DNG - открываются на 300-500мс быстрее на быстрой машине (i7-2600k@4.5Ghz), на медленных разница должна быть еще заметнее. На других поддерживаемых RawSpeed форматах (Sony, Panasonic, Olympus, Pentax, Samsung) - разница тоже есть, но не такая большая. Все неподдерживаемые форматы открываются, как и ранее, LibRaw.

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

Сравнить можно открыв закладку Preferences, менять положение галки и жать Apply. Если при этом не меняются статистики, гистограммы и т.п. - то все отлично.

Что мне интересно:

  • Есть ли какие-то форматы кроме Sony, где данные и/или результаты рендеринга заметно отличаются. Тестовые файлы пока не нужны, достаточно марки камеры.
  • Может оно вообще глючит и не работает, тоже интересно.
Про Sony:

RawSpeed возвращает значения пикселов для Sony в 4 раза бОльшие, чем LibRaw. Это ни на что не влияет в реальной жизни. При этом, конечно, на такое плавание уровня черного машинка не рассчитана и при нажатии Apply и стоящей галке 'Reset Black Level on file load' - ничего не поресетится в диалоге.

Это нормально и надо забить т.к. в следующих версиях поддержка Sony RawSpeed-ом будет отключена: разница в скорости для этого формата копеечная (не сотни миллисекунд как для CR2, а десятки), изменение значений в 4 раза рвет башню, а всякие полезные вещи вроде 'ARW2 Hack' и отключения тоновой кривой - не работают т.к. RawSpeed ничего такого не умеет.

Update: достоверно известно о глюках со старыми .CR2 (30D, 5D), репортить уже не надо.

LibRaw+RawSpeed=LibRaw :)

RawSpeed - это такая библиотека раскодирования RAW, которая:
  1. Очень быстрая (к примеру, 21-мегапиксельный файл от Canon 5D2 распаковывается на моей машине за 230мс, а код на основе dcraw делает это за 750мс. Притом, это сильно улучшенный мной код, до улучшений было больше секунды, насколько я помню).
  2. Поддерживает мало форматов, правда все они популярные (свежие камеры Canon, Nikon, Olympus, Panasonic, Pentax, Samsung и DNG-файлы).
Авторы darktable давно просекли эту фишку и используют LibRaw как fallback на неизвестных камерах, а как основную библиотеку для открытия RAW - используют RawSpeed.

В то же время, RawSpeed распаковывает данные в буфер с очень похожим (но немного разным) форматом, поэтому использовать RawSpeed в качестве читалки файлов изнутри LibRaw (но иметь при этом единый API, единый постпроцессинг и т.п.) - было делом техники. И эта техника - применена в LibRaw 0.15-Alpha4.

Что получилось

  • LibRaw::open_file()+LibRaw::unpack() /т.е. распаковка/ - в ~3 раза быстрее на CR2, в ~2-2.5 раза быстрее на NEF, в 1.5-2 раза быстрее на прочих поддерживаемых форматах. Реально это заметно на больших NEF и CR2 (выигрыш в 400-500 миллисекунд на моей i7-2600K @4.5Ghz), соньки и раньше распаковывались быстро, а у остальных форматов редко бывают совсем уж большие файлы.
  • dcraw_emu -h ..список из 182 файлов.. - без RawSpeed было 150 секунд, стало 100 секунд. Разница "не в 2-3 раза" потому что постпроцессинг не изменился (хотя с -h он и так быстрый)

О Rawspeed

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

Вспомнив, как я три месяца назад брызгал слюной в направлении RawSpeed сделал svn up, чтобы убедиться, что слюна не подействовала (я в личной переписке автору тоже все рассказал).

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

Я рад. И за RawSpeed и за использующих ее приложения.

Rawspeed: записки на манжетах

Есть такая библиотека RawSpeed, которая натурально написана с душой и склонностью к правильным оптимизациям. Например, файлы .CR2 распаковываются раз в пять быстрее чем это делает LibRaw.

В стремлении эту несуразность поправить, фтыкаю в ее исходники одним глазом, вторым и третьим - в результаты прогона профайлера на LibRaw и RawSpeed на одном и том же файле.

И вижу интересное (в исходниках, не в профайле): Canon 1D Mark III обрабатывается у Коффина в dcraw (и у нас) специфическим способом. Там, как обычно, грубый хак, но работающий. Касается этот хак буквально двух пикселов по ширине на рамке, видимой части изображения - не касается. Ага, сказали мужики и достали лом побольше пошаговый отладчик и grep.

Зная, что меня читают некоторые пользователи RawSpeed, имею сказать, исключительно в информационных целях:

  • RawSpeed извлекает уровень черного только из DNG и NEF, в остальных случаях берется predefined-значение из базы данных по камерам.
  • Уровень черного - это одно число. Даже не два, как в LibRaw/dcraw и не сложная структура, как оно бывает в некоторых камерах вроде PhaseOne (да и DNG - тоже. DNG-шные теги усредняются).
В результате будет два интересных эффекта:
Subscribe to rawspeed