2d-gabor的matlab代码
时间: 2024-02-12 20:12:53 浏览: 84
以下是一个简单的2D Gabor滤波器的Matlab代码示例:
```matlab
% 设置Gabor滤波器的参数
lambda = 4; % 波长
theta = pi/4; % 方向
psi = 0; % 相位偏移
gamma = 0.5; % 纵横比
bw = 1; % 带宽
% 创建Gabor滤波器
gabor = gabor_fn(bw,gamma,psi,lambda,theta);
% 显示Gabor滤波器
figure;
subplot(1,2,1), imshow(real(gabor),[]); title('实部');
subplot(1,2,2), imshow(imag(gabor),[]); title('虚部');
% 加载图像
img = imread('example.jpg');
img = rgb2gray(img);
% 对图像进行Gabor滤波
filtered_img = imfilter(img, gabor, 'symmetric');
% 显示结果
figure;
subplot(1,2,1), imshow(img); title('原图');
subplot(1,2,2), imshow(filtered_img); title('Gabor滤波后');
```
其中,gabor_fn是用于创建Gabor滤波器的函数,代码如下:
```matlab
function gb=gabor_fn(bw,gamma,psi,lambda,theta)
%bw = 1;
%gamma = 0.5;
%psi = 0;
%lambda = 4;
%theta = pi/4;
sigma = lambda/pi*sqrt(log(2)/2)*(2^bw+1)/(2^bw-1);
sigma_x = sigma;
sigma_y = sigma/gamma;
[x,y]=meshgrid(-fix(3*sigma_x):fix(3*sigma_x),-fix(3*sigma_y):fix(3*sigma_y));
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);
```
这段代码使用了高斯函数和正弦余弦函数的乘积来创建Gabor滤波器。可以通过调整参数来改变滤波器的特性,例如方向、频率和带宽等。