2016-04-13 248 views
3

當在MATLAB中添加加性高斯白噪聲,可以使用預定義的功能MATLAB:是什麼使用imnoise和randn爲高斯噪聲

J = imnoise(I,'gaussian',M,V) % I is the image to add the noise 

與默認情況下,零均值(M)和方差(V )0.01。該功能的手冊是here

然而,在不同的MATLAB代碼,我也看到了加性高斯噪聲是由哪個以下罰款方式

sigma = 10; % standard deviation (STD) 

g = I + sigma * randn(size(I)); %add gaussian noise with STD 10 

添加到圖像。現在,我們知道方差的公式,

[![variance=sigma^2][2]][2] 

其中西格瑪是性病。因此,根據第二代碼,我有標準差= 10因此,方差(V)應當是100使用MATLAB imnoise功能零均值和方差100應該是這樣的

J = imnoise(I,'gaussian',0,100) 

然而,這並即使接近第二個代碼也不會產生損壞的圖像。圖像似乎被100%的噪聲損壞。這有什麼不同?我在這裏錯過了什麼嗎?

回答

2

我看到的主要問題是imnoise函數期望圖像縮放到區間[0,1](也請參閱此answer)。考慮到這一點,100的方差是沒有意義的。您應該縮放圖像旁邊的變化,並希望一切都有意義。

+0

謝謝,這是有道理的。另外,感謝您的鏈接。這有幫助 – tarmizi

+0

一個快速的問題,但。所以如果我有一個像素值在0到255之間的圖像,並且希望用sigma = 10添加噪聲,我可以找到方差爲,方差= sigma^2/255^2。然後使用這個imnoise函數。那是對的嗎 ? – tarmizi

+1

@tarmizi是的,這似乎是正確的。標準偏差應該按照與圖像相同的方式進行縮放(它與方差相比具有相同的單位),然後通過平方得到方差。 –