出一个Python代码示例,展示图像傅里叶变换的平移性质
时间: 2024-10-10 10:04:46 浏览: 38
在Python中,我们可以使用`numpy`库和`scipy`库来进行图像处理,包括傅里叶变换。图像的平移可以在频域中通过简单的频率移动实现。以下是一个简化的示例,展示了如何对图像应用离散傅立叶变换(DFT),然后通过平移频率轴来模拟图像的平移:
```python
import numpy as np
from scipy import signal
# 加载示例图像
image = plt.imread('example_image.jpg') # 替换为你实际的图片路径
image = image.astype(np.float64) / 255 # 归一化到0-1范围
# 对图像进行二维DFT
dft = np.fft.fft2(image)
# 确定平移量,这里假设水平和垂直方向都平移了10像素
shift_h, shift_v = 10, 10
# 应用平移规则,对于每一个频率分量 (u, v),新的位置计算为 (u-shift, v-shift)
shifted_dft = np.fft.ifftshift(dft, axes=(0, 1)) # 首先进行坐标中心对齐
shifted_dft = np.fft.fftshift(shifted_dft, axes=(0, 1), cval=0) # 再按原坐标轴对齐
# 取出实部和幅值,因为通常我们只关心实部表示的是图像,幅值代表强度
shifted_img = np.abs(shifted_dft).astype(np.uint8)
plt.subplot(121), plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.subplot(122), plt.imshow(shifted_img, cmap='gray')
plt.title(f'Shifted by ({shift_h}, {shift_v}) pixels')
plt.show()
阅读全文