Info

# if i have no information of original image

1 view (last 30 days)
vipul utsav on 27 Dec 2012
Closed: MATLAB Answer Bot on 20 Aug 2021
if i have no information of original image and i do not add noise manually and i have just noisy image then how can i find signal to noise ratio of noisy image in matlab.

Image Analyst on 27 Dec 2012
You'd have to guess at what the signal would be then. What kind of guess do you want to make? Do you just want to blur the image with a box like this:
noiseFreeImage = conv2(grayImage, ones(3)/9);
Image Analyst on 27 Dec 2012
Or
noiseFreeImage = imfilter(double(grayImage), ones(3)/9);

Stefan Karlsson on 27 Dec 2012
You need to make assumptions about both your noise and your underlying signal or you cannot hope for anything from just an image observation. The simplest case is additive noise:
I(x) = f(x) + n(x)
for some observed image I, with underlying noise-free signal f (the "true image") and som noise source "n". The simplest assumptions of "n" is that its uncorrelated(have a delta for auto-correlation function).
applying a smoothing of I, with imfilter (i.e a convolution) will be linear operation, (denote convolution with ¤ and a linear smoothing filter as w) so that
I¤w = f¤w + n¤w
If you assume uncorrelated, zero mean noise, then the noise will go to zero even for small filters. However, the energy in the original signal will also reduce as a consequence of the filtering. You will have to make some assumptions on the natural image statistics of your "true signal" f in order to solve this(how much will the energy of your "true signal" reduce due to filtering).
Things become more complicated if you assume that n has some non-trivial auto-correlation function(i.e. has spatial dependency), and even worse if you have multiplicative noise.