利用图像的傅里叶变换实现图像的滤波的python代码
时间: 2024-05-09 10:18:07 浏览: 188
以下是 Python 中利用图像的傅里叶变换实现图像的滤波的代码示例:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg', 0)
# 快速傅里叶变换
f = np.fft.fft2(img)
# 频率平移,将低频移到中心
fshift = np.fft.fftshift(f)
# 构建高通滤波器
rows, cols = img.shape
crow, ccol = rows // 2, cols // 2
mask = np.ones((rows, cols), np.uint8)
mask[crow - 30:crow + 30, ccol - 30:ccol + 30] = 0
# 应用滤波器
fshift = fshift * mask
# 频率逆平移
f_ishift = np.fft.ifftshift(fshift)
# 逆傅里叶变换
img_back = np.fft.ifft2(f_ishift)
# 实部取整数,显示图像
img_back = np.abs(img_back).astype(np.uint8)
cv2.imshow('image', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
接下来,是一则笑话:
为什么北极熊不会游泳?因为他们太胖,只有在冰面上才能保持平衡!
相关问题
python 基于傅里叶变换实现低通滤波图像变换
可以使用Python中的numpy和OpenCV库来实现基于傅里叶变换的低通滤波图像变换。下面是一个简单的实现步骤:
1. 读取图像并转换为灰度图像。
```python
import cv2
import numpy as np
# 读取图像并转换为灰度图像
img = cv2.imread('input.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
2. 对灰度图像进行傅里叶变换,并将零频率分量移到频谱中心。
```python
# 对灰度图像进行傅里叶变换
f = np.fft.fft2(gray)
# 将零频率分量移到频谱中心
fshift = np.fft.fftshift(f)
```
3. 构建低通滤波器并将其应用于频谱。
```python
# 构建低通滤波器
rows, cols = gray.shape
crow, ccol = rows // 2, cols // 2
mask = np.zeros((rows, cols), np.uint8)
mask[crow - 30 : crow + 30, ccol - 30 : ccol + 30] = 1
fshift = fshift * mask
# 将零频率分量移回原来位置
f_ishift = np.fft.ifftshift(fshift)
# 对变换后的频谱进行傅里叶逆变换
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)
```
4. 显示变换后的图像。
```python
# 显示变换后的图像
cv2.imshow('Input Image', gray)
cv2.imshow('Low Pass Filtered Image', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
python 基于傅里叶变换实现高通滤波图像变换
可以使用Python中的numpy和OpenCV库来实现基于傅里叶变换的高通滤波图像变换。下面是一个简单的实现步骤:
1. 读取图像并转换为灰度图像。
```python
import cv2
import numpy as np
# 读取图像并转换为灰度图像
img = cv2.imread('input.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
2. 对灰度图像进行傅里叶变换,并将零频率分量移到频谱中心。
```python
# 对灰度图像进行傅里叶变换
f = np.fft.fft2(gray)
# 将零频率分量移到频谱中心
fshift = np.fft.fftshift(f)
```
3. 构建高通滤波器并将其应用于频谱。
```python
# 构建高通滤波器
rows, cols = gray.shape
crow, ccol = rows // 2, cols // 2
mask = np.zeros((rows, cols), np.uint8)
mask[crow - 30 : crow + 30, ccol - 30 : ccol + 30] = 1
fshift = fshift * mask
# 将零频率分量移回原来位置
f_ishift = np.fft.ifftshift(fshift)
# 对变换后的频谱进行傅里叶逆变换
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)
```
4. 显示变换后的图像。
```python
# 显示变换后的图像
cv2.imshow('Input Image', gray)
cv2.imshow('High Pass Filtered Image', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文