Open Source Digital Photography

When you have a look at what software tools photographers - either hobbyists or professionals - use for their work you get the impression that the options concerning software in digital image procession must be extremely limited - much more limited than for example for the camera hardware. To some extent you could nearly say a technique does not exist in the world of digital photography if is not available in Adobe Photoshop. I wrote this introduction into open source tools for digital photography to help anyone stuck in this limited perspective but with an open mind to get started in the world of open source image processing and to get an idea of the chances it offers.

Unused CDs

Some time ago i noticed that the CDs or DVDs coming with hardware (including but not limited to cameras) i bought in the last years always stayed untouched in the box. Of course i was always aware of this but it occurred to me how unusual this is apparently when talking and listening to others using similar hardware. It is pretty obvious that not needing to learn and possibly work around the limitation of a new software every time you get a new gadget saves you a lot of time. This means hardware not only just works, it also always works the same way.

As a professional photographer you might be tempted to dismiss open source software as hobbyist toys - and a look at open source use in photography will support this view. Equally amateurs often think they have to use expensive software if they want to do serious work. Such considerations are generally not based on facts though. It has been proven on countless occasions that results generated by open source tools are of equal or superior quality when compared those of much more expensive programs. You can find a collection of arguments for using open source software below but it is important to keep in mind one thing:

Most open source programs are developed by their authors for their own use/enjoyment or for an employer/contractor. As a result the motivation of authors of this software to get you to use their programs is usually much lower than for commercial programs where every additional user means more money. Therefore your motivation is the key to successfully using open source software.

Below i will introduce some examples of open source software that can be very useful for digital photo processing. But this list is no way exhaustive. You can find a lot more - see for example the Raster Graphics Editors and Digital Camera categories on Freshmeat.

If you are not interested in the individual program descriptions but want to know about the arguments for using open source software for photo processing you can skip right to the why should i care?


DCRaw screenshot

It is obvious that this list has to start with DCRaw - a tool written by Dave Coffin that reads most raw image file formats produced by currently available digital cameras and converts them into standard PPM or TIFF files. Probably all open source programs reading raw files are based on DCRaw and interestingly also most third party closed source tools that do so make use of Dave Coffin's work somehow. A list of those programs as well as a list of Cameras supported by DCRaw can be found on the DCRaw website.

DCRaw is a simple command line program, well suited for automated conversion of lots of files. For those who have forgotten how to invoke such a program there are of course graphical frontends and most of the software described in the following integrate DCRaw's features or are able to invoke it when needed.

DCRaw extracts the the image data from the raw files and writes it to linear 16 bit files for further processing - you can choose between several algorithms for the Bayer pattern interpolation. In a lot of cases the results that can be obtained using DCRaw converted files when properly used are much better than those generated with the software usually coming with the cameras. It can also apply ICC profiles, set white balance and remove bad pixels caused by broken sensor sites. DCRaw can extract and use those meta information in the raw files considered important for processing the images like the white balance or the EXIF data but does not try to read custom adjustments made in the camera like sharpening that are sometimes read and applied by the software coming with the camera.

DCRaw is a highly portable ANSI C program that can be built and used on almost any computer platform. Using it is also a good insurance that your raw files stay readable in the future.


Krita screenshot

Krita is a general purpose imaging program. It underwent a fairly rapid development in the last 2-3 years and is meanwhile mature enough for production use although some aspects, especially the ease of use for common tasks, are improvable. The keyboard shortcuts for the program functions are something to get used to but once you do they are very consistent. Some important features are still missing though - for example there is no 'levels' adjustment tool and some simple manipulations like brightness/contrast or simple thresholding can currently only be achieved with tricks. It integrates full color management and support for different color spaces as well as different color depth images including 16 bit and 32 bit HDR modes.

Krita is a KDE program so it can be used on all platforms supported by KDE. Of all open source general purpose image manipulation programs it is definitely the most solid design - with signs of incompleteness in some areas though.


UFRaw screenshot

UFRaw is a graphical frontend for DCRaw with some additional features. With it you can adjust the DCRaw options like white balance, ICC profiles and interpolation methods with immediate feedback about the effect on the image. Furthermore you can manually adjust color transfer functions.

UFRaw can save your adjustments to a file and apply them automatically to a lot of files in batch mode. The results can be written in 8 or 16 bit PPM and TIFF format as well as JPEG images. One major limitation is that UFRaw can only load raw files from the camera and not normal TIFF files like for example panoramas assembled from multiple photos.

UFRaw can be used on a large variety of computer systems. Compiled versions are available for a lot of Linux and BSD distributions as well as Mac and Windows systems.


Digikam screenshot

Digikam is an image management program. You can use it to browse your image collection as well as apply image editing and conversion tasks. Digikam offers a lot of features (much too many to be all described here) and even bears the risk to become overladen with features meanwhile. So if you are just looking for a simple tool to browse your image collection Digikam might already be too much. If you are looking for something to manage your photo collection including image download from the camera, tagging, notes, slide show presentation etc. Digikam almost certainly offers what you need.

All the information entered about the image (tags, comments etc.) is stored in a SQLite database so it can easily be extracted and used by other programs.

