Gabor 2D滤波器和按公式划分

时间:2014-03-29 18:18:35

标签: matlab image-processing

我有一个FPK(指关节打印)项目,切割手指有趣部分后的一个步骤是使用Gabor滤镜过滤图像。

现在几天(整整天)我一直试图制作滤波器组并从公式中过滤图像并将其写为Matlab代码。

我读了很多关于参数值的内容,但我很困惑,我应该采取什么价值?

我需要做什么?

我应该使用conv2还是imfilter(对称或covn)?

由于

Image of the Formula

2 个答案:

答案 0 :(得分:-1)

  %Read the original gray input image
      image=imread('cameraman.jpg');
  %convert it to gray scale
      image=double(image);
  %show the image
      figure(1);
      imshow(image);
      title('Input Image');

      %Gabor filter size 7x7 and orientation 90 degree
       %declare the variables
      gamma=0.3; %aspect ratio
      psi=0; %phase 
      theta=pi/2; %orientation you can change theta 0°, 45°, 90°,180° but   value is in radian..
      bw=2.8; %bandwidth or effective width
      lambda=3.5; % wavelength
      pi=180;

      N=9; % size of filter 
       Cx=ceil(N/2);
       Cy=ceil(N/2);   
       [x,y] = meshgrid(N-Cx:N+Cx,N-Cy:N+Cy);
       x_theta=(x-Cx)*cos(theta)+(y-Cy)*sin(theta);  % scalair value 
       y_theta=-(x-Cx)*sin(theta)+(y-Cy)*cos(theta); % scalair value
       % calculate Gabor filter 
        gb= exp(-(x_theta.^2/2*bw^2+ gamma^2*y_theta.^2/2*bw^2)).*cos(2*pi/lambda*x_theta+psi);
       image_gb=conv2(image,gb,'same');
      imshow(image_gb);
      title('filtered image');

Gb是在conv2或filter2中使用的过滤器。 Gb的大小是NxN示例7x7或9x9或11x11(奇数或偶数滤波器)。您可以使用meshgrid优化代码.. http://en.wikipedia.org/wiki/Gabor_filter

答案 1 :(得分:-1)

您在图像中提取高频信息。高滤波器的必要条件,滤波器gb(x,y)之和为0(x = 0..N-1,y = 0..N-1)(N = 3,5,7 ..或窗口3x3或5x5或7x7或9x9或11x11,... 31x31)。 gb(x,y)是你的滤波器,滤波器的值是实数(你选择cos或sin,你的结果是去相位PI / 2比较sin,不需要使用复杂的Gabor滤波器)。它非常简单。它是一个高过滤的过滤器。

%   See http://en.wikipedia.org/wiki/Gabor_filter.
x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);

gb= exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);

<强>默认值

 C = conv2(A, B) performs the 2-D convolution of matrices A and B.
 If [ma,na] = size(A), [mb,nb] = size(B), and [mc,nc] = size(C), then
 mc = max([ma+mb-1,ma,mb]) and nc = max([na+nb-1,na,nb]).

ma,na大小的过滤器大小不同于mb和nb。嘛

例如,如果图像的像素分辨率为128x128,则滤波器大小仅为na <128,且ma <128。过滤器不应该很大。

或者      filter2 二维数字滤波器。     Y = filter2(B,X,SHAPE)使用2-D FIR对X中的数据进行滤波     在矩阵B中过滤。计算结果Y.     使用二维相关并且与X的大小相同( SHAPE 是&#39;相同&#39;)。 同样的事情,但B是过滤器。我选择了第二个。 SHAPE 值为,

            'same'  - (default) returns the central part of the 
                     correlation that is the same size as X.
            'valid' - returns only those parts of the correlation
            that are computed without the zero-padded
            edges, size(Y) < size(X).
            'full'  - returns the full 2-D correlation, 
            size(Y) > size(X).