As part of my forays into digital photography on a professional level – I will be trying to replicate to the highest possible degree (and exceeding where possible) the tools and equipment used by our non-free software using friends in the windows and mac worlds, particularly photoshop and it’s associated tools.
Now to do this, I will be evaluating a number of tools and seeing how they fit in as replacements. I will blog the results and the methods I use and this will lead to hopefully a series of good howtos for the beginner photographer using GNU/Linux and free software. Since I’m a beginner myself and this is a learn-as-I-need-things series it will be on a lower level than most tutorials out there, and will also act as my own reference documentation in the future.
With this intro out of the way – let us start part one, working with RAW format images.
Now first of all the question should be answered: what is a raw image and why use it ? After all, almost every digital camera shoots in jpeg format by default right ? This is true, but real photographers override this with good reason. RAW means the image gets dumped as it’s read by the camera’s censor with the maximum amount of data stored. JPEG is in fact just about the worst format for storing images in anyway as it’s a lossy-compression. You will want to save your web-published pictures into jpeg, but you will not want to work with it yourself or store your own copies this way. RAW images are also refered to as a “digital negative” as they afford you a lot of the power that film photographers had working on negatives… and then some.
But there is a catch – there is no standard on how RAW images are stored, each camera brand uses it’s own format and sometimes it even changes between models. The good news is that for GNU/Linux users there is a very good library that can read and manipulate RAW images known as libdcraw (for DigitalCamera RAW), all the tools we use for RAW work are based on dcraw. DCRaw supports a massive selection of camera formats and virtually every common one including those used by Nikon and and Canon are fully supported. DCRaw is included in most distributions, and since it’s a dependency of the other tools here, should be installed automatically if you have it.
Now the first issue with RAW images is viewing them, and viewing them in bulk. Opening them one-by-one is not a good way to go through a set and decide which to keep, before starting to edit. The good news is that the current version of digikam includes full support for dcraw and can view them easily as can KDE4′s showphoto (which is a one-by-one tool integrated with digikam as well). Digikam makes a very solid replacement for photoshop’s “bridge” program and includes a massive amount of extra features of which I haven’t explored the half.
Where it falls a bit short is the manipulation of RAW data. Adjusting light levels and such – it includes a tool to do this, as well as a batch RAW-converter (so when you’re done editing you can rapidly export say web-jpegs of all the final results) but the manipulation tools was a bit… well clunky for me. Not knowing exactly the details of all the options you can do on RAW files, I need something that lets me play quite easily with it. It is also not integrated into an image editor which makes the next stage hard – now you need to edit the RAW file, then save it as something else (like TIFF) before you can use most image editors to work on the image itself.
Well, gimp is obviously the tool of choice for image editing. It’s powerful and feature-rich and while it doesn’t work like photoshop – it can do the vast majority of what photoshop can (I am quite certain it can do everything the beginner photographer will need for some time). I suggest reading a good gimp tutorial to learn it if you don’t know it (the good news is, I do know it quite well since I’ve been using it for things like logo designs for years). Even so I will be brushing up with some new tutorials to sharpen up my skills. I just learned today for example (thanks to a blogpost that showed up in my RSS reader) that gimp can read and use photoshop brushes.
But, here’s the catch: gimp doesn’t natively support libdcraw and thus cannot work with raw images. Free software to the rescue, I found a lovely gimp plugin called UFraw which handles this in much the same way photoshop does. Opening a raw image first loads it into the UFRaw interface which is just like it’s photoshop cousin (UFRaw also has a stand-alone version) – I will be adding a port for it to kongoni today but I don’t know how well it’s take-up in other distro’s are, it’s quite easy to build if you follow the instructions on the site though.
It actually supersedes most other raw tools because it uses the single-library nature of libdcraw to gain some real power. For example it can create and use nikon curves on images taken with non-nikon cameras (whatever that means…).
So once you install it, you open a raw file in gimp and bang – here’s your raw manipulator. You do whatever adjustments you want, and click Okay… and it then exports this as pure bitmap data and you get a normal gimp window where you can proceed with your touch-up work, and save the final result in whatever format you wish.
A note on that last point. The advice from books and other photographers agree: for your own copies, once you are done with the raw, save as TIFF format. If you want to save some disk-space, use the loss-less LZW compression (which is free software by the way). This means you can always come back later and work on the touch-up level, you have a high-quality image for exporting for print or other purposes etcetera and it takes a lot less space than the RAW files do.
While jpg continues to rule the web – I prefer to export my web images in png format, it’s more powerful far less lossy (for similar compression ratios) and not encumbered by patents.
Thus we have now set up the first part of our digital darkroom, we can browse and manipulate the raw images from our cameras, and get them to a touch-up ready point. As I learn some tricks of the trade about touch-ups, I will be sharing this in part two.