imnoise('gaussian')基本方程式澄清

时间:2013-10-14 13:58:02

标签: image matlab image-processing noise noise-generator

在MATLAB的imnoise()函数中,当噪声类型为'散斑'时,文档清楚地表明它是乘法噪声并指出基本方程。

  

J = imnoise(I,'speckle',v)将乘法噪声添加到图像I,使用等式 J = I + n * I ,其中n是均匀分布的随机噪声0和方差v.v的默认值为0.04。

然而,没有为高斯选项提供这样的等式。还有一个名为'localvar'的独立类型。因此,使用imnoise(I, gaussian, mean_noise, variance_noise)时的等式应为

  

J(x,y)= I(x,y)+ g(mean_noise,sqrt((variance_noise))

此外,我的假设:

  1. 此噪音g与图像的空间坐标无关
  2. 此噪音g与那些空间坐标处的强度无关
  3. g是根据均值mean_noise和标准差sigma = sqrt(variance_noise)
  4. 的高斯分布生成的高斯随机数

    我是对的吗?

    主要更新
    我不接受先前的答案以澄清一些混淆。所以我在matlab中检查了'imnoise'的代码,它的作用是:

      

    b = a + sqrt(p4)* randn(sizeA)+ p3;其中
      b - 添加噪声的图像
      a - 原始图像
      p4 - 方差
      p3 - 意思是

    randn()的范围是多少?我随机检查,产生的值大于1,如1.85。 randn()的文档没有提到有关范围的任何内容。这很奇怪。

2 个答案:

答案 0 :(得分:1)

是的,你是对的。噪声在空间上不相关(i.i.d),也与信号无关。此外,噪声是加性的,并从零均值单位标准偏差高斯中采样,然后根据用户提供的标准偏差进行缩放,并通过用户提供的平均值进行偏移。如果未指定方差和平均值,则imnoise选择零均值和0.01方差。

您实际上可以通过在MATLAB中执行>>编辑imnoise来查看整个代码。你应该有图像处理工具箱。

关于randn() - 它从零均值单位标准差高斯产生i.i.d样本。高斯的范围是(-Inf Inf),因此您可以看到范围外的值(-1 1)。 MATLAB函数rand()给出均匀分布的范围(-1 1)中的值。

已编辑:更新了答案,以包含完全默认的均值和方差值。

答案 1 :(得分:0)

函数imnoise(I,'gaussian',mean,variance)需要在[0 1]之间归一化的方差。因此,如果您的图像是'uint8'类型,则应将参数方差除以255²。

另请注意,方差与标准偏差西格玛不同。如果你使用sigma,你应该把(sigma²/255²)作为方差参数(因为variance =sigma²)。