显示高斯噪音

时间:2016-09-01 03:39:03

标签: matlab computer-vision

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

imshow(output);

它只显示白色图像

我希望它在peppers.png

之上显示一些高斯噪音

1 个答案:

答案 0 :(得分:3)

您应首先使用im2double(不是double)转换为加倍,然后添加噪音:

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

enter image description here

为什么会这样?

如果您检查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])并且类也会更改为double

>> imd(100,100)

ans =

    0.2588

>> class(imd)

ans =

double