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

时间:2015-08-05 14:04:07

标签: matlab image-processing noise

让我们来定义:

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

假设我有脑图像,我想通过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(:)))

enter image description here

2 个答案:

答案 0 :(得分:3)

Ander Biguri和dasdingonesin都有正确的断言。您的代码肯定会正确地为图像添加高斯噪声,但请确保通过对0.05计算中的var求平方来计算实际方差。

或者,您可以使用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,[])

答案 1 :(得分:0)

您的代码看起来正确。 我已经使用切片器包来添加或删除噪声。您可以尝试将结果与之比较:

slicer gaussian filter