Octave / Matlab - 高斯噪声

时间:2013-10-04 06:06:59

标签: matlab octave

我在Octave中使用imnoise将高斯噪声添加到二进制图像中,但我认为我的问题足够普遍适用于Matlab。

我正在使用imnoise (A, 'gaussian' [, mean [, var]])这样:

imnoise (A, 'gaussian', 0, var)

我将var从0.0变为1.0。我认为从0.0到1.0变化var与从0%到100%变化的噪声百分比相同。

我说错了吗?因为,在不同的图像尺寸中,它会产生不同程度的噪声。与具有相同var的较大图像相比,较小的图像将显得较少噪声。

由于

1 个答案:

答案 0 :(得分:1)

如果你看一下imnoise的来源(Octave是自由软件,你被鼓励查看源代码),你会看到高斯噪声的实现:

## Variance of Gaussian data with mean 0 is E[X^2]
A = A + (a + randn (size (A)) * sqrt (b));

其中A是你的图片(转换为双倍和范围[0 1]后,a是平均值,b是方差。基本上它需要随机数来自具有指定方差的normal distribution,并添加到图像中。

我不确定您的噪音百分比是什么意思,但它不应该根据图像大小而改变。如果按百分比表示每个像素上的噪声多少,则应增加方差。如果你的意思是添加了噪声的像素数量,那么你可以用百分比制作一个随机bool矩阵并从噪声图像中选择。

mask = rand (size (image)) < 0.5; # percentage of pixels to have noise
noised = image;
noised(mask) = imnoise (image, "gaussian")(mask);

如果按噪声百分比表示“丢失的像素数”,则尝试使用盐和胡椒选项。

noise = imnoise (image, "salt and pepper", percentage);
相关问题