python图像傅里叶变换实现纠偏
时间: 2023-09-11 20:04:47 浏览: 58
作为AI语言,Python可以用于图像处理,包括图像傅里叶变换。那么如何使用Python对图像进行傅里叶变换来实现纠偏呢?
1. 导入必要的库
首先,我们需要导入必要的库,包括numpy、cv2和matplotlib。
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
```
2. 加载图像
我们需要加载需要处理的图像,这里以一张斜着的字母A为例。
```python
img = cv2.imread('A.jpg', cv2.IMREAD_GRAYSCALE)
```
3. 对图像进行傅里叶变换
使用numpy库中的fft2函数对图像进行傅里叶变换。
```python
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
```
4. 求取图像的幅度谱和相位谱
使用numpy库中的abs函数和angle函数求取图像的幅度谱和相位谱。
```python
magnitude_spectrum = 20*np.log(np.abs(fshift))
phase_spectrum = np.angle(fshift)
```
5. 对幅度谱进行中心化处理
为了方便观察,我们可以对幅度谱进行中心化处理,即将傅里叶变换后的图像平移一半的大小,使得低频部分位于图像中心。
```python
rows, cols = img.shape
crow, ccol = rows//2, cols//2
magnitude_spectrum_center = magnitude_spectrum[crow-50:crow+50, ccol-50:ccol+50]
```
6. 显示图像
最后,我们可以使用matplotlib库中的imshow函数来显示图像。
```python
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum_center, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
```
完整代码如下:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('A.jpg', cv2.IMREAD_GRAYSCALE)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20*np.log(np.abs(fshift))
phase_spectrum = np.angle(fshift)
rows, cols = img.shape
crow, ccol = rows//2, cols//2
magnitude_spectrum_center = magnitude_spectrum[crow-50:crow+50, ccol-50:ccol+50]
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum_center, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
```
运行完毕后,我们可以看到原始图像和傅里叶变换后的幅度谱。接下来,我们可以根据幅度谱进行纠偏处理。