У меня есть задача выполнения «произвольной» Фурье-фильтрации изображений - Баттерворта, Бесселя и других типов фильтров низких / высоких / полосовых частот и фильтров отбраковки.Наивная реализация:
# b, a are the result of scipy.signal.bessel or .butter, etc
# lfilter could be filtfilt too
filt_y = signal.lfilter(b, a, img, axis=0)
filt_both = signal.lfilter(b, a, filt_y, axis=1)
передаст эффект вдоль креста, проходящего начало координат в k-пространстве, но оставит нетронутыми угловые области.Есть ли способ все еще использовать scipy.signal для этого, но с кольцами для внутренних и внешних областей?Мне не нужен DoG или другой тип фильтра на основе ядра, как в cv2, но причинный фильтр, реализованный в scipy.signal.
В принципе, все, что нужно, это уметь проходитьв значении частоты, np.sqrt (fxx ** 2 + fyy ** 2), для каждой выборки, но я не вижу, как это сделать в сигнальном API.