garbor特征提取
天灰灰 2012-12-09 09:16:18 在网上下了下面一个gabor变换的一个程序,有些地方还不是很明白,望高手指点一二:
二维GABOR变换其实就是一个高斯函数与其直流分流与交流分量的乘积,二维Gabor核的实现方法如下:
//定义变量
float phase = (float)(or*PI/180);//角度 or为具体的滤波器方向
//二维核函数范围
x1 = (sx%2)?(-(sx-1)/2):(-sx/2); //sx为高斯函数标准方差,这个标准方差怎么求?
x2 = (sx%2)?((sx-1)/2):((sx/2)-1);
y1 = (sy%2)?(-(sy-1)/2):(-sy/2);
y2 = (sy%2)?((sy-1)/2):((sy/2)-1);
//GABOR核函数计算
for (y = y1; y <= y2; y++)//这里的x,y的范围求出来的是平率带宽吗?还是窗口大小?
{
for (x = x1; x <= x2; x++)
{
xPrime = x*cos(phase) + y*sin(phase);
yPrime = y*cos(phase) - x*sin(phase);
gabor = (float)(1/(2*PI*sx*sy));
gabor *= (float)exp(-0.5*( pow( (double)(xPrime/sx), 2.0) + pow((double)(yPrime/sy) , 2.0) ) );
re = (float)(gabor*cos( 2*PI*freq*xPrime));//实部
im = (float)(gabor*sin( 2*PI*freq*xPrime));//虚部
}
}
后面我们把gabor的实部和虚部求出来了,如果我有一个256*96大小的图片,我该怎么跟gabor进行卷积?程序应该怎么写?