Python 对彩色图像进行傅里叶变换模糊处理的示例
时间: 2024-01-08 19:04:12 浏览: 110
图像处理的傅里叶变换
好的,这是一个使用Python对彩色图像进行傅里叶变换模糊处理的示例代码:
首先,我们需要安装必要的库,包括numpy、opencv-python和scipy:
```python
pip install numpy opencv-python scipy
```
然后,我们可以按照以下步骤进行傅里叶变换和模糊处理:
```python
import cv2
import numpy as np
from scipy import fftpack
# 读取图像
img = cv2.imread('test.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行二维傅里叶变换
f = np.fft.fft2(gray)
# 将低频信号移到中心位置
fshift = np.fft.fftshift(f)
# 构建振幅谱
magnitude_spectrum = 20 * np.log(np.abs(fshift))
# 定义模糊核
kernel_size = 21
sigma = 5
kernel = cv2.getGaussianKernel(kernel_size, sigma)
kernel = np.outer(kernel, kernel)
# 将模糊核归一化
kernel /= kernel.sum()
# 进行频域滤波
fshift *= kernel
# 将中心位置移到原来的位置
fshift = np.fft.ifftshift(fshift)
# 进行反傅里叶变换
img_back = np.fft.ifft2(fshift)
# 取反傅里叶变换的实部,并转换回uint8类型
img_back = np.uint8(np.real(img_back))
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Magnitude Spectrum', magnitude_spectrum)
cv2.imshow('Blurred Image', img_back)
cv2.waitKey(0)
```
以上代码会显示原始图像、频域振幅谱和经过傅里叶变换和频域滤波后的图像。你可以根据需要调整模糊核的大小和标准差。
阅读全文