数字图像傅里叶变换平移
时间: 2024-12-29 20:19:06 浏览: 12
### 数字图像处理中傅里叶变换的平移属性
在数字图像处理领域,傅里叶变换是一种强大的工具,能够将图像从空间域转换到频域进行分析和处理[^3]。对于傅里叶变换而言,当对一幅图像执行平移操作时,在频域内仅会引入相位的变化而不会影响幅度谱。
具体来说,如果有一幅大小为 \(M \times N\) 的图像 \(f(x,y)\),对其进行二维离散傅里叶变换可得:
\[ F(u,v)=\sum_{x=0}^{M-1}\sum_{y=0}^{N-1} f(x,y)e^{-j2\pi(ux/M+vy/N)} \]
假设该图像被沿 X 轴方向移动了 \(dx\) 像素以及 Y 轴方向上移动了 \(dy\) 像素,则新的函数变为 \(g(x,y) = f((x-dx),(y-dy))\) 。此时对应的傅里叶变换表达式将会多出一个线性相位项:
\[ G(u,v) = e^{-j2π(ud_x / M + vd_y / N)}F(u,v) \]
这表明,虽然原始的空间分布发生了变化,但在频率响应方面只是增加了额外的角度偏转——即所谓的“相角”,而不改变各频率成分的能量分配情况[^4]。
为了更好地理解和验证上述理论,下面给出一段 Python 实现代码来展示这一特性:
```python
import numpy as np
from scipy.fftpack import fftshift, ifftshift, fft2, ifft2
import matplotlib.pyplot as plt
from PIL import Image
def shift_image(image, dx, dy):
"""Shift an image by (dx, dy)."""
shifted_fft = np.roll(np.fft.fft2(image), shift=(dx, dy), axis=(0, 1))
return np.real(np.fft.ifft2(shifted_fft))
img_path = 'path_to_your_image_file'
image = np.array(Image.open(img_path).convert('L'))
# Shift parameters
dx, dy = 50, -70
shifted_img = shift_image(image, dx, dy)
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8, 4))
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original')
axes[1].imshow(shifted_img, cmap='gray')
axes[1].set_title(f'Shifted ({dx}, {dy})')
plt.tight_layout()
plt.show()
# Displaying the Fourier spectra of both images to compare them.
spectrum_original = fftshift(fft2(ifftshift(image)))
magnitude_spectrum_orig = 20 * np.log(np.abs(spectrum_original)+1e-9)
spectrum_shifted = fftshift(fft2(ifftshift(shifted_img)))
magnitude_spectrum_shifted = 20 * np.log(np.abs(spectrum_shifted)+1e-9)
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8, 4))
axes[0].imshow(magnitude_spectrum_orig, cmap='gray')
axes[0].set_title('Magnitude Spectrum Original')
axes[1].imshow(magnitude_spectrum_shifted, cmap='gray')
axes[1].set_title('Magnitude Spectrum Shifted')
plt.tight_layout()
plt.show()
```
这段程序首先定义了一个 `shift_image` 函数用来完成给定像素级别的水平垂直两个维度上的位移操作;接着读取并显示了一张灰度图片及其经过指定距离\(dx=-50,\space dy=70\)之后的结果;最后分别计算两者的傅立叶振幅谱,并进行了可视化比较以证明两者之间确实只存在相位差异而非强度上的区别[^2]。
阅读全文