(Р)эволюция продолжается: LibRaw 0.7.0 Alpha-0

Вышла LibRaw 0.7.0-Alpha0.

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

  • Можно отключить вычитание "нуля" (уровня черного) и замазывание нулевых пикселов
      В коде dcraw, частично прямо в процессе чтения RAW-данных (втч. для камер Canon), частично на стадии постобработки, производилось вычитание уровня черного и замазывание пикселов с нулевыми значениями. В результате, 'RAW' данные переставали таковыми быть.

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

      Эта функциональность поддержана для всех камер, кроме задников PhaseOne и камер на основе Foveon. PhaseOne имеют свои калибровочные данные, которые пока не лезут в структуры данных LibRaw, а копаться в коде Foveon нет желания по многим причинам.

  • Для некоторых камер доступны данные черной рамки
      Пресловутая "черная рамка" (маскированные пикселы) доступна через LibRaw API. Пока она читается только для небольшого набора камер (все Canon-ы, Adobe DNG, compressed Nikon NEF), но этот список будет расширяться. Конечно, рамка есть не у всех камер (скажем, у Sony A900 ее просто нет, а у Nikon D3 - есть, но пока непонятно какой толк с нее можно получить), но для тех у кого есть - для тех сделаем ее чтение. Скорее всего с исключениями: я не планирую заниматься Foveon-ом, а попытка считать рамку из файла Fuji S5 (который повернутый) ввела меня в депрессию. Но для большинства нормальных байеровских камер - сделаем (опять же, попытка разобраться в sRAW тоже ввела в депрессию, но в другую).

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

  • unprocessed_raw - тул для мезурбатора
      В попытках анализа RAW многие используют dcraw -D. Но немногие добрались до исходников и прочитали, что же такое "необработанный RAW" (а там вычитание черного, нормализация данных на полный диапазон и много всего другого веселого.

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

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

      В первую очередь, конечно, будут поддержаны интересующие меня камеры.

Скачать данную версию (включая и прекомпилированную Win32/Mac/Linux версию с готовым unprocessed_raw/.exe/) можно где обычно, там же имеется чуть более подробный Changelog.

Документация для разработчика включена в дистрибутив и лежит на сайте LibRaw

Comments

>попытка считать рамку из файла Fuji S5 (который повернутый) ввела меня в депрессию.

в отрыве от контекста звучит весело :-)))

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

Поэкспериментирую исчо, может подберу какой психотропный препарат подходящий.

А почему, кстати, у тебя такое неприятие Фовеона? ;-P

У меня нету неприятия как такового. Там проблемы с кодом Коффина, в нем надо или разбираться (и, скорее всего, переделывать) или просто забыть про его существование.
Пока нет конкурентоспособного продукта - нет смысла этим заниматься.

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

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