显示高斯噪声

Showing Gaussian noise

im = imread('peppers.png');
 noise=randn(size(im)).*1;
output=double(im)+noise;

imshow(output);

它只是显示一个白色图像

我希望它在 peppers.png

之上显示一些高斯噪声

您应该首先使用 im2double(而不是 double)转换为双精度,然后添加噪声:

im = imread('peppers.png');
imd = im2double(im);
noise=randn(size(im)).*0.1;
output=imd+noise;
imshow(output);

为什么会这样?

如果您检查 im 变量的类型,您会看到它是 uint8。将函数 double 应用于类型为 uint8 的矩阵不会重新缩放值,只会更改函数的类型。

>> im(100,100)

ans =

   66

>> double(im(100,100))

ans =

    66

并检查类型:

>> class(im)

ans =

uint8

>> class(double(im))

ans =

double

另一方面,当我们使用 im2double 时,矩阵被重新缩放(至 [0 1])并且 class 也更改为 double:

>> imd(100,100)

ans =

    0.2588

>> class(imd)

ans =

double