# the rate of noise presented in images

I suppose that an image is affected by a multiplicative noise (or additive noise and etc.). I want to quantify and measure the rate of noise (for exemple 1%, 2%, ...,25%) present in an image. I used the snr and psnr but they give me the values measured in dB ​​(decibel). Also, how can I implement this in MATLAB?

Can I use the mse or the average between the noisy image and the original image mean?

After the answer of Mr. Tolga Birdal, I put the following code in matlab:

I=rgb2gray(imread('lena.png'));
J=imnoise(I,'speckle', 0.1); % 0.1 is the variance of the noise
Sigma1 = estimate_noise(I)


Its give to me :

Sigma1 = 6.9360

Sigma2= estimate_noise(J)


and

Sigma2= 10.1409

this mean that the level of noise present in the image J equals to 10.14 % ?

• I'm not sure where you get 10.14% from... The variance value is 10.1409; that has little to do with a relative rate (percentile) of anything. Sure, it's normalized to the filtered image size, but that doesn't relate to the energy in the image at all. You might want to use the original image variance and compare that with the noisy image variance... but I don't think it's true that the variance will always go up when you add "noise". – Peter K. Sep 4 '15 at 13:20

## 1 Answer

You could check out my MATLAB function, which estimates the variance of the noise. It is also mentioned in a Mathworks blog post, in comparison with other methods.

Regarding $\sigma$, you mention in the question, simple answer is yes, longer answer is no. It refers to the variance of the noise normalized with image dimensions as follows:

$$\sigma = \frac{\sigma_0\sqrt{0.5\pi}}{6(W-2)(H-2)}$$

$-2$ is due to the convolution kernel, applied previously. However, this is not a final quantity, giving you the absolute noise level. Nevertheless, for the variance, you could use it as a percentage, just like you mentioned.

• I edit my question – Achaire Sep 4 '15 at 10:48