Вышла
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 Автоматический кросс-пост из
блога автора.