【问题标题】:Create pink noise image in Matlab在 Matlab 中创建粉红噪声图像
【发布时间】:2013-10-22 10:42:05
【问题描述】:

我想生成包含随机生成的粉红噪声的任意大小的 2D 图像。 Wikipedia suggests 粉红噪声的 2D 泛化将具有以 1/f^2 下降的能量。我发现some code on the MATLAB File Exchange 可以计算一维粉红噪声向量。但我不知道如何正确地将其推广到二维——我对 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);

如何生成包含粉红噪声的二维矩阵?

【问题讨论】:

    标签: image matlab fft noise


    【解决方案1】:

    首先,不要总是相信 Wikipedia 告诉您的内容。或者,仔细阅读,因为粉红噪声的定义对于 2D 不是一对一的。 其次,您可以使用以下FEX file 生成1/f^beta 空间噪声,具有正态误差分布。在该文件的文档中阅读更多内容。

    【讨论】:

    • 感谢 FEX 参考。事实证明,由该文件计算的布朗噪声对我来说可能比粉红噪声更有用。
    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 2012-01-31
    • 2013-10-24
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    相关资源
    最近更新 更多