高斯噪声澄清 让我们考虑一个具有以下值的3x3像素的图像,如果我应用函数(Matlab图像处理工具箱),高斯噪声为0平均值和0标准差,则得到所有的

高斯噪声澄清 让我们考虑一个具有以下值的3x3像素的图像,如果我应用函数(Matlab图像处理工具箱),高斯噪声为0平均值和0标准差,则得到所有的,matlab,Matlab,具有双进动数据类型的原始矩阵 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函数是如何工作的imnoise假设高斯图像是范围为[0,1]的双精度图像 在代码中查看如何处

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

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
函数是如何工作的

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

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

如果输入图像不是双精度图像→ 使用
im2double
(自动缩放)转换为double,存储输入类(这样输出可以在最后转换回来)

如果输入图像是双精度的→ 无需转换,只需使用
a=max(min(a,1),0)
剪辑到[0 1]。因此,对于所有值都大于1的示例,只需将其裁剪为1的矩阵

这(使用您的示例数据)将实现您所期望的:

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

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

此错误是否仅在平均值和标准偏差设置为零时发生?您是否尝试过使用默认值(平均值=0,标准偏差0.01)?