2016-09-01 57 views
0
im = imread('peppers.png'); 
noise=randn(size(im)).*1; 
output=double(im)+noise; 

imshow(output); 

它只是显示一个白色图像显示高斯噪声

我希望它显示peppers.png

回答

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 
+0

谢谢,但这和output = double(im)+ noise有什么不同? – william007

+1

@ william007检查更新。 – NKN