利用二维傅里叶正变换和反变换在cameraman.tif上添加斜纹正弦波,分别显示其图像和对应傅里叶变换频谱
时间: 2024-10-28 15:16:00 浏览: 31
test1.rar_lena_lenna.tif_傅立叶变换、离散余弦变换、哈达玛变换_图像变换_图像质量
5星 · 资源好评率100%
在计算机视觉和图像处理领域,我们可以利用二维傅里叶变换(2D Fast Fourier Transform, FFT)对图像进行频率分析。`camberrman.tif`是一个常见的图像文件,我们可以按照以下步骤操作:
1. 加载图像:首先,你需要使用相关的库(如Python的PIL或OpenCV)加载图像文件`camberrman.tif`。
```python
from PIL import Image
img = Image.open('camberrman.tif')
```
2. 应用二维傅里叶变换:使用库提供的函数计算图像的傅里叶变换。这会将图像从空间域转换到频率域。
```python
import numpy as np
fft_img = np.fft.fft2(img)
```
3. 添加斜纹正弦波:在频率域中,你可以创建一个表示斜纹正弦波的矩阵,并将其加到原始的傅里叶变换结果上。这个矩阵通常包含特定频率成分。
```python
sine_wave = np.sin(np.arange(img.shape[0]) * freq_axis) * np.sin(np.arange(img.shape[1]) * freq_axis)
modified_fft = fft_img + sine_wave
```
4. 反变换回空间域:为了得到添加了斜纹正弦波后的图像,我们需要对修改后的傅里叶变换做逆变换。
```python
reconstructed_img = np.fft.ifft2(modified_fft).real
```
5. 显示图像和频谱:最后,使用图像处理库绘制原始图像、添加斜纹后的图像以及它们的频谱图。
```python
# 可视化
plt.subplot(1, 2, 1)
plt.imshow(img)
plt.title("Original Cameraman")
plt.subplot(1, 2, 2)
plt.imshow(reconstructed_img, cmap='gray')
plt.title("Modified with Sine Wave")
# 频谱可视化
plt.figure()
plt.imshow(np.abs(np.log(np.abs(fft_img))), cmap='gray', aspect='auto')
plt.title("Original Fourier Spectrum")
plt.figure()
plt.imshow(np.abs(np.log(np.abs(modified_fft))), cmap='gray', aspect='auto')
plt.title("Modified Fourier Spectrum with Sine Wave")
```
阅读全文