1. 读取一幅图像,显示原始图像及其傅里叶频谱。 2. 读取一幅图像,使用两次一维傅里叶变换代替二维傅里叶变换对其进行处理,显示原始图像及其傅里叶频谱。 3. 读取一幅图像,对其旋转一定的角度(比如顺时针45), 显示旋转后的图像及其傅里叶频谱。
时间: 2024-10-16 12:21:56 浏览: 35
FTT.rar_Vc_图像 傅立叶_图像 快速傅立叶变换_快速傅立叶变换
在Python中,我们可以使用`matplotlib`库来展示图像,以及`numpy`库来处理数组和进行傅里叶变换。这里我们将分步说明每个操作:
1. **读取并显示图像与傅里叶频谱**[^4]:
```python
from matplotlib.pyplot import imread, plt
import numpy as np
img = imread('image.jpg') # 替换为你的图片路径
plt.imshow(img)
# 对于灰度图像,可以进行傅立叶变换
fft_img = np.fft.fft2(img)
plt.title("Original Image and Fourier Spectrum")
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.subplot(122), plt.imshow(np.abs(fft_img))
plt.show()
```
2. **两次一维傅里叶变换**[^5]:
```python
row_fft = np.fft.fftshift(np.fft.fft(img, axis=0))
col_fft = np.fft.fftshift(np.fft.fft(row_fft, axis=1))
plt.figure(figsize=(10, 5))
plt.subplot(121), plt.imshow(img)
plt.subplot(122), plt.imshow(np.abs(col_fft))
```
这将分别对每一列和每一行应用一维傅里叶变换。
3. **图像旋转和傅里叶变换**[^6]:
```python
from scipy.ndimage.interpolation import rotate
rotated_img = rotate(img, 45, reshape=False) # 顺时针45°旋转
rotated_fft = np.fft.fftshift(np.fft.fft(rotated_img))
plt.figure(figsize=(10, 5))
plt.subplot(121), plt.imshow(rotated_img)
plt.subplot(122), plt.imshow(np.abs(rotated_fft))
```
注意:上述代码假设`image.jpg`存在并适合处理。替换为实际的图片文件路径。
阅读全文