在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% 被噪声破坏了。这有什么不同?我在这里错过了什么吗?
最佳答案
我看到的主要问题是 imnoise
函数期望图像被缩放到区间 [0,1]
(另见这个 answer )。考虑到这一点,100 的方差是没有意义的。您应该在图像旁边缩放方差,希望一切都再次有意义。
关于image - MATLAB:对高斯噪声使用 imnoise 和 randn 有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36590084/