LibRaw

Про LibRaw, RPP, баланс белого, FRV, UniWB и синергию

Чудовищный получился заголовок, но отражает суть.

Как я уже писал, RPP переходит на LibRaw для разбора RAW-данных. Пытливые пользователи заметили, что мы разбираем не все пресеты баланса белого у камер Kodak. Разобрали и их. Потом увлеклись и разобрали эти пресеты еще и для камер Canon, Olympus, Sony (и будем стараться поддержать еще).

Дальше, зоркий глаз заметил, что в баланс, который мы называем Camera Auto - пишется баланс белого, определенный датчиком камеры, даже если для съемки использовался какой-то пресет...

Просьба к пользователям Nikon Coolscan

Уважаемые пользователи Nikon Coolscan, если таковые еще есть среди моих читателей!

К вашему сканеру прилагается программа Nikon Scan. Она умеет писать NEF-файлы. У меня даже один такой есть.

Хочу вот прикрутить поддержку этих файлов к RawDigger и FastRawViewer. Да и вообще, к LibRaw, пусть все LibRaw-based программы тоже этого могут.

Но для тестирования - одного файла явно маловато.

Пожалуйста, ради легкости работы затем (с тем же FRV), возьмите любой кадр, отсканируйте его в 8- и 16-битном режиме, положите куда-нибудь, откуда легко скачивать файлы и пришлите ссылку мне. Можно в комментариях к этой записи, можно личной почтой на lexa@lexa.ru. Идеально - два кадра, слайд и негатив.

Вам же будет лучше.

P.S. На текущую минуту идеи приделывать инверсию негативов к FRV/RD нет, то есть это больше для слайда. Но если будет заметный спрос - приделаем.

P.P.S. Пойду еще в club.foto.ru напишу

P.P.P.S Мне тут в коменты спросили "подождет ли до выходных", а я вместо того, чтобы опубликовать (анонимный) комментарий - его ошибочно стер. Рука дрогнула. И у меня ничего, ни координат ни возможности стертое восстановить. Да, конечно подождет.

LibRaw 0.16 (релиз)

Вышла LibRaw 0.16-Release.

Все существенные изменения тут описывались, детальнее - смотрите в Changelog в дистрибутиве.

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

Ситуация с более старыми версиями:

  • 0.16 - поддержка новых камер будет добавляться, баги - исправляться, до выхода 0.17-беты.
  • 0.15 - если будут найдены существенные баги ("в безопасности") - будут исправления.
  • 0.14 - лежит на сайте, обновлений никаких не будет.
  • 0.13-0.12 - удалена с сайта, забыли и проехали. Требуйте от ваших вендоров обновлений.
Если кто пользуется darktable, передайте автору, что с 0.14.7 хорошо бы перескочить на 0.14.8 (последняя в ветке 0.14), а лучше на 0.15.4, а еще лучше - на 0.16

Отдельно хочу заметить, что за 8 месяцев с релиза 0.15.0 были добавлены 47 камер. То есть темп "полторы камеры в неделю" - индустрия уверенно держит.

LibRaw 0.16 Beta1

Собрался с силами, и выпустил LibRaw 0.16 Beta1.

Полный Changelog там есть, поэтому я кратко про эту версию:

  • Поддержано 12 новых камер (относительно Alpha3, которую я тут не анонсировал, но это за месяц с ее выхода 22.10). Всего их стало 613, если я в списке поддержаных ничего не пропустил.
  • Обновлены цветовые данные еще для пяти, теперь у всех поддержаных - полноценный профиль.
  • Финализирована новая поддержка Foveon: поддержаны маленькие и промежуточные размеры для старых камер (SD9-SD15
  • ...

LibRaw 0.16 Alpha2

Тем временем, зарелизилась LibRaw 0.16 Alpha2.

Основные изменения касаются Фовеонов:

  • LibRaw теперь знает размер черной рамки на всех фовеоновских камерах.
  • Для SD1 и всех Merrill-ов есть приемлемый цветовой профиль.
  • Для DPxx (pre-Merrill) цветовой профиль весьма приблизительный.
  • Исправлен memory leak в используемой библиотеке x3f-tools.
Но и для остальных камер произошли заметные изменения:
  • Поддержаны камеры (включая цветовые данные т.е. dcraw_process() нормально работает):
    • Canon Powershot G16
    • Hasselblad Lunar, Stellar
    • Pentax K50, K500, Q7
    • Samsung Galaxy NX (EK-GN120)
    • Sony NEX-5T
  • Поддержаны камеры без цветовых данных (работает распаковка RAW, определение черной рамки, установка уровня черного т.е. все фазы до dcraw_process(). Постпроцессинг даст условный цвет)
    • Canon Powershot S120
    • Fujifilm X-A1
    • Nikon Coolpix P7800
  • Дополнительные проверки размера файла, позволяющие отвергнуть битые данные на более ранней стадии.
  • Исправлена несовместимость DHT-демозаики с реализацией OpenMP компилятором MS Visual Studio.

LibRaw 0.16 (Alpha1)

Мастер-версия LibRaw получила официальный номер 0.16-Alpha1 и доступна для скачивания.

Это означает, что все глобальные идеи по развитию закончились (на ближайшее время) и нестабильности API - не ожидается. Сама по себе 0.16 достаточно стабильна, в RawDigger используется именно эта версия (и всегда используется "девелоперская", а не "стабильная"), проблем не было.

С полным списком изменений относительно версии 0.15 можно ознакомиться в changelog, ниже откомментированы основные места:

  • Добавлено 19 новых камер. Добавлять поддержку новых камер
  • ...

О "списках уязвимостей в программах"

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

Читаем:

LibRaw версии до 0.15.1

LibRaw-demosaic-pack-GPL2 версии до 0.15.1

LibRaw-demosaic-pack-GPL3 версии до 0.15.1

Имею сказать:
  • Не являясь специалистом в области ИБ, не могу сказать, является ли выход за пределы массива по фиксированному(!) адресу +4GB-1 (потому что там всегда 0xffffffff в индексе) возможностью выполнения произвольного кода. Возможно. Равно как является ли проблемой такой псевдокод a = malloc(..); free(a); free(a);. Возможно.
  • Эти проблемы в LibRaw 0.15.0 - были. Возможно, они серьезные, хотя мне так не кажется. Представить, что "удаленного пользователя" допустят до кода коррекции экспозиции - не могу.
  • Вот что я знаю точно:
    • Этих ошибок нет в LibRaw-demosaic-pack-GPL3, оно тут никоим боком.
    • этих ошибок нет в "версии до 0.15.1". Они есть в 0.15.0, а ветки 0.7...0.14 - не подвержены (по причине отсутствия соответствующего кода).
    Что позволяет мне предполагать, что никакого анализа никто не делал.

    SecurityFocus пишет что дескать vendor reported. Но ни одна скотина не пыталась сконтактировать с вендором и узнать подробностей.

Я собственно к чему - что теперь читая всякие security reports буду делить минимум на десять.

Upd: я не хочу спорить с наличием ошибок (они были, программы, как минимум падали). Мой поинт в том что

  • Если вы вендор - не надо репортить проблемы подробно (double call to free), все что вы написали - будет использовано против вас. Пишите просто "исправлена ошибка в обработке битых файлов Foveon"
  • Авторы этих репортов - не анализируют что сделано на самом деле, в каких версиях была ошибка и т.п. Соответственно нужно к этим репортам относиться: наличие репорта не означает проблемы (а отсутствие - отсутствия проблемы).

Про LibRaw C API

Граждане разработчики!

Кто-то, не помню когда, не помню где (в почте - не нашел!) просил у меня сделать аналог LibRaw::COLOR(row,col) (т.е. номер канала байера у конкретного пиксела) в C-API

Т.к. почты спрашивающего не нашел, могу только сделать объявление. А единственное место для объявлений у меня тут.

Я его вам сделал. libraw_COLOR(...). Есть в master (девелоперском) бранче на GitHub.

LibRaw 0.15.1

Вот кто видел версию .0, чтобы сразу работала? Правильно, никто!

LibRaw 0.15.1:

  • Исправлен неверный расчет максимума данных для файлов Panasonic
  • Проверка на выход за пределы буфера в коде коррекции экспозиции

Берут где всегда

LibRaw 0.15.0 Release

LibRaw 0.15 уже давно используется в боевых проектах (скажем, в RawDigger), собственно я ее ради RawDigger и правил на ходу и она всегда была "релизного качества".

Пришла пора эту релизность формально закрепить, а версию 0.14 начать предавать забвению.

Вот наиболее важные изменения, суммированные по всем бетам:

Поддержка новых камер

  • Adobe DNG: поддержка Fast Load DNG (LightRoom 4.x), поддержка lossy-compressed DNG (LR 4.x, необходима сборка с libjpeg 6+)
  • Canon: G1 X, SX220 HS, EOS
  • ...

LibRaw 0.15.0-Beta4

Тем временем вышла LibRaw 0.15 Beta4.

Изменения:

  • Исправлено возможнле переполнение буфера, возникавший при использовании библиотеки RawSpeed для распаковки некоторых форматов файлов (проявилось на Samsung NX-100, но вообще подвержены очень многие некомпрессированные форматы)
  • Добавлены новые методы
    C++ API: LibRaw::recycle_datastream(),
    C API: libraw_recycle_datastream()
    и новый код ошибки LIBRAW_INPUT_CLOSED для вызовов unpack/unpack_thumb()

    Эти методы/вызовы позволяют освободить file handle (и ассоциированные буферы), если ваше приложение больше не собирается вызывать unpack() или unpack_thumb() и, сдедовательно, может разблокировать файл и освободить память, которая использовалась для чтения RAW-файла.

  • Поддержаны Multishot-файлы Imacon Ixpress 39Mpix
Первое изменение - это замазывание ошибки в RawSpeed, за буфер вылазит именно она (а значит надо дать буфер побольше). Это - цена оптимизации, выбирать по k бит и каждый раз проверять не вылезли ли - очень дорого.

LibRaw 0.15.0-Beta3

Вышла LibRaw 0.15-Beta3, доступна в обычном месте.

Никаких серьезных внутренних изменений нет, только поддержка новых камер:

  • Canon 6D и EOS M
  • Casio EX-ZR100
  • Fujifilm X-E1
  • Leica D-LUX6 and V-LUX4
  • Nikon P7700
  • Olympus XZ-2
  • Panasonic G5
  • Samsung EX2F
  • Sony RX-1

О процессинге RAW: плавучка или целое

Обработка RAW в плавучке позволяет избавиться от артефактов вылета за диапазон, да и вообще получить более качественную картинку.

Тем интереснее обратные случаи.

Возьмем вот такой вот кадр:

Это D800 с его приколами в светах, вот на света и посмотрим.

Если обработать картинку dcraw (или LibRaw, которая дает побитово такой же процессинг, если автоматическое определение максимума отключить), то в светах в "середине верха кадра" мы увидим...

LibRaw 0.15.0-Beta2

По традиции, анонсирую LibRaw 0.15-Beta2

Полный changelog доступен у библиотеки в гнезде, а тут я остановлюсь только на самом существенном:

  • Поддержано 20 новых камер:
    • Canon: G15, S110, SX50
    • Fujifilm: F800EXR, XF1
    • Nikon: 1 J2, 1 V2, D600
    • Olympus: E-PL5, E-PM2
    • Panasonic: FZ200, GH3, LX7
    • Pentax: K-5 II, K-5 IIs, K-30, Q10
    • Sony: SLT-A99, NEX-5R, NEX-6
  • RawSpeed может использоваться не только для байеровских данных, но и для полноцветных (3-цветные DNG, sRAW).
    Правда если вы
  • ...

LibRaw 0.15.0-Beta1

Зарелизилась LibRaw 0.15 Beta1.

Изменения:

  • Правильная установка размеров видимой области для Nikon D800E
  • Поддержка DNG-файлов сделанных из RAW Fuji X-Pro1
  • Встроенные описания камер для RawSpeed обновлены до версии r479
  • Win32/C-API: добавлены вызовы libraw_open_wfile/libraw_open_wfile_ex()
  • Новый бит в поле process_warning LIBRAW_WARN_RAWSPEED_UNSUPPORTED, устанавливается (вместе с LIBRAW_WARN_RAWSPEED_PROBLEM) если RawSpeed сообщила, что камера не поддерживается.
  • Запрещена распаковка библиотекой RawSpeed для некоторых форматов (которые распаковываются несовместимо с дальнейшей обработкой LibRaw.

В даунлоадах выложены и бинарники (Win32/Mac), но без поддержки RawSpeed (дабы не гемороиться с лицензией), нужен 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 о которых ниже)...

LibRaw+RawSpeed=LibRaw :)

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

LibRaw 0.15.0-Alpha3

В LibRaw 0.15.0 Alpha3 возвернуты те улучшения, которые были/есть в 0.14, но которые были временно удалены из девелоперской 0.15-Альфа1-2:
  • Быстрый декодер LJPEG
  • OpenMP-ускорение в AHD/PPG-интерполяторах и в Wavelet Denoise
  • OpenMP-ускорение в вызове raw2image_ex()
  • Патчи для совместимости с LCMS1
В результате на 4-ядерной виртуальной машине dcraw_emu примерно в 1.5 раза быстрее dcraw на обработке моего обычного тестового набора из 339 RAW.

Несмотря на 'alpha' в названии версии, она может считаться стабильной в смысле качества работы. Вот ABI/API пока не устоялось, "есть еще пара идей", оттого и альфа.

А предыдущая альфа-2 сегодня попала в девелоперскую KDE 4.10, можно пользовать оттуда.

Upd: alpha-3 уже тоже в девелоперской KDE.

Pages

Subscribe to LibRaw