让我们来定义:
"百分比噪音" 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(:)))
答案 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)
您的代码看起来正确。 我已经使用切片器包来添加或删除噪声。您可以尝试将结果与之比较: