从wikipedia上找到一段gabor filter的代码,简单的写了生成5个尺度8个方向的滤波器组。
gabor filter的代码:
% 这个gabor实现是来自维基百科的,应该没有问题
% watkins
function gb=gabor(sigma,theta,lambda,psi,gamma)
sigma_x = sigma;
sigma_y = sigma/gamma;
% Bounding box
nstds = 4;
xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta)));
xmax = ceil(max(1,xmax));
ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta)));
ymax = ceil(max(1,ymax));
xmin = -xmax; ymin = -ymax;
[x,y] = meshgrid(xmin:xmax,ymin:ymax);
% Rotation
x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);
gb= exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);
调用代码:
gaborfilter=gabor(12,0,8,0,1);
%imshow(gaborfilter/2+0.5);
theta=[0 pi/4 2*pi/4 3*pi/4 4*pi/4 5*pi/4 6*pi/4 7*pi/4];
gamma=1;
psi=0;
sigma=6; % 也可以为12
lambda=[5 6 7 8 9]

本文分享了从Wikipedia获取的Gabor滤波器代码,并在MATLAB中实现了生成5个不同尺度和8个不同方向的滤波器组。通过调用这段代码,可以得到相应的滤波器组图像。
最低0.47元/天 解锁文章
7980

被折叠的 条评论
为什么被折叠?



