我如何使用python / opencv为图像制作圆形的高通滤波器?

问题描述 投票:0回答:1

我正在尝试在图像中应用圆形高通滤波器,但是我不知道是否有任何函数(在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')
python opencv mask highpass-filter
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.