gabor滤波器matlab代码
时间: 2023-09-19 22:07:28 浏览: 107
以下是一个简单的 MATLAB 代码,用于创建一个 Gabor 滤波器:
```matlab
function g = gabor_filter(sigma, theta, lambda, psi, gamma)
% sigma: 控制Gabor滤波器的高斯分布的标准差
% theta: 控制Gabor滤波器的方向,单位是弧度
% lambda: 控制Gabor滤波器的周期性
% psi: 控制Gabor滤波器的相位偏移
% gamma: 控制Gabor滤波器的纵横比
% 计算Gabor滤波器的大小
nstds = 3; % 标准差的倍数
xmax = max(abs(nstds * sigma * cos(theta)), abs(nstds * sigma * sin(theta)));
xmax = ceil(max(1, xmax));
ymax = max(abs(nstds * sigma * sin(theta)), abs(nstds * sigma * cos(theta)));
ymax = ceil(max(1, ymax));
% 创建Gabor滤波器
[x, y] = meshgrid(-xmax:xmax, -ymax:ymax);
x_theta = x * cos(theta) + y * sin(theta);
y_theta = -x * sin(theta) + y * cos(theta);
g = exp(-0.5 * ((x_theta.^2 + y_theta.^2) / (sigma^2 * gamma^2))) .* cos(2 * pi * x_theta / lambda + psi);
```
该函数返回一个 Gabor 滤波器 `g`,其中 `sigma` 控制 Gabor 滤波器的高斯分布的标准差,`theta` 控制 Gabor 滤波器的方向,`lambda` 控制 Gabor 滤波器的周期性,`psi` 控制 Gabor 滤波器的相位偏移,`gamma` 控制 Gabor 滤波器的纵横比。
阅读全文