如何向图像添加 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,[])
您的代码看起来是正确的。
我使用切片器包来添加或去除噪音。您可以尝试将结果与它进行比较:
让我们定义:
"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,[])
您的代码看起来是正确的。 我使用切片器包来添加或去除噪音。您可以尝试将结果与它进行比较: