LibRaw 0.7.0 Alpha-0

Выпущена новая версия LibRaw: 0.7.0-Alpha0.

По мнению авторов, это - самый важный релиз, начиная с выпуска версии 0.6, а может быть и вообще с момента выхода первой публичной версии. Конечно, многие вещи еще недоделаны и будут доделываться далее, но уже добавленная функциональность слишком важна, чтобы ее прятать от тестирования. Более детально с изменениями можно ознакомиться в списке изменений и в документации, а в данном сообщении пройдемся по изменениям кратко:

  1. Процедуры вычитания уровня черного ("нуля") и замазывания пикселов с нулевыми значениями сделаны отключаемыми почти для всех камер. Исключениями являются камеры на Foveon (с этим кодом просто не хочется связываться) и задники PhaseOne (для которых вычетание черного сделано по метаданным камеры, а текущий вариант API не позволяет, отключив вычитание, сохранить нужные метаданные).
    В результате стало возможно делать нормальные (настоящие!) анализаторы RAW, равно как и приложения, которые занимаются вычитанием черного самостоятельно.
  2. Сделан API для хранения данных, не входящих в активную область изображения (так называемая черная рамка или маскированные пикселы). Собственно чтение таких данных сделано пока для небольшого количества камер (все камеры Canon /кроме формата sRAW/, DNG, Compressed NEF, некоторые камеры Kodak), но расширение этого списка можно сделать достаточно быстро.
    В результате, для тех камер, у которых данные черной рамки есть в RAW-данных можно делать всякие интересные штуки, вроде подавления banding или расчета уровня шума по каналам.
  3. В поставку включен пример unprocessed_raw, который строит из RAW-файла его полный дамп в TIFF (16-битный, grayscale), причем весь процессинг полностью отключен, а для камер, для которых извлекаются данные рамки - эта рамка включена в выдачу.
    Для целей анализа RAW данный пример гораздо лучше, чем dcraw -D, ибо весь процессинг действительно выключен.

    Скачать эту версию можно, как и всегда, на странице "скачать". Не забывайте, что это - альфа-версия, которая тестировалась на очень небольшом подмножестве файлов.

Comments

Чем вам можно помочь?

Я, естественно, заинтересован в поддержке моей камеры :)
Но, с другой стороны, я вполне себе программист.
Помощь нужна?

Кстати, вы проверялись на пентаксовских а не адобовских DNG?

Помощь - нужна!

Все зависит от количества усилий, которые хочется/можется потратить.

"по мелочи" я, честно говоря, не готов принимать помощь, ибо нужно делать всякие штуки, которые на бумаге никак не сформулированы и их быстрее делать, чем формулировать.

Если же имеются силы вложиться относительно крупно (пара недель работы в сумме - за несколько месяцев), то весь код разбора метаданных ждет своего бойца. Это identify() и сопутствующие функции в dcraw.c, их надо полностью порефакторить на что-то хорошее. Например, на exiv2 (несмотря на GPL license), хотя если есть библиотеки с более свободной лицензией (LGPL или BSD), то этот фактор конечно надо принимать во внимание с относительно большим весом.

Да, везде выше речь про LibRaw. Ни о каком "RAW-конверторе" пока речи нет :)

Что касается DNG, то естественно тестировались на разном. DNG от K10D в тестовой коллекции тоже лежит, рамка из него извлекается похожая на правду.

Хм... Приличных

