我正在尝试复制"景观频率合成";P. Bourke用Python编写。我认为这将是一个简单的
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 ?
这里的问题是,通过计算pinktransformed = np.reciprocal(fouriertransformed)
,你计算的是振幅的倒数,但你真正想要的是将这些振幅乘以1/f**2
,所以你必须用
pinktransformed = fouriertransformed / f**2
,其中f
是包含频率的数组,该频率对应于傅里叶变换的每个bin。