生成二维gabor滤波器的matlab代码
2011-03-05 14:15
666 查看
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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2008-09-02
% 王泽华
% 青岛科技大学数理学院
% email:scunwzh@163.com
% References:
% Harris, F.J. On the Use of Windows for Harmonic Analysis with the
% Discrete Fourier Transform.Proceedings of the IEEE. 1978,66(1):51-83。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
关于这个程序我不想多说了,这个基本按照标准生成的,具体标准可参阅下面列出的文献,并且这篇文献也可以在网上免费获得,但前提是你的E文足够好。
Harris,F.J.On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform.Proceedings of the IEEE,1978,66(1):51-83.
% 函数功能:生成二维离散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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2008-09-02
% 王泽华
% 青岛科技大学数理学院
% email:scunwzh@163.com
% References:
% Harris, F.J. On the Use of Windows for Harmonic Analysis with the
% Discrete Fourier Transform.Proceedings of the IEEE. 1978,66(1):51-83。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
关于这个程序我不想多说了,这个基本按照标准生成的,具体标准可参阅下面列出的文献,并且这篇文献也可以在网上免费获得,但前提是你的E文足够好。
Harris,F.J.On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform.Proceedings of the IEEE,1978,66(1):51-83.
相关文章推荐
- 生成二维gabor滤波器的matlab代码
- 基于模型设计的FPGA开发与实现:滤波器设计与实现(三)Matlab中滤波器的HDL代码生成
- 基于MATLAB中fft2函数的二维图像数据的频谱生成代码
- 基于MATLAB中fft2函数的二维图像数据的频谱生成代码
- 基于模型设计的FPGA开发与实现:滤波器设计与实现(四)Matlab中滤波器HDL代码生成优化
- Matlab研究分析Gabor滤波器
- Matlab生成C代码 3
- 基于Matlab中FDATool工具箱的滤波器设计及相关文件的生成
- matlab生成满足二维高斯(正…
- Mac中使用MATLAB进行simulink代码生成
- 高斯滤波 模板生成原理 matlab代码
- 基于Matlab中FDATool工具箱的滤波器设计及相关文件的生成
- 海明嵌入Hamming Embedding生成Binary Signature之matlab程序代码
- matlab gabor 滤波器
- .Net中生成二维的表格的代码 分享
- C语言使用matlab生成的滤波器头文件
- matlab 生成调用c/c++ 代码 mex 简单实用
- 基于Gabor特征提取和人工智能神经网络的人脸检测matlab代码
- MATLAB Coder可以从MATLAB代码生成独立的、可读性强、可移植的C/C++代码
- matlab自动代码生成