Noise reduction by averaging

The Theory

Series: Noise reduction by averaging:

  1. The Technique
  2. The Theory

Now for the theory

Pretty amazing results right? And this happened with just 25 images. Just imagine the quality of images you'd get if you just sit and take snapshots constantly (like the telescopes do).

Probability does it all

Noise is random in nature. Its also guassian in nature. What that means is, if you had a piece of noise like:

Gaussian noise

Gaussian noise

Now if you were to sum up the intensities of each pixel and then divide it by the total number of pixels, you'll end up with a zero (or a value very much near 0).

So, if you have multiple images with different noise patterns... its very likely that averaging corresponding pixels will cause the noise to vanish.


Let gi denote each of the 25 images. So, gi is a sum of the original image (denoted by f) and some noise (denoted by ni).

The image, mathematically

The operation we're performing in this technique is:

Averaging operation done

We're summing up the k images (25 in our case) and dividing it by k. But we know that:

The sum is zero!

So on expanding the expression for I(x,y) we end up with only f(x,y)... which is the original image!

More images mean better noise removal

The more images you have, the better the noise removal. This sounds plausible because ideally, if you have an infinite number of cases... only then will the sum of the noise be exactly zero.

I did a little experiment on how the quality of the image improves as the number of noisy images increases. See the results for yourself:

Noisy 1

No averaging (1.jpg)

Result of averaging two images

Averaging with only 2 images

Averaging five images

Averaging with 5 images (quality just improved greatly!)

After fifteen images

Averaging with fifteen images (the image looks clean!)

The final result

Averaging with 25 images (no real visible improvement)

So apparently, after a few iterations of averaging, the quality of the image reaches a plateau.


So now you have a great new technique in your arsenal that you can use whenever required! If you have any doubts or criticism or suggestions, do let me know!

Have a look at the actual C implementation

More in the series

This tutorial is part of a series called Noise reduction by averaging:

  1. The Technique
  2. The Theory

OpenCV 3 Blueprints

Learn how to identify face expressions, fingerprints, setup automated camera traps, stabilize mobile video with gyroscopes and use the Android NDK

The book is packed with the fundamentals of computer vision and will get you started on just the right track.

Learn more about the book

Utkarsh Sinha created AI Shack in 2010 and has since been working on computer vision and related fields. He is currently at Carnegie Mellon University studying computer vision.