opencv笔记(10):Gabor特征

来源:互联网 发布:手机淘宝设置货到付款 编辑:程序博客网 时间:2024/05/22 15:07

特征提取之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函数的高斯因子的标准差,如下:
σ的值不能直接设置,它仅随着带宽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);
1 0