Как я могу сделать фильтр высоких частот в круговой форме для изображений, используя python / opencv? - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь применить круговой фильтр верхних частот в моем изображении, но я не знаю, есть ли какая-либо функция (в opencv, spicy, numpy, ...), которая реализует это.Итак, если нет, как я могу реализовать?После этого, есть ли возможность узнать частоту среза реализованного фильтра верхних частот?например, я хотел бы 200 Гц.Ниже приведен мой код, который фильтрует только частоты менее 200 Гц.Но я не вижу никаких изменений в изображении = (

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...