Series: Noise reduction by averaging:
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).
Noise is random in nature. Its also guassian in nature. What that means is, if you had a piece of noise like:
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 g_{i} denote each of the 25 images. So, g_{i} is a sum of the original image (denoted by f) and some noise (denoted by n_{i}).
The operation we're performing in this technique is:
We're summing up the k images (25 in our case) and dividing it by k. But we know that:
So on expanding the expression for I(x,y) we end up with only f(x,y)... which is the original image!
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:
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!
This tutorial is part of a series called Noise reduction by averaging:
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.