向图像添加椒盐噪声

时间:2021-01-03 05:40:26

标签: image matlab noise

我必须在胡椒噪声密度为 0.1 且盐的噪声密度为 0.2 的图像中添加椒盐噪声。如何在matlab中做到这一点

我知道 img = imnoise2(img,'盐和胡椒',M,N,a,b) 我知道 img 是图像 M,N = 图像大小 但是在 a 和 b 之间,这是密度,这让我感到困惑。请帮忙

1 个答案:

答案 0 :(得分:2)

this function 是您所指的 imnoise2 吗?我试过了,但由于代码中的错误,它没有做它应该做的事情(在第 75 行,R(c) = 1; 应该被替换为 R(c) = 0;,因为我们应该添加胡椒噪声而不是盐)。在您的 imnoise2.m 文件中修改这一行,它现在应该可以完成这项工作。第 70 至 75 行应如下所示:

    X = rand(M,N);
    c = find(X<=a);
    R(c) = 1;
    u = a + b;
    c = find(X > a & X <= u);
    R(c) = 0; % <---- In this line, 1 has been replaced by 0

这是我在编辑含有 5% 盐和 1% 胡椒的噪声代码后得到的结果:

>> sum(sum(imnoise2('salt & pepper',500,500,0.05,0.01)==1))/(500*500) % Probability of ones (salt)
ans =
    0.0502
>> sum(sum(imnoise2('salt & pepper',500,500,0.05,0.01)==0))/(500*500) % Probability of zeros (pepper)
ans =
    0.0098

因此第一个参数 a 是盐,第二个 b 是胡椒。如果您有任何疑问,请不要犹豫。请注意,在其他类型的噪声(参数 type~='salt & pepper)中存在更多错误并非不可能。