python二维DFT的平移性代码
时间: 2023-06-09 07:06:18 浏览: 156
下面是Python实现二维DFT平移性的代码示例:
import numpy as np
import matplotlib.pyplot as plt
# 定义二维DFT函数
def dft2d(f):
return np.fft.fft2(f)
# 定义平移函数
def translate(f, shift):
rows, cols = f.shape
x_shift, y_shift = shift
translation_matrix = np.zeros_like(f)
translation_matrix[x_shift % rows, y_shift % cols] = 1
return np.fft.ifft2(dft2d(f) * np.fft.fft2(translation_matrix))
# 测试代码
im = plt.imread('lena.png')
f = im.mean(axis=2) # 将RGB图像变成灰度图像
shft = [100, 50]
g = translate(f, shft)
# 显示结果
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax[0].imshow(f, cmap='gray')
ax[0].axis('off')
ax[0].set_title('Original')
ax[1].imshow(g.real, cmap='gray')
ax[1].axis('off')
ax[1].set_title('Shifted')
plt.show()
在这个例子中,我们首先定义了一个二维DFT函数dft2d用于计算图像的二维傅里叶变换。然后定义一个平移函数translate,它使用numpy的fft库实现二维傅里叶变换和逆变换。最后,我们加载了一个图像,并将其转换为灰度图像,然后将其向右平移100个像素,向下平移50个像素。最后,我们将原始图像和平移后的图像显示在同一幅图中。
阅读全文