如果您查看 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
是方差。基本上,它从具有指定方差的正态分布中获取随机数,并添加到图像中。
我不确定你所说的噪声百分比是什么意思,但它不应该根据图像大小而改变。如果按百分比表示每个像素上有多少噪声,那么您应该增加方差。如果您的意思是添加了噪声的像素数量,那么您可以制作一个带有百分比的随机布尔矩阵并从噪声图像中进行选择。
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);