用Python对二维图像进行理想低通滤波,给出代码
时间: 2024-05-11 21:17:32 浏览: 162
以下是Python实现的二维图像理想低通滤波代码:
```
import numpy as np cv2
# 取图像
img = cv2.imread('.jpg')
# 转换为灰度图像
= cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算图像的傅里叶变换fft = np.fft.fft2(gray)
# 将傅里叶变换中心移动到图像中心位置
fft_shift = np.fft.fftshift(fft)
# 设置理想低通滤波器阈值
D0 = 50
# 计算滤波器
h, w = gray.shape
mask = np.zeros((h, w), np.float32)
for i in range(h):
for j in range(w):
dist = np.sqrt((i - h/2)**2 + (j - w/2)**2)
if dist <= D0:
mask[i, j] = 1.0
# 滤波器与频谱相乘
fft_filter = fft_shift * mask
# 计算滤波器输出
filtered = np.fft.ifftshift(fft_filter)
filtered = np.fft.ifft2(filtered)
filtered = np.abs(filtered)
# 显示原图和滤波后图像
cv2.imshow('Original', gray)
cv2.imshow('Ideal Low Pass Filtered', filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在使用该代码时,请注意将图片路径改为你自己的图片路径。
阅读全文