失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Gabor滤波器特征提取原理讲解及c++实现

Gabor滤波器特征提取原理讲解及c++实现

时间:2018-10-21 16:31:05

相关推荐

Gabor滤波器特征提取原理讲解及c++实现

文章目录

Gabor滤波器复正弦载波高斯滤波参数解释gabor滤波核实现效果:

Gabor滤波器

1946年,Dennis Gabor于在“Theory of communication”一文中提出了著名的“窗口”傅里叶变换(也叫短时Fourier变换,STFT),即Gabor变换。

在图像处理邻域,Gabor小波是一种非常有效的纹理表示方法。

在空域,一个2维的Gabor滤波器是一个正弦平面波和高斯核函数的乘积:

其中s(x, y)是一个复正弦信号,称为载波,Wr(x, y)是一个二维信号高斯型函数,称为包络线。

复正弦载波

复正弦函数的定义如下:

式中(u0, v0), P分别定义正弦信号的空间频率和相位。可以把这个正弦函数想象成两个独立的实函数,分别表示为复函数的实部和虚部:

可以直观的分别表示为:

参数u0和v0定义了直角坐标系中正弦信号的空间频率。这个空间频率也可以用极坐标表示为幅度F0和方向ω0:

则:

用这种表示法,复正弦函数是:

一般地,复正弦函数表示为:`

高斯滤波

二维高斯函数可以表示为:

那么将复正弦函和高斯滤波相乘,gabor滤波器复数形式可表示为:

下面更加直观地看一下这两者相乘的效果:

(a) 2D正弦面,(b)高斯核,©相应的Gabor滤波器。

参数解释

以上公式中各个参数说明:

波长(λ):像素为单位,通常大于等于2.但不能大于输入图像尺寸的五分之一。

方向(θ):并行条纹的方向,它的取值为0到360度

相位偏移(φ):取值范围为-180度到180度。其中,0he180度分别对应中心对称函数,而-90度和90度对应反对称函数。

长宽比(γ):纵横比,决定了Gabor函数形状。当γ= 1时,形状是圆的。当γ< 1时,形状随着平行条纹方向而拉长。

带宽(b):Gabor滤波器的半响应空间频率带宽b和σ/ λ的比率有关,其中σ表示Gabor函数的高斯因子的标准差,如下:

下面给出不同参数下,gabor核函数的对比图:大小512*512

波长λ分辨分别为:8,16,32

方向(θ)分别为:0,45,90度

相位偏移(φ)分别为0,90,180度

长宽比(γ)分别为:0.5,1,2

带宽(b)分别为0.5,1,2

gabor滤波核实现

cv::Mat getGaborKernel(int ks, double sig, double th, double lm, double ps){int hks = (ks-1)/2;double theta = th*CV_PI/180;double psi = ps*CV_PI/180;double del = 2.0/(ks-1);double lmbd = lm;double sigma = sig/ks;double x_theta;double y_theta;cv::Mat kernel(ks,ks, CV_32F);for (int y=-hks; y<=hks; y++){for (int x=-hks; x<=hks; x++){x_theta = x*del*cos(theta)+y*del*sin(theta);y_theta = -x*del*sin(theta)+y*del*cos(theta);kernel.at<float>(hks+y,hks+x) = (float)exp(-0.5*(pow(x_theta,2)+pow(y_theta,2))/pow(sigma,2))* cos(2*CV_PI*x_theta/lmbd + psi);}}return kernel;}

效果:

参考文献:

1、Gabor filter visualization

2、1-Petkov_Gabor_functions-Lecture notes

3、Texture features for browsing and retrieval of image data

如果觉得《Gabor滤波器特征提取原理讲解及c++实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。