I have a blurred and noisy image $X$, I want to apply the Wiener filter on it and get a deblurred and denoised image $Y$ (i.e apply inverse of blurring filter while at the same time reducing some noise, if not accentuating it). I'd like to measure the SNR in both in order to evaluate the quantity of noise deleted.

I know the formula to calculate the SNR is:

$$SNR = \frac{P_{signal}}{P_{noise}}$$

However, how do I estimate the SNR in the real world, given just the noisy image $X$?

  • $\begingroup$ How about you use like this to estimate snr of real world? Generally noise circumstances in real world who we lived. So we can measure noise current. The you go contury way out and mesure clean noise. So you can compare them. $\endgroup$ – gmotree Jun 13 '15 at 13:24
  • $\begingroup$ Deblurring does not "delete" noise, on the opposite. $\endgroup$ – Yves Daoust Nov 10 '15 at 17:09

Estimating the noise power is difficult because it involves separating the signal from the noise.

A good way to proceed is to take a measurement where you know the correct answer, and subtract. For example, you could photograph a grey rectangle, and look for pixels that are not the right level of grey.

If you only have the one image, you need to be a bit more imaginative. Maybe there is a patch of sky, or something, which you suspect to be very simple. Then you can form a mathematical model of the signal in that region, and fit its parameters to the image. For example, if you think the colour is constant in the region, you can estimate it by averaging over the region. Or if you think the region is a long way out of focus, you can estimate the signal using a low-pass filter. The goal is to obtain a low-entropy estimate of the true signal. Then you can subtract it off to obtain an estimate of the noise.

Note that the noise level and the signal level can both vary across an image. Cheap digital cameras have a noise level that depends on the brightness of the pixel, due to the way the detectors work, and also on the position of the pixel, due to in-camera compensation of optical artifacts. You might therefore want to estimate the noise using a variety of different patches of the image.

  • $\begingroup$ Of course, the above approach is exactly what the Wiener filter itself does. To obtain a cross-check, you have to use human intelligence to make a more sophisticated model than it does. For example, you can recognise sky and focus artifacts. $\endgroup$ – apt1002 Nov 18 '13 at 22:37
  • $\begingroup$ Also of course, you should estimate the signal based on $X$ not $Y$! $\endgroup$ – apt1002 Nov 18 '13 at 22:41
  • 3
    $\begingroup$ Not only cheap digital cameras have a noise level that depends on light intensity. In fact every camera has it - its called Photon-shot noise. $\endgroup$ – Andrey Rubshtein Dec 14 '14 at 10:38
  1. If you have original image you can always subtract it from noisy image and Wiener filter output to find RMSE (root mean square error) or MSE to show how your filter improves the image.
  2. If you do not have original image then you might just look at noise variance in both images. Also other metric such as entropy might be useful.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.