Killing noise - by adding pictures
Note: I rewrote most of the text for clarity, and thanks Michal for your message
Noise, especially at higher ISO numbers, is one of the biggest problems of digital imaging. While some high-end cameras like the Nikon D2X deliver low noise images even at very high ISO settings, the signal-to-noise ratio of my own default camera starts deteriorating significantly shortly above its lowest ISO number (50), resulting in visible noise. While this is overestimated in lots of use cases (noise-free photos even look unnatural), it is annoying in architecture, industry, products and still life photography.
So let's make us of so-called noise removal software like Noise Ninja, shouldn't we? Let's see how this kind of software works: first, it uses lowpass filtering to reduce the contrast of neighbouring pixels (reducing the edges), then, it uses unsharp masking to accent (sharpen) the remaing edges. This assumes that small contrasts are likely to result from noise while larger contrasts are likely to result from photographic details. It has to make such assumption as with just one metered value per pixel available, it simply cannot know what is noise and what is signal. Thus with this kind of technique, fine details are likely to get lost. Adaptive algorithms which also look at neigbouring areas help a lot here, but the problem remains: you pay with a loss of details.
Idea: Let's make use of noise's random character. If you take multiple photos with exactly the same camera settings and croppping, each photo will be different, as on each photo, the noise is distributed differently. So let's take multiple measurements of each pixel's value (take multiple "identical" photos) and average over them: as noise is random, using an average value actually improves the photo's signal to noise ratio. It grows by the square root of the number of shots taken: improvement is largest with the first additional shot and grows smaller with each additional one; doubling the signal over noise requires four extra shots, trippling nine, quadrupling 16 and so on. Just stack all your exposures onto each other in your imaging software (by using layers) and average over the additional shots by setting each layer opacity to (1/(number of layers beneath it + 1)) or 100% - 50% - 33% - 25% - 20% etc. beginning from the bottom of the stack.
Let's see what "doubling the signal over noise" (4 extra shots) looks like in real world. The (otherwise unchanged) photo was deliberately taken at a higher-than-standard ISO number (160, to add noise) and well underexposed (to have lots of low contrast details in the shadows). Details are at original size (100%).

Additive noise removal - example (S:N 1:2)
Left is one exposure, right is with four additional exposures:
Example 1
Example 2
Example 3
Example 4
Example 5
Example 6
Example 7
Example 8
Result: visibly reduced noise without loss of details as observed with any neighbouring-pixel-software.
Given the small effort it takes to take a row of identical photos with digital cameras and to process them (a simple recorded action will do), this technique seems to be well worth a try for quality shots - even when using upper class equipment.
Entry first published 2009-05-18 01:00, last edited 2009-05-18 01:00
Share this entry via e-mail - on Twitter