我尝试使用以下代码创建Gabor过滤器:
function [g] = generate_gabor_filter(sigma, phi, theta)
% filter size :
w = 39; h = 39;
x0 = ((w+1)/2); y0 =((h+1)/2);
for x=1:w
for y=1:h
xp = (x-x0) * cos(theta) + (y-y0) * sin(theta);
yp = (x-x0) * -sin(theta) + (y-y0) * cos(theta);
g(x,y) = exp( -pi * sigma^2 * (xp^2+yp^2)) * exp(j*(2*pi*phi*(x+y)));
end
end
end
当我用以下参数调用它时:
phi_values = [pi/2 , pi/4 , pi/8];
theta_values = pi/6 * [0:5];
sigma = 0.1; % why ?
for scale = 1:3
for orientation = 1:6
phi = phi_values(scale); theta = theta_values(orientation);
gfb{scale,orientation} = generate_gabor_filter(sigma , phi , theta);
end
end
结果如下所示。我还发送了仅滤镜(1,5)的图像,以使黑白像素图案更加清晰。
它类似于"透明层" Photoshop,但我以前从未在MATLAB中看过这个。我的代码实际上是在创建这种黑白图案吗?
我的代码显然有问题,因为输出都是以相同的角度定向的(我认为pi/4
)。
感谢您的帮助!