2016-09-01 54 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