我用NumPy编写了自己的2d DFT版本,但是它非常慢,并且给出的结果与np.fft.fft2不同。 np fft.fft2是否基于快速傅立叶变换?我的代码有什么问题吗?
def gray_DFT(spatial_img, centerlize = False):
M,N = spatial_img.shape
frequency_img = np.zeros(spatial_img.shape)
for u in range(0,M):
for v in range(0,N):
print(u,v)
mesh_x, mesh_y = np.meshgrid(np.arange(M),np.arange(N), indexing = 'ij')
matrix = u * mesh_x / M + v * mesh_y / N
complex_matrix = -2j*np.pi*matrix
exp_matrix = np.exp(complex_matrix)
if centerlize:
transform_matrix = np.power((-np.ones((M,N))), mesh_x + mesh_y)
frequency_img[u,v] = np.sum(spatial_img*transform_matrix*exp_matrix)
else:
frequency_img[u,v] = np.sum(spatial_img*exp_matrix)
return frequency_img