function [gb_R,gb_I]=gabor_fn(lambda,theta,gamma,psi,b)
%[gb_R,gb_I]=gabor_fn(lambda,theta,gamma,psi,b)
% lambda Wavelength in pixels of Gabor filter to construct
% psi phase
% theta - Angle of filter in degrees. An angle of 0 gives a
% filter that responds to vertical features.
% Returns:
narginchk(5,7);
if nargin<7
b=1;
end
if nargin<6
psi=0;
end
sigma=lambda/pi*sqrt(log(2)/2)*(2^b+1)/(2^b-1);
if (gamma <= 1 && gamma > 0)
n = ceil(3*sigma/gamma);
else
n = ceil(3*sigma);
end
[x,y] = meshgrid(-n:n);
% Rotation
x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);
gb= exp(-.5*(x_theta.^2+gamma^2*y_theta.^2)/sigma^2).*exp(1i*(2*pi/lambda*x_theta+psi));
gb_R= real(gb); % gabor function real part
gb_I= imag(gb); % gabor function imag part
end
theta=0;
psi=0;
b=1;
gamma=0.5;
k=4;
lambda=10;
for lambda=5:5:15
for theta=0:pi/k:(pi-pi/k);
[gb_R,gb_I]=gabor_fn(lambda,theta,gamma,psi,b);
figure,imshow(gb_R,[])
end
end
参考资料:http://en.wikipedia.org/wiki/Gabor_filter
http://matlabserver.cs.rug.nl/edgedetectionweb/web/edgedetection_params.html
http://blog.csdn.net/xidianzhimeng/article/details/19493019
http://blog.sina.com.cn/s/blog_c144a0e40101e00f.html