加载中…
个人资料
Jorden
Jorden
  • 博客等级:
  • 博客积分:0
  • 博客访问:52,319
  • 关注人气:7
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

[转载]生成二维gabor滤波器的matlab代码

(2012-03-17 23:45:04)
标签:

转载

function hp=gbfilter2(sigmax,mu,mv)
% 函数功能:生成二维离散gabor函数模板hp。可能主要用于图像的纹理分析;

%输入参数:sigmax——x方向的方差;

                 mu——x方向中心频率;mv——y方向中心频率;

%输出参数:hp——二维离散gabor模板;

%按照生理视觉的研究 y方向标准差为x方向标准差的1.5-2.0倍,此处取1.7

sigmay=sigmax*1.7;

%按照误差原则,(-3sigama,3sigma)包含了97.4%的能量。N也为滤波器长度。

%通常在纹理分析前,需要用到模板长度N,此时可用N=fix(6*sigmax*1.7);这一语句求得。
N=fix(6*sigmay);

%该句主要防止被零除
if mu==0
    mu=1e-12;
end
% theta角为纹理方向
theta=atan(mv/mu);

%采样区间和间隔,此处为过采样。临界采样并不可取。
kx=-(N-1)/2:(N-1)/2;
ky=kx;

%生成x,y坐标。
[tpx,tpy]=meshgrid(kx,ky);

%计算gabor函数旋转生成的新坐标
x=tpx*cos(theta)+tpy*sin(theta);
y=-tpx*sin(theta)+tpy*cos(theta);

%计算gauss函数
z=1/(2*pi*sigmax*sigmay)*exp(-0.5*(( x/sigmax).^2+(y/sigmay).^2));

%计算调制因子
exptab=exp(-j2*pi*(tpx*mu+tpy*mv)/N);

%gauss函数被调制因子调制
hp=z.*exptab;

%矩阵转置以生成与习惯相符的x,y轴
hp=hp';
end

 

第二个产生二维gabor滤波器的程序

function [hp,sigmax]=gbfilt2(ax,mu,mv,N)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数功能:生成用于图像滤波的gabor函数的模板
% 输入参数: ax——关于x轴的sigma因子,ax=N/(2*sigma),3.5<=ax<=N/2;
          mu——x方向中心频率,mu<=N/4;mv——y方向中心频率;mv<=N/4;
          N——滤波器长度,与滤波器宽度相同;
% 输出参数: hp——生成的gabor模板;sigmax对应x方向的sigama;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义sigmay=1.7*sigmax
ay=ax/1.7;
% 防止被零除
if mu==0
    mu=1e-16;
end
% 计算gabor滤波器的方向
theta=atan(mv/mu);
% 定义x,y取值范围为长度N
kx=-(N-1)/2:(N-1)/2;
ky=kx;
% 生成x,y坐标
[tpx,tpy]=meshgrid(kx,ky);
% 旋转theta角
x=tpx*cos(theta)+tpy*sin(theta);
y=-tpx*sin(theta)+tpy*cos(theta);
% gauss函数
z=2*ax*ay/(pi*N^2)*exp((-1/2)*((ax*x/(N/2)).^2+(ay*y/(N/2)).^2));
% 频率调制因子
facmod=cos(2*pi*(tpx*mu+tpy*mv)/N);
% 返回模板
hp=(z.*facmod)';
% 返回sigmax
sigmax=N/(2*ax);
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

0

  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有