Хм... Приличных EXIF/метаинформционных-библиотек я знаю только одну, и та на перле :( exiv2 и прочее как-то очень бедненько и неудобненьео, по крайней мерез полтора года назад было :(

А как на счёт его PEF?

PEF-ы обрабатываются в том же

PEF-ы обрабатываются в том же объеме, что и у dcraw (KM - не поддерживается, K200D - поддерживается условно. Или это у меня пример от K200D /адын штук/ битый, надо разобраться).

Считывание черной рамки - поддерживается в той версии LibRaw, что есть у меня на машине, сегодня-завтра она станет 0.7-Alpha1. Польза от черной рамки на K20D похоже что может быть, на остальные внимательно не смотрел.

Что касается Exif: не стоит задачи интерпретации значений (чем занимается Exiftool), точнее стоит, но в относительно небольшом количестве:
* минимум: make/model, размеры картинки, способ сжатия, баланс белого,
тоновые кривые
* медиум: +ISO, экспозиция, версия firmware
* максимум: параметры оптики.
(точный список Илья готовит.... уже долго :)

А все остальное нужно запихать в какие-то структуры данных никак не интерпретируя их, пусть этим дальше вызывающее приложение занимается, там всей задачи - записать в выходной файл или юзеру показать.

Просто тот ужас, который в dcraw - он же вообще ни в какие ворота.

Но тут ситуация такая же - я на самом деле не знаю, что хочется от exif. Хочется, наверное, что-то более поддерживаемое: нужно отделить разбор от принятия решений внутри библиотеки.

Я сам скорее всего раньше марта за это место не примусь

У десятки тоже от чёрной

У десятки тоже от чёрной рамки должен быть смысл -- тот самый бандинг.

Список чего готовит Илья? Оптики или необходимых данных? Вообще, есть большое желание Image::Exiftool переписать на С++... Очень он хороший.

Хочется, наверное, что-то более поддерживаемое: нужно отделить разбор от принятия решений внутри библиотеки.
Это ясно, да. Вернусь домой -- посмотрю что там сейчас и какие библиотеки есть нынче.

Классификацию Exif-данных на

Классификацию Exif-данных на кучки.

А переписать ExifTool - желание благородное, но там 75 KLOC (конечно, с большим количеством комментариев), причем на C/C++ оно будет еще более громоздким т.к. в перловой версии активно используются closures.

Ну а зачем при этом нужно в RAW-конверсии (первых 5 версиях конвертора) расстояние фокусировки (доступное не везде и т.п.) - вопрос для меня открытый.

> Ну а зачем при этом нужно в

> Ну а зачем при этом нужно в RAW-конверсии (первых 5 версиях конвертора) расстояние фокусировки (доступное не везде и т.п.) - вопрос для меня открытый.

а коррекция искажений от линзы - она же вполне может зависить от того насколько близко/далеко мы фокусируемся (даже если в некоторых raw оно задается значениями типа "близко", "далеко" а не метрами/футами)... Panasonic уже продавил с LX3 коррекцию искажений в SilkyPix, Capture One и ACR/LR... хотя в "первых 5 версиях конвертора" оно может и не надо.

Я вот на эту тему все думаю и

Я вот на эту тему все думаю и все не вижу верного ответа из двух возможных
* с одной стороны, мы можем распарсить все метаданные и тогда расстояние фокусировки будет доступно везде в готовой переменной.
* а с другой - коррекция искажения от линзы будет специфичной для группы тушек, а значит сможет скушать метаданное и в виде exif-блока

Ну, тут главное -- написать

Ну, тут главное -- написать инфраструктуру удобную. А дальше добавлять форматы по мере надобности. В эти 75KLOC входит же и чёртова туча форматов, которые особо для RAW-бибилиотеки не нужны, их можно добавлять в последующийх версиях.

Поправка. K200D

Поправка. K200D поддерживается (в примерах у меня был битый файл, заменил).

Шум там вроде как-то вычтен. Несмотря на это, черная рамка может быть, как минимум, показателем уровня шума, в ней шевеление какое-то видно.

XMP это немного не в ту

XMP это немного не в ту степь, но я сужу конечно по тому, что написано на ее страничке, не заглядывая в пузо.

В пузо я тоже не глядел, но

В пузо я тоже не глядел, но данные Exif из JPEG в Niepce Digital, который Exempi использует, я видел собственными глазами :)

Слушай, Алексей, а ты

Слушай, Алексей, а ты пользовался NeatImage / NoiseNinja? По идее, такие тулы тоже могли бы сильно выиграть от работы ДО дебаера и баланса белого....

Очень много что может

Очень много что может выиграть от такого: focus stacking, понижение шума, панорамы и так далее.

До баланса белого - нет. До

До баланса белого - нет. До дебайерезации - да, но там иные методы используются, не те, что в NW/NN.