[back to Index]
LibRaw Project Goals and Objectives
Contents
- Who May Be Interested in This Project
- Goals and Objectives
- LibRaw Support Principles
Who May Be Interested in This Project
The proposed project and the software products generated within this project are intended for
- Developers of RAW converters, including current and new developments
- Those willing to write their own graphic interface for RAW file processing
- Developers and enthusiasts creating their own primary and auxiliary data processing algorithms,
including
- Interpolation (de-Bayer),
- Noise reduction
- White balance
- Correction of aberrations and distortions
- Color conversions (e.g., creation, editing and application of camera profiles )
- RAW data analysis
- Comparison of cameras and lenses
- and so on...
Among the few existing implementations of RAW converters, those based on the
dcraw utility by Dave Coffin are the most used.
It is hard to find a more or less popular camera that is not supported by this
utility; while the implementation of RAW data extraction in dcraw is of
a very high quality.
However, developers and enthusiasts who use or are going to use dcraw for
fulfilling the above-listed and similar objectives encounter a
number of difficulties. First, the author of dcraw refuses to turn his
product into a handy library, yet permitting anybody else to do so.
Besides, dcraw contains a number of questionable features which may
hinder its use without modifications, as well as instances of
distortions in the photographic sense of it. As a result, once every
several months, virtually all developers, part of them listed on the
dcraw Web site, independently convert each subsequent release of the
software into the library.
As for enthusiasts, the "entry cost" of verifying their own ideas and
implementing their own algorithms is often unreasonably high: they have
to either use the dcraw command line, thus being forced to use the
unavoidable early processing stages, or understand the source code and
maintain their own library based on it.
Thus, the inconveniences of dcraw make the developers' community quite
small and halt further evolution and improvement of RAW format
converters.
Goals and Objectives
We are going to create LibRaw in order to "get a library based on dcraw, only better". Thus:
- To "librarize" dcraw, i.e., to develop a stable and consistent API suitable for other applications
(RAW converters, data analyzers, panorama stitchers, etc.).
- To divide processing into independent parts (groups of API calls)
- Reading, decoding, and unpacking of RAW data: this is the main functionality of LibRaw
- Data conversions: interpolation, white balance, etc.
- File output of the processing results.
The latter two groups of functions are maintained primarily for dcraw compatibility testing.
- To improve the procedures of RAW data retrieval and decoding (see below for details)
- To supply other developers with a "framework" (freeware and open-source), e.g.,
for experimenting with their own methods of RAW data processing
(interpolation, noise reduction, white balance, etc.; some directions
of the possible efforts are listed above),
so that they could create their own GUI programs and interfaces without developing the entire RAW converter.
- To ensure easy modification for code synchronization with dcraw releases.
LibRaw Support Principles
- To reproduce the functionality of dcraw using its source code as the basis for our work; to
achieve binary identity of results generated by dcraw and by LibRaw-based utilities, provided the same processing settings are used.
- To eliminate the shortcomings of dcraw.
- To monitor future improvements in dcraw (support of new cameras, error correction,
use of better algorithms) and import them from dcraw to LibRaw.
- API modifications: the planned improvements will require extending
of the API. Such changes will be introduced in the form of large change-sets,
while the compatibility mode supporting older
applications based on the legacy API set will be preserved as long
as possible.
[back to Index]