我如何与SNR =5分贝使用图像添加高斯白噪声imnoise
?
我知道,语法是:
J = imnoise(I,type,parameters)
和:
SNR = 10log10[var(image)/var(error image)]
如何使用这个SNR值噪声添加到图像?
我如何与SNR =5分贝使用图像添加高斯白噪声imnoise
?
我知道,语法是:
J = imnoise(I,type,parameters)
和:
SNR = 10log10[var(image)/var(error image)]
如何使用这个SNR值噪声添加到图像?
让我们看到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')
这里的结果: