gabor wavelet 初步代码 已修改

本文介绍了一种Gabor小波变换的MATLAB实现,详细讲解了函数`gabor_wt`的参数及其作用,并给出了不同尺度、方向的Gabor滤波器图像及其傅里叶变换结果。通过调整参数`a`、`m`和`theta`,可以观察到Gabor滤波器在不同条件下的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


function [gb_R,gb_I]=gabor_wt(lambda,theta,m,gamma,a,psi,b,delta)
%[gb_R,gb_I]==gabor_wt(lambda,theta,m,gamma,a,psi,b,delta)
%lambda 为函数波长
%theta  为gabor 核函数的方向
%psi    为相位偏移
%sigma  为高斯函数的标准差
%gamma  This parameter, called more precisely the spatial aspect ratio, specifies the ellipticity of the support of the Gabor function. 
% For γ = 1, the support is circular. For γ < 1 the support is elongated in orientation of the parallel stripes of the function. 
%Default value is γ = 0.5
%m      尺度参数
%a      尺度参数 默认为2
%以h(x,y)=exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*exp(1i*(2*pi/lambda*x_theta+psi));
% 为母小波,对它进行尺度收缩和旋转 hmn(x,y)=a^(-m).*h(x_theta,y_theta);a >1  
%a^(-m) 为尺度因子 x_theta=a^(-m)*(x*cos(theta)+y*sin(theta));
% y_theta=-a^(-m)*(x*sin(theta)+y*cos(theta)); theta=n*pi/k; S,K 为尺度和方向的数目,m=0,1,…,S?1,n=0,1,…,K?1.通过改变m和n的值,就可以
% 得到一组方向和尺度不同的Gabor滤波器

% 版本 1.0 
narginchk(3,8);
if nargin<8
    delta=1;
end
if nargin<7
   b=1;
end
if nargin<6
    psi=0;
end
if nargin<5
    a=2;
end
if nargin<4
    gamma=0.5;
end
 sigma=lambda/pi*sqrt(log(2)/2)*(2^b+1)/(2^b-1);
if (gamma <= 1 && gamma > 0)
	n = ceil(3*sigma/gamma);
else
	n = ceil(3*sigma);
end
[x,y] = meshgrid(-n:delta:n);
 
% Rotation 
x_theta=a^(-m)*(x*cos(theta)+y*sin(theta));
y_theta=-a^(-m)*(x*sin(theta)+y*cos(theta));
gb= a^(-m).*exp(-.5*(x_theta.^2+gamma^2*y_theta.^2)/sigma^2).*exp(1i*(2*pi/lambda*x_theta+psi));

gb_R= real(gb);
gb_I= imag(gb);

end

gamma=1;
lambda=8; %1
psi=0;
theta=pi;
n=1;  
delta=0.1;% 网格步长
K=10; % 控制方向个数
 
a=2;      % a.^(-m) 尺度因子
 for m=0:0.5:2.5  % 
     for theta=0:pi/K:(pi-pi/K)
%          [gb_R,gb_I]=gabor_wt(lambda,theta,m,gamma,a,psi,b,delta)
     gb2=gabor_wt(lambda,theta,m,gamma,a,psi,1,delta);
     name1=[' gabor wavelet a = ',num2str(a),'  m = ',num2str(m),'  \theta = ',num2str(theta*180/pi),'lambda=',num2str(lambda)];
     name2=[' fft gabor wavelet a = ',num2str(a),'  m = ',num2str(m),'  \theta = ',num2str(theta*180/pi),'lambda=',num2str(lambda)];
%      figure,mesh(gb2);
     subplot(1,2,1),imshow(gb2,[]);
     title(name1);
     f_gb2=fftshift(abs(fft2(gb2)));
     subplot(1,2,2),imshow(f_gb2,[]);
     title(name2);
     filename2=['D:\img\gabor wavelet\','gabor_wavelet and fft_gabor',num2str(n)];
     saveas(gcf,filename2,'jpg');
     close all
     n=n+1;
     end
 end
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值