我试图在我的图像中应用一个圆形高通滤波器,但我不知道是否有任何函数(在opencv,spicke,numpy,…)实现了它。所以,如果没有,我如何实现?之后,是否有可能知道所实现的高通滤波器的截止频率?例如,我想要200Hz。 下面是我的代码,只过滤低于200Hz的频率。但我没有察觉到图像有任何变化
import numpy as np
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('dente6.jpg',0)
plt.imshow(img,cmap='gray')
dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
fshift = np.fft.fftshift(dft)
magnitude_spectrum = 20*np.log(cv2.magnitude(fshift[:,:,0],fshift[:,:,1]))
plt.imshow(magnitude_spectrum,cmap='gray')
for i in range(fshift.shape[0]):
for j in range(fshift.shape[1]):
x = magnitude_spectrum[i][j]
if x < 200:
fshift[i][j] = 0
magnitude_spectrum = 20*np.log(cv2.magnitude(fshift[:,:,0],fshift[:,:,1]))
plt.imshow(magnitude_spectrum,cmap='gray')
ifshift= np.fft.ifftshift(fshift)
img_back = cv2.idft(ifshift)
img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1])
plt.imshow(img_back,cmap='gray')
目前没有回答
相关问题 更多 >
编程相关推荐