如何向图像添加 5% 的高斯噪声

How to add 5% percent Gaussian noise to image

让我们定义:

"percent noise"数字表示整个图像的高斯白噪声的标准偏差与信号的百分比。

假设我有一张大脑图像,我想通过 Matlab 代码向整个图像(组织)添加 5% 高斯噪声

I=imread('brain91.png'); I=rgb2gray(I);I=double(I);
I = I - min(I(:));
I = I / max(I(:));

%// Add noise to image
v = 0.05*var(I(:));
I_noisy = imnoise(I, 'gaussian', 0, v);
I_noisy=255.*I_noisy;
subplot(121);imshow(I,[]);subplot(122);imshow(I_noisy,[])

图中显示了原始图像(左侧)和右侧的噪声图像。您认为我的实现对于上述定义是否正确? -(约 5% 的高斯噪声设置 v = 0.05*var(I(:)))

Ander Biguri 和 dasdingonesin 的论断都是正确的。您的代码肯定会正确地向图像添加高斯噪声,但请确保通过在 var 计算中对 0.05 进行平方来考虑实际方差。

或者,您可以使用 std 而不是 var 并对整个计算求平方以获得相同的结果:

I=imread('brain91.png'); I=rgb2gray(I);I=double(I);
I = I - min(I(:));
I = I / max(I(:));

%// Add noise to image
%v = (0.05^2)*var(I(:)); %// Option #1
v = (0.05*std(I(:)))^2; %// Option #2
I_noisy = imnoise(I, 'gaussian', 0, v);
I_noisy=255.*I_noisy;
subplot(121);imshow(I,[]);subplot(122);imshow(I_noisy,[])

您的代码看起来是正确的。 我使用切片器包来添加或去除噪音。您可以尝试将结果与它进行比较: