[вернуться к оглавлению]

Цели и задачи проекта LibRaw

Содержание

  1. Кому может быть интересен этот проект, и что мы хотим получить
  2. Цели и задачи
  3. Принципы сопровождения LibRaw
  4. Произведенные улучшения dcraw
  5. Планируемые улучшения

Кому может быть интересен этот проект

Предлагаемый вашему вниманию проект и порождаемый им программный продукт предназначены для:

Среди существующих сегодня относительно немногочисленных реализаций распаковки RAW-данных, получаемых с цифровых фотокамер наиболее распространены и наиболее широко используются реализации на основе утилиты dcraw, написанной Dave Coffin. Ее популярность связана с тем, что трудно найти сколько-нибудь распространённую камеру, которая не была бы поддержана данной утилитой, а сам уровень поддержки распаковки весьма хороший.

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

Для энтузиастов же «входная стоимость» возможности проверки собственных идей и реализации собственных алгоритмов оказывается, зачастую, непомерно высокой: нужно либо пользоваться командной строкой dcraw (что приводит к обязательному использованию неотключаемых ранних стадий обработки), либо разобраться в исходном коде dcraw и поддерживать собственную библиотеку на ее основе.

Таким образом, неудобства, присущие dcraw, значительно сужают сообщество разработчиков и тормозят процесс развития и совершенствования конверторов RAW-формата.

Цели и задачи

При создании LibRaw мы хотим "получить библиотеку на основе dcraw, только лучше":

  1. "обиблиотечить" dcraw, т.е. разработать стабильный и консистентный API, пригодный для использования в других приложениях (RAW-конверторах, анализаторах данных, склейщиках панорам и так далее).
  2. Разделить на независимые части (группы вызовов API): Две последние группы функций поддерживаются, в первую очередь, для целей тестирования совместимости с dcraw.
  3. Улучшить процедуры извлечения и раскодирования RAW-данных (подробнее - ниже)
  4. Дать другим разработчикам "рамку" (бесплатную и в открытых исходниках) в которой можно было бы, например, экспериментировать со своими способами обработки RAW-данных (интерполяция, шумопонижение, баланс белого и так далее, возможные варианты приложения своих усилий частично перечислены выше), и создавать свои графические оболочки и интерфейсы не разрабатывая RAW-конвертор целиком.
  5. Обеспечить лёгкость внесения изменений для синхронизации кода с релизами самой dcraw.

Принципы сопровождения LibRaw

  1. Повторить функциональность dcraw, взяв ее исходные тексты за основу, добиться бинарной идентичности (при одинаковых настройках) результатов работы dcraw и утилит на основе LibRaw.
  2. Избавляться от недостатков dcraw (о некоторых из них см. ниже улучшения dcraw и план работ).
  3. По мере совершенствования dcraw (поддержка новых камер, исправление ошибок, улучшение алгоритмов) - импортировать улучшения из dcraw в LibRaw.
  4. Изменения API: запланированные улучшения потребуют расширения API. Такие изменения будут делаться большими change-set-ами, а режимы совместмости со старыми приложениями будут сохраняться, насколько возможно.

Произведенные улучшения dcraw

На момент написания данного текста в LibRaw внесены следующие дополнительные улучшения относительно исходного кода dcraw:

Планируемые улучшения

Код dcraw нуждается в существенных изменениях и дополнениях:

В то же время, никаких модификаций и расширений кода обработки данных dcraw (де-байеризация, цветовые преобразования и так далее) мы производить не планируем, это все должно быть задачей вызывающего приложения. Стандартные режимы обработки, включенные в dcraw (за исключением поддержки LCMS и libjpeg и некоторых несущественных этапов обработки) будут сохранены неопределенное время (в наборе вызовов API, эмулирующих dcraw).

[вернуться к оглавлению]
LibRaw Team
Last modified: Mon May 4 22:11:50 MSD 2009