我正在尝试在图像中应用圆形高通滤波器,但是我不知道是否有任何函数(在opencv,spicy,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')