如何添加特定量的高斯或盐和辣椒噪音使用matlab功能?

时间:2013-09-28 04:31:26

标签: matlab image-processing noise

这个问题对其他人来说可能非常愚蠢,但对我来说这是非常困难的。

您好,我是 MATLAB 的初学者,我最近正在阅读一篇论文,其中我们必须以下列方式在图像中添加噪音。

高斯噪声=> sigma = 10

Salt&辣椒噪音=> p = 20% sp

我知道用于添加噪声的 MATLAB 函数,我们使用imnoise()函数。

noise_image = imnoise(input_image, 'salt & pepper', gaus_val)

将添加盐和&胡椒噪音和

noise_image = imnoise(input_image, 'gaussian', 0 , salt_pepper_val);

将添加方差salt_pepper_val的ZERO-MEAN高斯噪声。

现在我的问题是使用imnoise()函数如何添加以下噪音量。换句话说,对于gaus_val和salt_pepper_val的值,我将得到量sigma = 10%,20%,.....的高斯噪声和20%的盐和胡椒噪声,30%....... ........

高斯噪声=> sigma = 10

Salt&辣椒噪音=> p = 20% sp

1 个答案:

答案 0 :(得分:9)

使用不同的参数,因为两种类型的噪声的特征不同:

  1. 高斯噪声会破坏整个图像,如果它是白色(即没有空间协方差),零均值(平均来说它不会使图像变亮或变暗),那么它完全由噪声幅度西格玛定义。如果您阅读www.mathworks.com/help/images/ref/imnoise.html文档,那么您会看到您可以同时指定均值和方差(sigma * sigma - 如果sigma = 10则方差= 100)。然后,您可以使用以下方法添加sigma 10的噪音:

    >> noise_image = imnoise(input_image, 'gaussian', 0 , 100);
    
  2. 盐和胡椒噪声是图像中的白色(盐)和黑色(胡椒)斑点,即它们不影响每个像素。 sp是被破坏的图像的百分比(默认为5%或0.05),因此sp = 20%= 0.2表示5个像素中的1个已损坏:

    >> noise_image = imnoise(input_image, 'salt & pepper', 0.2);
    
  3. 完全如帮助页面所述。

    编辑:请注意imnoise()用于强度介于0和1之间的图像,并且范围[0,1]之外的值会被剪裁 - 方差可能不是您指定的值。 / p>

    你也可以轻松地做同样的事情而不使用imnoise:

    (1)将图像加载为[0,1]灰度:

      >> input_image = mean(imread('peppers.png'),3)/256;
    

    (2)添加高斯噪音0.1 *图像的sigma:

      >> image2 = randn(size(input_image)); 
      >> image2 = input_image+image2*0.1*std(input_image(:))/std(image2(:)); 
    

    (3)在20%的像素中添加s& p噪音:

      >> image3 = input_image; 
      >> li=randperm(length(image3(:))); 
      >> image3(li(1:(end/5)))=1; 
      >> image3(li(1:(end/10)))=0; 
    

    (4)并排显示:

      >> imagesc([input_image image2 image3])