首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

matlab兑现gabor filter (3)

2012-09-06 
matlab实现gabor filter (3)从wikipedia上找到一段gabor filter的代码,简单的写了生成5个尺度8个方向的滤

matlab实现gabor filter (3)

从wikipedia上找到一段gabor filter的代码,简单的写了生成5个尺度8个方向的滤波器组。

 

gabor filter的代码:

 

% 这个gabor实现是来自维基百科的,应该没有问题% watkinsfunction gb=gabor(sigma,theta,lambda,psi,gamma) sigma_x = sigma;sigma_y = sigma/gamma; % Bounding boxnstds = 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; % 也可以为12lambda=[5 6 7 8 9];[nh nw]=size(gaborfilter);G=cell(5,8);for i = 1:5    for j = 1:8        G{i,j}=zeros(nh,nw);    endendfor i = 1:5    for j = 1:8        G{i,j}=gabor(sigma,theta(j),lambda(i),psi,gamma);    endend%plotfigure;for i = 1:5    for j = 1:8        subplot(5,8,(i-1)*8+j);                %imshow(real(G{s,j})/2-0.5,[]);        imshow(real(G{i,j}),[]);    endend


生成的滤波器组图片:

matlab兑现gabor filter (3)

 

热点排行