2021-08-07 Gabor滤波器简介以及简单应用

Gabor滤波器(Gabor Filter)

文章目录

  • Gabor滤波器(Gabor Filter)
    • 简介
    • Gabor滤波器的不同参数
    • Gabor滤波器的简单应用(python)

简介

  • Gabor滤波器是一种线性滤波器,用于边缘检测、纹理分析、特征提取等。这些过滤器已被证明在空间域和频率域都具有最佳定位特性,因此非常适合纹理分割问题。
  • Gabor滤波器是带通滤波器的特殊类别,即它们允许特定的频率“带”而拒绝其他频率
  • Gabor滤波器可以被视为特定频率和方向的正弦信号。
  • 在实践中,为了分析纹理或从图像中获得特征,需使用不同方向的Gabor滤波器。
  • 当输入图像与所有Gabor滤波器卷积时,模式很容易突出显示。当Gabor滤波器应用于图像时,它在边缘和纹理变化点给出最高的响应。当我们说滤波器响应特定特征时,指的是滤波器在该特征的空间位置具有显著值。

Gabor滤波器的不同参数

滤波器有一个表示正交方向的实数和虚数分量。这两个组件可以形成一个复数或单独使用。方程如图所示:
2021-08-07 Gabor滤波器简介以及简单应用_第1张图片
在上述方程中,

  • λ \lambda λ :正弦分量的波长。波长控制着Gabor函数条带的宽度。增加波长会产生较厚的条纹,减少波长会产生更薄的条纹。
    2021-08-07 Gabor滤波器简介以及简单应用_第2张图片
  • θ \theta θ:控制Gabor函数的方向。零度对应于Gabor函数的垂直位置。
    2021-08-07 Gabor滤波器简介以及简单应用_第3张图片
  • γ \gamma γ:控制长宽比或Gabor函数的高度。对于非常大的长宽比,高度变得非常小;对于非常小的长宽比,高度变得非常大,就像圆形与椭圆各自的长宽比。
    2021-08-07 Gabor滤波器简介以及简单应用_第4张图片
  • σ \sigma σ:控制带宽或Gabor包络的整体大小。对于较大的带宽,条纹数量增加。
    2021-08-07 Gabor滤波器简介以及简单应用_第5张图片

Gabor滤波器的简单应用(python)

import numpy as np
import cv2
import matplotlib.pyplot as plt

ksize = 5
sigma = 3
theta = 1*np.pi/1
lamda = 1*np.pi/4
gamma = 0.5
phi = 0

# ktype: what type of kernel values
# Once the kernel is generated, how do we want to store the numbers
# So 32F indicates the type and range of the values (float 32)
# sigma: bandwidth
# theta: orientation
# lamda: wavelength
# gamma: aspect ratio
# phi: phase offset
kernel = cv2.getGaborKernel((ksize, ksize), sigma, theta, lamda, gamma, phi, ktype=cv2.CV_32F)

img = cv2.imread('synthetic.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

fimg = cv2.filter2D(img, cv2.CV_8UC3, kernel)

kernel_resized = cv2.resize(kernel, (400,400))

cv2.imshow('Original Image', img)
cv2.imshow('Filtered Image', fimg)
cv2.imshow('Kernel', kernel_resized)
cv2.waitKey()
cv2.destroyAllWindows

2021-08-07 Gabor滤波器简介以及简单应用_第6张图片
2021-08-07 Gabor滤波器简介以及简单应用_第7张图片

你可能感兴趣的:(生物特征识别,python,gabor,生物学)