如果我应用具有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
函数如何工作
答案 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
会自动从其他数据类型重新调整,或者您可以手动重新缩放。