【问题标题】:How to generate a pink noise image?如何生成粉红噪声图像?
【发布时间】:2021-04-24 22:02:53
【问题描述】:

我正在尝试用 Python 复制 P. Bourke 的 "Frequency Synthesis of Landscapes"。我认为这将是一个简单的

import numpy as np
from scipy.fft import fft2, ifft2

whitenoise = np.random.uniform(0,1,(256,256,3))
fouriertransformed = np.fft.fftshift(fft2(whitenoise))
pinktransformed = np.reciprocal(fouriertransformed)
pinknoise = ifft2(np.fft.ifftshift(pinktransformed)).real

但它似乎要复杂得多。我怎样才能做到这一点,如何检查结果图像中的功率是否真的下降了 1/f**2?

【问题讨论】:

    标签: python numpy fft noise noise-generator


    【解决方案1】:

    这里的问题是,通过计算pinktransformed = np.reciprocal(fouriertransformed),您可以计算出 幅值 的倒数,但您真正想要的是 将这些幅值缩放1/f**2,所以您必须将该行替换为

    pinktransformed = fouriertransformed / f**2
    

    其中f 是一个数组,其中包含与傅立叶变换的每个 bin 对应的频率

    【讨论】:

    • 我不确定我能不能跟上。在图像的情况下,“包含频率的数组”是什么意思?
    • 您的原始图像在图像中占据一个空间位置,并将其转换为一种“能量”,即白噪声。您正在进行傅里叶变换,这意味着虽然该值仍然是能量,但数组中的位置对应于空间“频率”或 1/波长。这些被称为波矢量,对应于平面波。您需要将每个位置除以该位置的波矢量幅度。
    • 正如@MattMiguel 刚刚解释的那样:FT 为您提供了一系列频率范围内的振幅。从傅立叶变换得到的向量的输入是某个给定频率幅度。如果这个基本属性不清楚,我建议阅读关于连续和离散傅立叶变换的介绍。
    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 2013-10-22
    • 1970-01-01
    • 2012-01-31
    • 2019-11-19
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    相关资源
    最近更新 更多