读书人

matlab兑现gabor filter (8) 效果很好

发布时间: 2012-08-27 21:21:57 作者: rapoo

matlab实现gabor filter (8) 效果很好

gabor 滤波器函数:

function gb=gabor_fn(bw,gamma,psi,lambda,theta)% bw    = bandwidth, (1)% gamma = aspect ratio, (0.5)% psi   = phase shift, (0)% lambda= wave length, (>=2)% theta = angle in rad, [0 pi) 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% alternatively, use a fixed size% sz = 60; [x y]=meshgrid(-fix(sz/2):fix(sz/2),fix(sz/2):-1:fix(-sz/2));% x (right +)% y (up +)% Rotation 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+psi);%figure;%imshow(gb/2+0.5);%imshow(gb); %直接显示的gabor filter非常难看%title('gabor filter');


调用代码:

clear all;close all;% 测试用程序theta = [0 pi/4 2*pi/4 3*pi/4 4*pi/4 5*pi/4 6*pi/4 7*pi/4];lambda = [4 5 6 7 8];psi = 0;gamma = 1;bw = 0.5;%{% 初始化用来存放gabor filter组的cellG=cell(5,8);for i = 1:5    for j = 1:8        G{i,j}=zeros(GaborH,GaborW);    endend%}% 计算每个滤波器figure;for i = 1:5    for j = 1:8        gaborFilter=gabor_fn(bw,gamma,psi,lambda(i),theta(j));        subplot(5,8,(i-1)*8+j);        imshow(real(gaborFilter),[]);    endend%{% 绘制滤波器组figure;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 (8) 效果很好

读书人网 >其他相关

热点推荐