MATLAB中的Gabor滤波器(Wavelet)实现

时间:2014-10-24 23:57:28

标签: matlab image-processing filter signal-processing wavelet

我尝试使用以下代码创建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)的图像,以使黑白像素图案更加清晰。

enter image description here  Filter (1,5) - zoomed

它类似于"透明层" Photoshop,但我以前从未在MATLAB中看过这个。我的代码实际上是在创建这种黑白图案吗?

我的代码显然有问题,因为输出都是以相同的角度定向的(我认为pi/4)。

感谢您的帮助!

0 个答案:

没有答案