The problem

Take 50+ of Lena images, add gaussian noise to them to the point that you couldn't say it is Lena. I insist, gaussian noise, not gaussian blurring.

Now imagine a cropping window randomly moving around Lena's face (like a video camera focused on this part).

Now you have a handful of noisy pictures containing what used to be Lena's face somewhere in the image.

The question

Now I want to get back the face without knowing it in advance :)

  • First I have to identify overlapping parts (i.e. noisy faces here) from the set of images.
  • Then I must superimpose the faces.
  • And finally, add them to get back her beautiful face.

The problem is that I have no clue of how to do that (cross correlation, perhaps to identify the faces and the shift between them). I've never had courses in image processing. I just need a reference or an algorithm name.

  • $\begingroup$ The closest thing I can think of is "Super resolution". But it's usually done with far less noise, where registration works reliably. If the cropped patches are large enough, you could use gaussian blurring on the patches to reduce noise and make registration more reliable. If the motion is expected to be smooth, you could use a Kalman or particle filter to improve registration. $\endgroup$ Jun 19, 2013 at 5:54
  • $\begingroup$ Cross-correlation should be able to register the images even in the presence of noise, shouldn't it? $\endgroup$
    – endolith
    Jun 19, 2013 at 15:35
  • $\begingroup$ Being able to put names on things is sometimes enough. Thank you very much, now I've found plenty of references to keep on moving. $\endgroup$
    – user1637
    Jun 20, 2013 at 7:50
  • $\begingroup$ @endolith, Cross correlation is the ML for detection (Registration for that matter). It works very well for high SNR, for low SNR other methods might be better. $\endgroup$
    – Royi
    Jun 21, 2013 at 14:15
  • $\begingroup$ @Drazick could you be more specific? My images have low SNR: cross-correlation is not working. $\endgroup$
    – user1637
    Jun 23, 2013 at 11:42

2 Answers 2


If the noise levels added to each pixel are independent, perhaps blurring the images first and then applying a pairwise cross-correlation could do the job.

  • $\begingroup$ Tried that with median filter and gaussian filter. I even did gaussian filter then sobel filter and tried feature detection as well as cross correlation : no luck. $\endgroup$
    – user1637
    Jun 23, 2013 at 11:43
  • $\begingroup$ Add tv denoising to the list. $\endgroup$
    – user1637
    Jun 25, 2013 at 19:57

first of all as I understand there are two separate problems 1. Piece together Lena's beautiful face in some kind of panorama 2. Denoise the image.

For 1 - the problem you described could be easily solved using cross correlation. For example please see Matlab image registration example

For 2- I would use any of several denoising algorithms. You could look at blind deconvolution and also at wavelet denoising ,

Hope it helps, May your Lean be as beautiful as the real one ,

  • $\begingroup$ This is not working because: 1) the SNR is low in my case 2) In matlab's example, the patch is fully included in the original image 3) The image contains a lot of features which makes it easy. What I want is to rebuild the full image with 100s of noisy patches and I'm looking for methods to do that. $\endgroup$
    – user1637
    Jun 23, 2013 at 11:47
  • $\begingroup$ is the noise applied on each patch separatly? In what you described it is first applied on the image and only than the patches are cut....if it is applied differently on each patch I would try to look at some texture features.such as hog (histogram of gradients) $\endgroup$ Jun 24, 2013 at 14:20
  • $\begingroup$ The noise is applied separately on each patch "unfortunately". I'll check about hog. Is that related to the Sobel filter? Seems interesting and might be very well adapted. Thanks for the suggestion. $\endgroup$
    – user1637
    Jun 25, 2013 at 19:56
  • $\begingroup$ Okay another idea.. Mabye you should just allow for several matches .. i.e. for each patch find the 3 best correlated patchs. Than try to build a puzzle out of all the patches building upon all possible solutions. $\endgroup$ Jun 26, 2013 at 15:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.