Выпущена новая версия LibRaw: 0.7.0-Alpha0.
По мнению авторов, это - самый важный релиз, начиная с выпуска версии 0.6, а может быть и вообще с момента выхода первой публичной версии. Конечно, многие вещи еще недоделаны и будут доделываться далее, но уже добавленная функциональность слишком важна, чтобы ее прятать от тестирования. Более детально с изменениями можно ознакомиться в списке изменений и в документации, а в данном сообщении пройдемся по изменениям кратко:
- Процедуры вычитания уровня черного ("нуля") и замазывания пикселов с нулевыми значениями сделаны отключаемыми почти для всех камер. Исключениями являются камеры на Foveon (с этим кодом просто не хочется связываться) и задники PhaseOne (для которых вычетание черного сделано по метаданным камеры, а текущий вариант API не позволяет, отключив вычитание, сохранить нужные метаданные).
В результате стало возможно делать нормальные (настоящие!) анализаторы RAW, равно как и приложения, которые занимаются вычитанием черного самостоятельно. - Сделан API для хранения данных, не входящих в активную область изображения (так называемая черная рамка или маскированные пикселы). Собственно чтение таких данных
сделано пока для небольшого количества камер (все камеры Canon /кроме формата sRAW/, DNG, Compressed NEF, некоторые камеры Kodak), но расширение этого списка можно сделать достаточно быстро.
В результате, для тех камер, у которых данные черной рамки есть в RAW-данных можно делать всякие интересные штуки, вроде подавления banding или расчета уровня шума по каналам. - В поставку включен пример 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 поддерживается (в примерах у меня был битый файл, заменил).
Шум там вроде как-то вычтен. Несмотря на это, черная рамка может быть, как минимум, показателем уровня шума, в ней шевеление какое-то видно.
Exiv2 за полтора года нехило
Exiv2 за полтора года нехило подросла
хотя если есть библиотеки с
хотя если есть библиотеки с более свободной лицензией (LGPL или BSD)
Ну конечно же есть :)
XMP это немного не в ту
XMP это немного не в ту степь, но я сужу конечно по тому, что написано на ее страничке, не заглядывая в пузо.
В пузо я тоже не глядел, но
В пузо я тоже не глядел, но данные Exif из JPEG в Niepce Digital, который Exempi использует, я видел собственными глазами :)
Слушай, Алексей, а ты
Слушай, Алексей, а ты пользовался NeatImage / NoiseNinja? По идее, такие тулы тоже могли бы сильно выиграть от работы ДО дебаера и баланса белого....
Очень много что может
Очень много что может выиграть от такого: focus stacking, понижение шума, панорамы и так далее.
До баланса белого - нет. До
До баланса белого - нет. До дебайерезации - да, но там иные методы используются, не те, что в NW/NN.