特征提取之Gabor特征
Gabor函数可以在频率不同尺度、不同方向上提取相关的特征,Gabor变换是短时Fourier变换中当窗函数取为高斯函数时的一种特殊情况。实质上Gabor变换就是对图像进行卷积操作,其中Gabor滤波器是一个由正弦平面波调制的高斯核函数,分为实部和虚部,实部滤波可以平滑图像,虚部滤波可以边缘检测。
1.二维Gabor函数的数学表达式
Gabor滤波器是带通滤波器,为高斯函数和复指数函数的乘积。
复数表达:

实数部分:

虚数部分:

其中,

波长(λ):它的值以像素为单位指定,通常大于等于2.但不能大于输入图像尺寸的五分之一。
方向(θ):这个参数指定了Gabor函数并行条纹的方向,它的取值为0到360度
相位偏移(φ):它的取值范围为-180度到180度。其中,0和180度分别对应中心对称的center-on函数和center-off函数,而-90度和90度对应反对称函数。
长宽比(γ):空间纵横比,决定了Gabor函数形状(support,我翻译为形状)的椭圆率(ellipticity)。当γ= 1时,形状是圆的。当γ< 1时,形状随着平行条纹方向而拉长。通常该值为0.5
带宽(b):Gabor滤波器的半响应空间频率带宽b和σ/ λ的比率有关,其中σ表示Gabor函数的高斯因子的标准差,如下:
方向(θ):这个参数指定了Gabor函数并行条纹的方向,它的取值为0到360度
相位偏移(φ):它的取值范围为-180度到180度。其中,0和180度分别对应中心对称的center-on函数和center-off函数,而-90度和90度对应反对称函数。
长宽比(γ):空间纵横比,决定了Gabor函数形状(support,我翻译为形状)的椭圆率(ellipticity)。当γ= 1时,形状是圆的。当γ< 1时,形状随着平行条纹方向而拉长。通常该值为0.5
带宽(b):Gabor滤波器的半响应空间频率带宽b和σ/ λ的比率有关,其中σ表示Gabor函数的高斯因子的标准差,如下:

σ的值不能直接设置,它仅随着带宽b变化。带宽值必须是正实数,通常为1,此时,标准差和波长的关系为:σ= 0.56 λ。带宽越小,标准差越大,Gabor形状越大,可见平行兴奋和抑制区条纹数量越多。
2.Gabor提取特征的思路和步骤
Gabor提取特征的思路是不同的纹理一般具有不同的中心频率及带宽,根据这些频率和带宽可以设计一组Gabor滤波器对纹理图像进行滤波,每个滤波器只允许相对应的纹理通过。
滤波器提取特征的过程主要有:设计滤波器(函数、数目、方向和间隔);从滤波器的输出结果提取有效纹理特征集。
实现步骤为
- 对图像进行实数形式的Gabor变换。
- 对变换后的图像进行分块。
- 计算每一块对应的能量:

- 将所有能量拉成一维行向量,即为特征向量。
1 //载入一个图像
2 Mat img = imread( "test.jpg", CV_LOAD_IMAGE_GRAYSCALE );
3 imshow("Original Image", img);
4 cvWaitKey(0);
5
6 //获取载入图像的gabor滤波响应的实部并且显示
7 Mat reimg(img.rows,img.cols, CV_32FC1);
8 gabor.conv_img(img, reimg, CV_GABOR_REAL);
9 imshow("After Image", reimg);
10 cvWaitKey(0);