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 %
?
10.14%
from... The variance value is10.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". $\endgroup$