LibRaw 0.15.0 Release

LibRaw 0.15 Release available for download and use
New camera/format support

  • Adobe DNG: fast Load DNG (LightRoom 4.x), support for
    lossy-compressed DNG (LR 4.x, requires libjpeg 6+)
  • Canon: G1 X, SX220 HS, EOS 5D Mark III, EOS 650D, EOS 1D-X,
    100D (Rebel SL1), 700D (Rebel T5i), 6D, EOS M, G15, S110, SX50
  • Casio: X-S1, HS30EXR, X1-Pro, EX-ZR100,EX-Z8
  • Fujifilm: X-E1, X20, X100S, SL1000, HS50EXR, F800EXR, XF1
  • Leica: D-LUX6 and V-LUX4
  • Nikon: D4, D3200, D800, D800E, 1 J2, 1 V2, D600, 1 J3, 1 S1, Coolpix A,
    Coolpix P330, Coolpix P7700, D7100
  • Olympus: E-M5, XZ-2, XZ-10, E-PL5, E-PM2
  • Panasonic: G5, G6, DMC-GF5, FZ200, GH3, LX7
  • Pentax: MX-1, K-5 II, K-5 IIs, K-30, Q10
  • Samsung: EX2F, NX20, NX210, support for the new firmware for NX100
  • Sigma: SD15, SD1, SD1 Merill, DP1, DP1S, DP1X, DP2, DP2S, DP2X
    (only with Demosaic-pack-GPL2)
  • Sony: SLT-A58, RX-1, SLT-A99, NEX-5R, NEX-6, NEX-F3, SLT-A37, SLT-A57
  • Multishot files: Imacon Ixpress 39Mpix

API changes

  1. dcraw_process() can now be called several times with different parameters
    without re-opening and unpacking the file for second and consecutive
    calls to dcraw_process
  2. Deleted (nobody uses those)
    • LibRaw::dcraw_document_mode_processing (and respective C-API)
    • imgdata.color.color_flags data field
  3. LibRaw::unpack() now decodes data into different buffers, the buffer
    depends on the raw data type
    • imgdata.rawdata.raw_image - 1 color component per pixel,
      for b/w and Bayer type sensors
    • imgdata.rawdata.color3_image - 3 color components per pixel,
      sRAW/mRAW files, RawSpeed decoding
    • imgdata.rawdata.color4_image - 4 components per pixel, the 4th
      component can be void
  4. Support for compiling with RawSpeed library, http://rawstudio.org/blog/?p=800
    details are in README.RawSpeed
  5. Suppression of banding
  6. New API calls
    • recycle_datastream(),
    • open_file(wchar_t*) (Win32)

LibRaw-contrib repository

New LibRaw-contrib repository is added to LibRaw's GitHub account.

This repository is for code, contributed by LibRaw users, but not included into main LibRaw source tree.

For now only one project is present in the repo:

raw2tiff

This program converts a raw image-(such as canon's cr2 or nikon's nef) to a tiff image. It accomplishes this using the libraw library available at www.libraw.org. It emulates the dcraw -D -4 -T command. It has only been tested using canon CR2 files.

LibRaw 0.14.0 (Release)

After three months of testing the LibRaw 0.14 is considered stable. This version is recommeded to use instead of LibRaw 0.13.

The most significant change of this version is multiple rendering (via LibRaw::dcraw_process() calls) of same RAW data without re-opening RAW file through the sequence of open()/unpack() calls. You should be able to change any processing parameters (except shot_select parameter) between dcraw_process() calls.

So, it is possible to implement near-realtime preview of entire image in half-resolution mode and realtime preview of selected area (e.g. around mouse pointer position) in full-resolution mode.

Changelog:

Displaying L channel in Photoshop

Once in a while one may want to adjust L channel viewing it separately. The rub is that to do this without using extra layers one needs either to use grey Lstar profile as grey working space in Photoshop Color Settings (Cmd/Ctrl-K), or to switch on Show Channels in Color in Photoshop Interface Preferences (Cmd/Ctrl-K). Otherwise the brightness and contrast of the L channel display are wrong.

Here are some screen shots to illustrate why one might care.

Here is a b/w image in Lab:

Festina Lente

For quite some time we were suggesting that floating point implementation of demosaicking algorithms allows for higher quality results. Incidentally, some programmers who vigorously argued for years insisting integer processing is quite sufficient are now starting to code their demosaicking in floating point too. Here is a comparison of the results of original AHD demosaicking algorithm implemented using floating point and integer arithmetics.

Bayer moire

With the existing diversity of RAW converters and their algorithms, there is the problem of choice: which converters are better (and for which purposes). An evident methodology is often encountered in internet forums: take one or several images, process them using different converters/algorithms/settings and compare them visually. The result often looks like this: image P should better be processed using algorithm Q, and image A is better handled by algorithm Z with option f+.

Moreover, it is simply wrong to analyze things in terms worse or better . The correct formulation is closer to/farther from the initial image .

The problem is that here we deal with a complex system, which includes

  1. The photographed object and light.
  2. The light path in the camera with lens aberrations and light scattering within the camera.
  3. The sensor with all construction features: anti-alias filter, color bayer filters, microlenses, etc.
  4. In-camera processing, both analog and digital.
  5. And, yes, also the RAW converter in question.

LibRaw Repository on GitHub

The copy of LibRaw internal SVN repository has been created on GitHub. All changes made to the master branch through Git will be incorporated into the main Subversion repo.

So, if you wish to participate in LibRaw development you may get full sources from GitHub, add your changes, commit, and send us a request to merge your changes into the main source tree; all this using just standard GitHub tools. Also you can report a bug or make a feature request using GitHub interface.

URLs:

Chasing a Gray Cat In a Gray Room: the level of middle gray and the headroom in the highlights for Canon 5D Mark II

The current methods used to determine the sensitivity of digital cameras are not based on the RAW data coming from the sensor; rather they are based on the results of processing the RAW in a converter (be it an external converter or in-camera).

This approach, with all its simplicity, is in fact based on the properties of the RAW converter and on the transformations it applies to RAW data. In particular, the converter can introduce hidden exposure compensation, change the tone curve, and so on. The sensitivity of the camera resulting from such a procedure is a pretty arbitrary value. The matter is discussed in good detail in Wikipedia, in the article explaining ISO 12232 standard.

This approach allows the camera manufacturers to enjoy all sorts of tricks while stating the sensitivity, say cameras from different manufacturers but having the same rated sensitivity behave wildly different when it comes to photographic latitude. This means that switching between different camera bodies one often needs to re-adapt, changing the way he applies exposure compensation.

A simple experiment that takes no additional equipment other than already existing camera and lens allows to accurately determine how the camera exposes, that is:

  • which level of signal (in terms of RAW data) is obtained while setting the exposure by the exposure meter;
  • what headroom in highlights is left, i.e. how many exposure stops are between the middle gray and sensor saturation.

Pages