使用imnoise高斯噪声添加到图像(Using imnoise to add gaussian n

2019-08-31 05:46发布

我如何与SNR =5分贝使用图像添加高斯白噪声imnoise

我知道,语法是:

J = imnoise(I,type,parameters)

和:

SNR = 10log10[var(image)/var(error image)]

如何使用这个SNR值噪声添加到图像?

Answer 1:

让我们看到SNR如何与噪音开始。 你的错误图像是原始图像和噪声图像之间的差别,这意味着误差图像噪声本身。 因此,SNR居然是:

SNR = 10log10[var(image)/var(noise)]

对于给定的图像和SNR =5分贝,噪声的方差是:

var(noise) = var(image)/10SNR/10 = var(image)/sqrt(10)

现在,让我们把所有的这种成MATLAB代码。 要添加白高斯噪声的图像(表示它I使用) imnoise命令,语法是:

I_noisy = imnoise(I, 'gaussian', m, v)

其中m是平均噪声和v是它的方差。 同样重要的是要注意, imnoise假定在图像的强度I范围从0到1。

在我们的例子中,我们将添加零均值噪声和方差为v = var(I(:))/sqrt(10) 完整的代码是:

%// Adjust intensities in image I to range from 0 to 1
I = I - min(I(:));
I = I / max(I(:));

%// Add noise to image
v = var(I(:)) / sqrt(10);
I_noisy = imnoise(I, 'gaussian', 0, v);

澄清:我们用var(I(:))治疗计算所有样本的图像的方差I (而不是var(I)沿列计算方差)。

希望这可以帮助!

I = imread('eight.tif');
I = double(I);

%// Adjust intensities in image I to range from 0 to 1
I = I - min(I(:));
I = I / max(I(:));

%// Add noise to image
v = var(I(:)) / sqrt(10);
I_noisy = imnoise(I, 'gaussian', 0, v);

%// Show images
figure
subplot(1, 2, 1), imshow(I), title('Original image')
subplot(1, 2, 2), imshow(I_noisy), title('Noisy image, SNR=5db')

这里的结果:



文章来源: Using imnoise to add gaussian noise to an image
标签: matlab noise