如何调整滤波器的方向
原文地址:https://medium.com/@itberrios6/a-quick-introduction-to-steerable-filters-3fd8813f2e63
当我第一次听说方向可调滤波器时,我不知道它们是什么,它们看起来只是另一种具有抽象用例的过于复杂的计算机视觉技术。尽管有许多资料简单地解释了计算机视觉主题,但我无法找到任何关于可操纵滤波器的资料。经过一些调查,我意识到它们实际上很简单,如果你熟悉图像梯度,你将能够快速掌握方向可调滤波器的概念。这篇文章是代码第一探索用于图像处理的可控滤波器,代码位于GitHub上。
tl;dr:方向可调滤波器能够在我们选择的任何方向/方向上提供图像梯度。我们可以通过使用在已知方向上产生梯度的滤波器的线性组合来引导滤波器朝着这个方向。
背景
从基础开始
你可能已经知道Sobel滤波器,它们是在x(水平)和y(垂直)方向上获取图像梯度的滤波器。换句话说,它们在水平和垂直方向上提供响应。渐变的方向也称为方向,所以水平渐变的方向是0度,而垂直渐变的方向是90度。实际上可以将这两个Sobel滤波器组合起来,以引导梯度在任何方向上,这是可方向滤波器的前提。我们认为水平方向的Sobel滤波器被操控为0度,而垂直方向的Sobel滤波器被操控为90度。
创建Test Image
为了帮助可视化转向,我们将创建一个简单的测试图像
import numpy as np
import cv2
# size of test image
n = 512
# get test image of a circle
test_image = np.zeros((n, n))
cv2.circle(test_image, center=(n//2, n//2), radius=n//3, color=(255,), thickness=-1)
# blurr test image
cv2.GaussianBlur(test_image, ksize=(15,15), sigmaX=13, dst=test_image)
# 0-1 normalize
test_image = cv2.