opencv使用fft图像增强算法python
时间: 2023-05-15 12:06:12 浏览: 160
基于opencv的python图像处理
可以使用cv2.dft()函数进行FFT变换,然后使用cv2.magnitude()函数计算幅度谱,最后使用cv2.idft()函数进行逆变换得到增强后的图像。以下是示例代码:
import cv2
import numpy as np
img = cv2.imread('image.jpg', 0)
dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)
magnitude_spectrum = 20 * np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))
# 高通滤波器
rows, cols = img.shape
crow, ccol = rows // 2, cols // 2
mask = np.ones((rows, cols, 2), np.uint8)
r = 30
mask[crow - r:crow + r, ccol - r:ccol + r] = 0
# 应用滤波器
fshift = dft_shift * mask
f_ishift = np.fft.ifftshift(fshift)
img_back = cv2.idft(f_ishift)
img_back = cv2.magnitude(img_back[:, :, 0], img_back[:, :, 1])
cv2.imshow('Original Image', img)
cv2.imshow('Magnitude Spectrum', magnitude_spectrum)
cv2.imshow('Enhanced Image', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
阅读全文