2013-10-04 105 views
1

我在octave中使用imnoise为二进制图像添加高斯噪声,但我认为我的问题一般也足以应用于Matlab。Octave/Matlab - 高斯噪声

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

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

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

我正确吗?因为在不同的图像尺寸下,它会产生不稳定的噪音。与较大的图像相比,较小的图像看起来噪音较小,但具有相同的var

感谢

+0

“噪音百分比”并不意味着什么。 “Var”正是它所说的:你想添加的高斯噪声的方差。它对图像的影响取决于像素图像的强度,一般从0到1。 – Peter

回答

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随机数,并增加了image。

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

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

如果通过噪声的百分比表示“丢失像素数”,则尝试使用salt和pepper选项。

noise = imnoise (image, "salt and pepper", percentage);