Today’s post is one for the pixel peepers. Well, not just, perhaps. It should really be of interest to anyone shooting digital who wants to maximize the sharpness of their images and essentially get the best they can out of the gear they already own. Image quality is mentioned a lot in photography circles, mostly by gear-heads, but it’s not an issue to be dismissed out of hand. Anyone who (like most) is taking pictures with a small-format camera, and also making large prints of said images, is likely to be working at the limits of their gear. My apologies in advance for the length of this post – there is much to be said.
Anyway, an often overlooked part of the post-processing workflow involves the conversion of the RAW image to a format that can be further manipulated. This is a step that will happen automatically in-camera if you’re shooting JPEG (in which case, why are you?), or as a first step in the post-processing workflow. Due to various technical detail of the camera itself, this step involves several signal processing steps: interpolating missing pixels in each colour channel to reverse the mosaicing due to the Bayer filter, sharpening the image in some way to reverse the effect of the anti-aliasing low-pass filter, performing a colour matrix transformation from camera space (i.e. depending on the spectral sensitivity of the camera sensor in each channel) to the required colour space (sRGB, Adobe RGB, etc.) and perhaps applying some compensation to reverse the geometrical distortion and lateral chromatic aberration due to the lens (this is a function of the lens focal length and focusing distance). How accurately this is done will have a significant bearing on the final result. It’s worth realizing (this will not be obvious to anyone without signal processing background) that many of these steps are effectively pulling information out of thin air – this can be done correctly (i.e. reconstructing missing data accurately based on existing data) as long as the assumptions made are correct and as long as the process is technically possible. The former condition usually means that one needs accurate measurements of the system being compensated for, while the latter condition usually means that the reversal process has to be mathematically well-defined and stable. What ‘well-defined’ and ‘stable’ mean are usually the subjects of graduate-level classes, so I won’t bore you with the details. In practice, this means there are several algorithms for approximating the process, each with its own problems.
So it should not be a surprise that different software will behave differently when doing this job. What I set out to do in this post is to compare the end-results of three contenders for Canon cameras:
- Canon’s own Digital Photo Professional (DPP) software (v4.1.50) – this is the one I’ve been using (through several versions) since 2006 when I started shooting digital.
- Adobe’s Camera Raw (ACR) converted (v8.5) – this is used in the popular Lightroom, in Adobe’s DNG converter, or as a plugin for Photoshop (which is what I used below).
- DxO Optics Pro (v8.5.0) – I had my eye on this for a while, but when DxO was giving out licenses for free (there’s a later version now, but still), I had to grab myself a copy. If you hurry you have until the end of Feb to get one.
There are other options out there. Notably I would mention PhaseOne’s Capture One, dcraw (which is the basis for most UNIX/Linux converters), and darktable (which I believe has its own in-built RAW converter).
Anyway, one key feature of DPP is the Digital Lens Optimizer (DLO) which Canon introduced a while ago. This is meant to perform inverse functions as mentioned above, and should provide significantly better image quality. DxO has long been doing much the same, so it was worth comparing the two. ACR, as far as I know, does not do any of this.
So, without further ado, I ran a simple experiment as follows. I started with a test exposure that I took for A Windy Day at St Martha’s. I chose this because it’s a reasonably well exposed image, taken on a tripod with a relatively short exposure at low ISO (1/40s at ISO 100, avoiding sensor noise artifacts due to high amplifier gain and long exposures) using a lens that’s well-known for its edge softness (the EF 17-40mm f/4L – don’t get me wrong, this is a great lens that has served me well for several years, first on a crop sensor and more recently on a full-frame). Conveniently, it also has some high-contrast edges and text. I started with a straight conversion using dcraw, with no compensation for anything. Even the Bayer demosaicing uses a simple bilinear interpolation. You can see the result below, with four small areas marked in yellow.
For the purposes of this post I also created a composite image of the four marked regions at 100% crop. You can see this below for dcraw, but you’ll need to click on the image to see things pixel-for-pixel.
Observe the general softness in areas with detail, and the chromatic aberration on the edges where stone or tile meets sky. Next, I processed the photo as usual with DPP, in three ways:
- Without DLO, but with the default unsharp mask strength 3. Lens corrections applied were only those for peripheral illumination, chromatic aberration, and color blur (set by the camera). This is the best one can do in-camera.
- As 1, but with DLO activated at 100%.
- As 2, but with the unsharp mask disabled. Since DLO is effectively sharpening the image, one can argue that no more should be need.
The results are shown in that order below. In each case, I transferred the file to Photoshop (basically saves as a 16-bit TIFF) to simulate my usual workflow, before final conversion to JPEG.
You can clearly see the difference in acuity that DLO provides. I find that sometimes I still need more sharpening, but usually at a lower strength than my default 3. It’s been my experience that DLO tends to blacken the edges a bit, and generally has the effect of reducing colour intensity. How much this matters depends a lot on the subject.
By way of comparison, what follows is a conversion using ACR directly in Photoshop (i.e. placing the RAW image as a smart object layer). In this case, I kept everything flat, but allowed the default sharpening (25%) and the correct lens profile correction for vignetting and chromatic aberration. I tried to keep colours the same, using the in-camera profile, but ACR is clearly doing something different. Overall, the result was brighter than DPP.
It’s also worth observing that the amount of detail recovered does not match what DLO provides. Further sharpening can be done, of course, but the result is not the same. Finally, I repeated the experiment with DxO. In this case again, I left everything disabled except RAW noise, vignetting, chromatic aberration, and lens softness. Of course, I first needed to download the profiles (DxO calls them modules) for my camera and lens combination. I exported the result as TIFF and DNG, to see if there was a difference, and oddly there was. I’d think ideally I’d want a DNG output, if for no other reason than the fact it’s more compact. Results follow for DNG first, then TIFF. Both were imported as a smart object into Photoshop to simulate my usual workflow, before final conversion to JPEG.
I observed some colour differences between the two methods, which bothered me. If I decide to switch to DxO, I’ll have to dig deeper to find out what’s going on. Otherwise, I rather liked the results, which to me seemed more natural than DLO’s, and just as effective in pulling out the detail. I think I’ll be changing my workflow soon.