Digikam, like Krita, is a KDE program so it can be used on all platforms supported by KDE.


LPROF screenshot

LPROF is an open source solution for generating ICC profiles. It is built upon the LittleCMS open source color management system. Various Linux distributions include a copy of LPROF and a compiled version is also available for Windows. On other platforms you can easily build it from source.

What LPROF does is reading a photo/scan of a reference target (like for example one of those on and the corresponding reference file and generating a profile containing information on the color reproduction characteristics of this device. Using this profile color management aware software can correctly read the images generated by this device and can accurately convert the colors into a working color space.

LPROF also supports monitor calibration.


Hugin screenshot

Hugin is an interactive version of the Panorama Tools suite for stitching panoramas by coordinating several overlapping images and transforming them to a common projection. Hugin allows to adjust all the parameters for this interactively - you can set the control points, calculate the camera/lens parameters and preview the resulting image. It can integrate several programs for automatically finding control points and use different programs (including Enblend) to blend the resulting images.

Hugin can also be useful for other purposes than panorama stitching - it can be used for correcting lens distortion, chromatic aberration or perspective correction or for assembling partial scans.


Enblend is probably the most outstanding program in this whole list - both in being a simple elegant design and in producing results of outstanding quality. If you are doing panoramas from multiple shots and you are not already using Enblend this is surely a good point to start with.

Enblend is a good example for the do one thing, do it well approach. The thing it does (and the only thing it does) is blending several overlapping image into a single one. When doing panoramas you create several input images where all the image area except that part actually covered by this particular image are transparent. Enblend stacks these files and blends all the regions covered by more than a single input image. For this it analyzes the image content and adjusts the blending accordingly.

The images are not only blended very well - Enblend is also quite versatile with the supported input formats. You can use it for 16 bit files as well 32 bit floating point images and it can blend very large panoramas without problems.

input image 1
input image 2
input image 3
input images
stacked result
enbelnd result
images stacked without blending blended with enblend


ImageMagick demo

ImageMagick is something like the swiss army knife of image processing. It can be used for just about any image file format conversion you might need. Furthermore it can do various manipulation tasks - like simple scaling (with selectable scaling algorithms), adding copyright notes, applying filters, cropping, rotating and much more. All these can be applied from scripts using the convert, mogrify and composite tools or using the various Imagemagick APIs for a programming language of your choice. Many web gallery generators for example make use of ImageMagick to produce thumbnails and scaled down versions of the images.


CImg is in fact not a program but a programming library that will not be of much use for non-programming photographers. None the less i include it in this list since being able to code your own image processing functions is deemed necessary or useful by quite some photographers. CImg simplifies this for the C++ programmer since it takes care of all the standard underlying functionality like image file reading and writing. CImg also includes state-of-art image processing functions like the famous GREYCstoration image restoration and noise reduction algorithm.

GNU Make and Bash

You might wonder what those have to do with processing photographs. Make is a tool widely used for compiling programs from source, it manages dependencies between different files and takes care of re-processing those (and only those) files that depend on others that have been modified. For photo processing this can be very useful since starting from the raw files from the camera there are usually multiple processing steps with several programs involved. Makefiles are especially convenient for more complex tasks like panorama stitching - Hugin for example demonstrates how it can be used for that. Bash is the most widely used shell scripting language on Unix systems and can be very useful for scripting tasks.

For both programs there of course exist countless open source alternatives - you can choose whatever is most convenient for you or what you are already acquainted using.

How about the cameras?


This is a dark corner of course. Digital cameras are completely closed systems. Every camera owner essentially depends on the manufacturer for software updates. Furthermore the secrecy also extended to the file formats and hardware interfaces - file formats are even artificially obscured to make it more difficult to read them and for remote control and external power supply cameras commonly use nonstandard plugs without specifications being available. But there might be a chance for things to change at some point. For mobile phones for example the first open source platforms are being introduced right now. The same reasons that triggered this development for mobile phones (the increasing costs for developing and maintaining the software for the phone companies and the obvious advantages of a scalable and unified platform) will become increasingly important for cameras as well. But don't count on this happening very soon.

Why should i care?

Good question. There is a general technical and a more photography specific answer:

From the technical standpoint: there are several advantages of using open source tools for your work:

Specifically as a photo artist: If you are not convinced by the above arguments you probably shouldn't. The vast majority of photographers do not use open source tools for their work. Many of them are making good photos none the less and crappy images won't look good just because of the software. Photography is a fairly technical field of art though. Most photographers are pretty delicate about their hardware equipment and some can engage in heated discussion on lens quality, camera brands and models etc. And while a lot of you are competent in optics and other camera technology and also frequently use photo equipment in ways it was not designed for such innovative activity often ends when it comes to the software side of the whole process. Few have the guts of learning how conversion of a raw file into a jpeg image actually works or how a sharpening filter actually modifies the pixels of an image. It is fine not to care about this since - like the camera, lenses and other hardware issues - this is completely secondary for making good images. But if you are interested in such aspects, want to choose your image processing techniques with care and consideration or want to use innovative and experimental post processing on your pictures, open source software offers you a lot more options than commercial programs.