主要任务就是做出以下这样一张Gabor滤波器的图片。
这里用到的公式如下:
程序部分实现的是公式内的实数部分。
函数文件
function gb = gaborfilter_2d( lambda, theta, phrase, gamma, bw)
% LAMBDA - 波长,是cos的像素周期
% SIGMA - 高斯标准差
% THETA - 核函数的方向
% PHRASE - 相位补偿
% GAMMA - 空间横纵比值(高斯椭圆的x/y)
% BANDWIDTH - 半响应时的空间频率带宽
sigma = lambda/pi*sqrt(log(2)/2)*(2^bw+1)/(2^bw-1);
sigma_x = sigma;
sigma_y = sigma/gamma;
sz=fix(8*max(sigma_y,sigma_x));
if mod(sz,2)==0
sz=sz+1;
end
[x y]=meshgrid(-fix(sz/2):fix(sz/2),fix(sz/2):-1:fix(-sz/2));
x_theta = x*cos(theta)+y*sin(theta);
y_theta = -x*sin(theta)+y*cos(theta);
gb=exp(-0.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+phrase);
end
test 文件
theta = pi/3 ;
lambda =8 ;
phi = 0;
gamma = 1;
bw = 0.5;
figure;
gaborFilter=gaborfilter_2d(lambda, theta, phi, gamma, bw);
figure;
imshow(real(gaborFilter),[]);