2013-10-14 89 views
2

我想生成包含隨機生成的粉紅噪聲的任意大小的二維圖像。 Wikipedia suggests粉紅噪聲的二維推廣將有能量下降爲1/f^2。我發現some code on the MATLAB File Exchange計算一維粉紅噪聲矢量。但我不知道如何正確地將它推廣到兩個維度 - 我對fft不是很熟悉,當我計算ifft時,下面的天真嘗試會產生複雜的向量。在Matlab中創建粉色噪聲圖像

function pink = pinkNoiseImage(nrow,ncol) 

rnrow = 2.^(ceil(log2(nrow))); 
rncol = 2.^(ceil(log2(ncol))); 
r = randn(rnrow,rncol); 
rf = fft(r); 
rnup = rnrow/2+1; 
cnup = rncol/2+1; 
frf = kron(1./sqrt(1:cnup),1./sqrt(1:rnup)'); 

rf(1:rnup,1:cnup) = rf(1:rnup,1:cnup).*frf; 
rf(rnup+1:rnrow,1:cnup) = real(frf(rnrow/2:-1:2,1:cnup))-1i*imag(frf(rnrow/2:-1:2,1:cnup)); 
rf(1:rnup,cnup+1:rncol) = real(frf(1:rnup,rncol/2:-1:2))-1i*imag(frf(1:rnup,rncol/2:-1:2)); 
rf(rnup+1:rnrow,cnup+1:rncol) = real(frf(rnrow/2:-1:2,rncol/2:-1:2))-1i*imag(frf(rnrow/2:-1:2,rncol/2:-1:2)); 

pink = ifft(rf); 

如何生成包含粉紅噪聲的2D矩陣?

回答

3

首先,不要總是相信維基百科告訴你什麼。或者,仔細閱讀,因爲粉紅噪聲的定義對2D來說不是一對一的。 其次,您可以使用以下FEX file生成1/f^beta空間噪聲,並具有正常的錯誤分佈。在該文件的文檔中閱讀更多信息。

+0

感謝FEX參考。事實證明,由該文件計算的布朗噪聲可能比粉紅噪聲更有用。 – nhowe