imnoise高斯噪声澄清

时间:2013-11-18 15:19:07

标签: matlab

如果我应用具有0均值和0标准差的高斯噪声的imnoise函数(MATLAB图像处理工具箱),我们可以考虑使用下面显示的值的3x3像素图像

具有双进动数据类型的原始矩阵

16    32     64                      
96    128    192                    
224   100    50  
应用具有0均值和0标准差的高斯噪声后的

最终矩阵

1 1 1
1 1 1
1 1 1

到目前为止,我知道0平均值为0标准偏差与添加到原始图像的0%噪声相同我想知道MATLAB中的imnoise函数如何工作

1 个答案:

答案 0 :(得分:0)

imnoise假设高斯显示图像是范围为[0,1]的双精度。

在代码中查看输入图像的处理方式。如果您在命令行键入edit imnoise.m,您应该可以看到这一点 - 它发生在ParseInputs内的imnoise函数下(我的版本中的第188行)。

如果输入图像不是double→使用im2double(自动缩放)转换为double,则存储输入类(因此输出可以在最后转换回来)。

如果输入图像是双→无转换,则只需使用a = max(min(a,1),0)剪辑为[0 1]。因此,所有值都高于1的示例只会被剪切为一个矩阵。

这(使用您的示例数据)将按预期执行:

I2 = imnoise(uint8(I),'gaussian',0,0);

更一般地说 - 如果您的双打没有[0,1]范围,这不是图像处理工具箱中唯一返回意外结果的函数。如果您想以双重格式工作,im2double会自动从其他数据类型重新调整,或者您可以手动重新缩放。