我尝试使用以下公式在灰度图像中计算 2D DFT:
我用python写了下面的代码
def DFT2D(image):
data = np.asarray(image)
M, N = image.size # (img x, img y)
dft2d = np.zeros((M,N))
for k in range(M):
for l in range(N):
sum_matrix = 0.0
for m in range(M):
for n in range(N):
e = cmath.exp(- 2j * np.pi * ((k * m) / M + (l * n) / N))
sum_matrix += data[m,n] * e
dft2d[k,l] = sum_matrix
return dft2d
我认为我有一些问题,因为我没有得到预期的结果。我得到下面的图像:
我不知道我的代码中的问题在哪里!
我不想使用内置函数,我认为这应该可行,但可能存在一些数学问题。当我得到一个结果矩阵并将其转换为图像时,它与预期的 DFT 图像不同