(图文无关₍ᐢ..ᐢ₎♡,目前Ableabc也是初学者,一起学习吧)
简单讲解的视频地址:BiliBili
在图像处理领域,以Dennis Gabor命名的Gabor滤波器,是一种用于纹理分析的线性滤波器,即它主要分析的是,图像在某一特定区域的特定方向上是否有特定的频率内容。当代许多视觉科学家认为,Gabor滤波器的频率和方向的表达与人类的视觉系统很相似,尽管并没有实验性证据和函数原理能证明这一观点。研究发现,Gabor滤波器特别适合于纹理表示和辨别。在空间域中,2D Gabor滤波器是由正弦平面波调制的高斯核函数。 其脉冲响应定义为定义为一个正弦波(对于二维Gabor滤波器是平面波)乘以高斯函数。因为乘法卷积性质(卷积定理),由于乘法卷积性质,Gabor滤波器的脉冲响应的傅立叶变换是调和函数的傅立叶变换和高斯函数傅立叶变换的卷积。该滤波器具有表示正交方向的实部和虚部。两个分量可以构成复数或单独使用。
-复数形式:



<gabor.py>
img = cv2.imread(filename) # 读图像
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转灰度
frequency = 0.6
# gabor变换
real, imag = filters.gabor(img_gray, frequency=0.6, theta=60, n_stds=5)
# 取模
img_mod = np.sqrt(real.astype(float) ** 2 + imag.astype(float) ** 2)
# 图像缩放(下采样)
newimg = cv2.resize(img_mod, (0, 0), fx=1 / 4, fy=1 / 4, interpolation=cv2.INTER_AREA)
tempfea = newimg.flatten() # 矩阵展平
tmean = np.mean(tempfea) # 求均值
tstd = np.std(tempfea) # 求方差
newfea = (tempfea - tmean) / tstd # 数值归一化