2

ランダムに生成されたピンク ノイズを含む任意のサイズの 2D 画像を生成したいと思います。 ウィキペディアは、ピンク ノイズの 2D 一般化が 1/f^2 として低下するエネルギーを持つことを示唆しています。MATLAB File Exchangeで、1D ピンク ノイズ ベクトルを計算するコードを見つけました。しかし、それを 2 次元に適切に一般化する方法がわかりません。私は fft にあまり詳しくありません。以下の単純な試みでは、ifft を計算すると複雑なベクトルが生成されます。

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 マトリックスを生成するにはどうすればよいですか?

4

1 に答える 1

3

まず、ウィキペディアの言うことを常に信じてはいけません。または、ピンク ノイズの定義は 2D に対して 1 対 1 ではないため、注意して読んでください。次に、次のFEX ファイル1/f^betaを使用して、通常の誤差分布で空間ノイズを生成できます。そのファイルのドキュメントで詳細を読んでください。

于 2013-10-14T21:45:25.240 に答える