Motion-corrected image denoising for digital photography
Brendan Duncan
Abstract
An effective way to reduce noise in images involves taking a burst of snapshots and averaging them together. This requires that they be aligned, and that there is no motion or parallax across the images, otherwise this averaging causes motion blur and ghosting effects. In this paper, I introduce a new technique for both the alignment and averaging of a burst of photos of a single scene. The alignment is performed using multiple applications of SIFT and RANSAC to match both background and moving foreground objects in a scene. A weighted average is then calculated at each pixel using the bilateral filter to provide an estimate of the denoised result. This weighted average reduces the contribution from noisy pixels as well as from unmatched pixels resulting from motion across images.Paper

Paper (11.1MB PDF)
Presentation

Presentation (10.5MB PPT)
Code
Code (44KB ZIP)This code requires OpenCV. It is not optimized and does not employ a fast implementation of the bilateral filter. It includes modified SIFT code from Rob Hess.
Moving foreground object images
| Input images | ||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Weights | Result of algorithm | |
![]() |
![]() |
Parallax images
| Input images | ||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Simple average | Result of algorithm | |
![]() |
![]() |
© Brendan Duncan 2010















