【问题标题】:MATLAB: What is the difference using imnoise and randn for Gaussian noiseMATLAB:对高斯噪声使用 imnoise 和 randn 有什么区别
【发布时间】:2016-08-04 01:23:56
【问题描述】:

在 MATLAB 中添加加性高斯白噪声时,可以使用预定义函数

J = imnoise(I,'gaussian',M,V) % I is the image to add the noise

默认情况下,零均值 (M) 和方差 (V) 0.01。这个函数的说明书是here

但是,在各种 MATLAB 代码中,我还看到通过以下方式将加性高斯噪声添加到图像中

sigma = 10; % standard deviation (STD)

g = I + sigma * randn(size(I)); %add gaussian noise with STD 10

这很好。现在,我们知道了方差的公式,

[![variance=sigma^2][2]][2]

其中 sigma 是 STD。所以,根据第二个代码,我有 sigma = 10 因此,方差 (V) 应该是 100。使用 MATLAB imnoise 函数实现零均值和方差 100 应该是这样的

J = imnoise(I,'gaussian',0,100)

但是,即使接近第二个代码,这也不会产生损坏的图像。图像似乎 100% 被噪声破坏。这有什么不同?我在这里错过了什么吗?

【问题讨论】:

    标签: image matlab signals gaussian noise


    【解决方案1】:

    我看到的主要问题是imnoise 函数需要将图像缩放到间隔[0,1](另请参见answer)。考虑到这一点,100 的方差是没有意义的。您应该在图像旁边缩放方差,希望一切都再次有意义。

    【讨论】:

    • 谢谢,有道理。另外,感谢该链接。很有帮助
    • 一个快速的问题。因此,如果我有一个像素值在 0 到 255 之间的图像并且想要添加 sigma = 10 的噪声,我可以找到方差 = sigma^2/255^2。然后将其用于 imnoise 功能。对吗?
    • @tarmizi 是的,这似乎是正确的。标准差应该以与图像相同的方式缩放(与方差相比,它具有相同的单位),然后通过平方得到方差。
    猜你喜欢
    • 1970-01-01
    • 2013-04-07
    • 2016-08-17
    • 2015-02-04
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2013-10-14
    • 2015-02-08
    相关资源
    最近更新 更多