这个问题可以被分解为两个部分:
步骤1:创建带噪声的2D余弦函数图像
下面是一个简单的Python示例代码,可以创建一个带噪声的2D余弦函数图像:
import numpy as np
import matplotlib.pyplot as plt
# Create 2D grid
n = 256
x = np.linspace(0, 1, n)
X, Y = np.meshgrid(x, x)
# Create 2D cosine function
freq = 10
Z = np.cos(2 * np.pi * freq * (X + Y))
# Add noise
noise = np.random.normal(0, 0.1, (n, n))
Z += noise
# Display image
plt.imshow(Z, cmap='gray')
plt.show()
在这个例子中,我们首先使用np.meshgrid
创建一个2D网格。然后,我们使用np.cos
函数创建一个二维余弦函数,并在图像上添加了一些高斯噪声,使用np.random.normal
函数,以期望值为0,标准偏差为0.1。
使用plt.imshow,我们可以显示生成的2D余弦函数图像,如下图所示:
步骤2:对2D余弦函数图像执行FFT
我们可以使用np.fft.fft2
函数对2D图像执行快速傅里叶变换,如下所示:
# Compute FFT
Z_fft = np.fft.fft2(Z)
Z_fft_shift = np.fft.fftshift(Z_fft)
# Compute power spectrum
PSD = np.abs(Z_fft_shift) **