Alright. After a few days of searching, trial and error, and teeth-grinding frustration, I’ve got some answers about noise reduction with RAW camera files in GIMP. If you don’t want to look at a picture and see lots of numbers, here’s the summary:
Use whatever you like.
Yes really. The differences between available methods are academic and only truly come into play in extreme circumstances — and if you’re denoising to the maxxxx! you should probably just trash your photo and start from scratch. If you want to hear some more specifics and get some other thoughts, keep reading.
Important note: I’m using a Canon 300D and an ancient computer (2.0GHz, 1GB RAM, GT6600 GPU, Win XP). This imposes some restrictions; I can’t just shrink a photo to help hide noise because I’m only working with 6.3MP to start with, I’m dealing with massive amounts of noise even relatively low ISO settings, and using anything too system-intensive takes a long, long time. Basically, I need something that actually works, and with a light footprint.
Here are four versions of a 100% crop of the same photo I’ve been using. You can see where there are some fine details and some expanses of color that should be more or less smooth, basically the two extremes we’re working with when denoising. Ideally I’d have some darker areas but that might be for a future test.
This is output straight from the camera, and denoised in UFRaw, G’MIC (using the GREYCstoration anisotropic smoothing), and the Wavelet Denoise plugin. This was taken at ISO 400, f/3.2, 1/4000 sec, with a 50mm prime lens.
The camera RAW crop speaks for itself. Plenty of noise in the out of focus areas, and really ugly noise at that. This is what we need to fix.
UFRaw has built in noise reduction, controlled with a single amount slider. It pays to have a light hand with this slider; here I set it to 60. This did a good job of smoothing out the noise but at a significant loss of detail. Moreover, there’s an overall “soft” quality that I don’t quite like — what I described in an earlier post as everything looking like it was made of wet jello.
G’MIC is extremely powerful. The noise reduction is basically the old GREYCstoration tools bundled in, along with a tons of other really useful stuff. It’s worth installing just to have more and more powerful toys in GIMP. There are two problems with using it to denoise though: it’s complicated, and it’s really slow. As in, for me, it takes about two minutes to render a 6MP file slow. And here are the settings I used:
Amplitude: 40.00
Sharpness: 1.00
Anisotropy: 0.30
Gradient Smoothness: 0.60
Tensor Smoothness: 1.10
Spatial Precision: 0.80
Angular Precision: 30.0
Value Precision: 2.00
Interpolation: Nearest Neighbor
Fast Approximation: ON
Iterations: 1
Channels: All
Tiles: 1
That’s a lot of parameters. But the result is not bad, details are preserved and noise is obviously suppressed, with a few artifacts. Now, I could probably spend some time figuring out how this all works and get a much better result. The problem is, that’s going to take a lot of time. And with waiting two minutes to see each result, and that many options, I think it’s safe to say that it’s not really worth it. G’MIC’s noise reduction is very powerful, probably the best open source solution in terms of quality, but it’s just too much. Sorry.
Wavelet Denoise. This plugin’s complexity is somewhere between UFRaw and G’MIC. Well, anything is more complex than UFRaw’s single slider. But Wavelet Denoise gives you the option to work in YCbCr or RGB space, tweaking each channel for amount and level of detail. I used the following:
Y: 500
Cb: 1500
Cr: 1500
Detail 1.0 (all channels)
This is a fairly quick and dirty adjustment, and the results are also dirty but good. We have more sharpness than UFRaw, fewer obvious artifacts than G’MIC, and acceptable noise removal. And bonus, because there are fewer confusing options than G’MIC, I’m confident that with practice I’ll be able to refine these results. The best part is that this renders in about 15-20 seconds for me, or about the amount of time as an Unsharp Mask. This is much easier to incorporate into my workflow than adding two minutes to every photo I want to process.
So.
I stand by my summary: use whatever you like. Right now, I happen to like Wavelet Denoise because it offers a fair amount of control and returns good results. UFRaw would be fine if I didn’t mind the hit in sharpness and wanted something extremely simple and convenient. G’MIC is the backhoe for your underground pool: the best tool for the job, if you have a huge job and know how to use it.
Later I’ll run down more specifics for using Wavelet Denoise.
Edit: It’s been pointed out that I’ve been using an older version of Wavelet Denoise; a couple weeks ago a new Windows version was compiled, the main difference being that it now handles CIELAB color space. I’ll grab that and do some more work, and later post an entry with details on using Wavelet Denoise specifically. Thanks to everyone who’s given me input so far, and I hope that those of you who found this through searches for open source noise reduction solutions are finding it useful.
That’s What She Said