zoukankan      html  css  js  c++  java
  • matlab中实现Gabor滤波器

    1.spatialgabor.m描述gabor函数

    % SPATIALGABOR - applies single oriented gabor filter to an image
    %
    % Usage:
    %  [Eim, Oim, Aim] =  spatialgabor(im, wavelength, angle, kx, ky, showfilter)
    %
    % Arguments:
    %         im         - Image to be processed.
    %         wavelength - Wavelength in pixels of Gabor filter to construct
    %         angle      - Angle of filter in degrees.  An angle of 0 gives a
    %                      filter that responds to vertical features.
    %         kx, ky     - Scale factors specifying the filter sigma relative
    %                      to the wavelength of the filter.  This is done so
    %                      that the shapes of the filters are invariant to the
    %                      scale.  kx controls the sigma in the x direction
    %                      which is along the filter, and hence controls the
    %                      bandwidth of the filter.  ky controls the sigma
    %                      across the filter and hence controls the
    %                      orientational selectivity of the filter. A value of
    %                      0.5 for both kx and ky is a good starting point.
    %         showfilter - An optional flag 0/1.  When set an image of the
    %                      even filter is displayed for inspection.

    % Returns:
    %         Eim - Result from filtering with the even (cosine) Gabor filter
    %         Oim - Result from filtering with the odd (sine) Gabor filter
    %         Aim - Amplitude image = sqrt(Eim.^2 + Oim.^2)
    %


    % Peter Kovesi  
    % School of Computer Science & Software Engineering
    % The University of Western Australia
    % pk at csse uwa edu au
    % http://www.csse.uwa.edu.au/~pk
    %
    % October 2006


    function [Eim, Oim, Aim] = spatialgabor(im, wavelength, angle, kx, ky, showfilter)


        if nargin == 5
            showfilter = 0;
        end
        
        im = double(im);
        [rows, cols] = size(im);
        newim = zeros(rows,cols);
        
        % Construct even and odd Gabor filters
        sigmax = wavelength*kx;
        sigmay = wavelength*ky;
        
        sze = round(3*max(sigmax,sigmay));
        [x,y] = meshgrid(-sze:sze);
        evenFilter = exp(-(x.^2/sigmax^2 + y.^2/sigmay^2)/2)...
        .*cos(2*pi*(1/wavelength)*x);
        
        oddFilter = exp(-(x.^2/sigmax^2 + y.^2/sigmay^2)/2)...
        .*sin(2*pi*(1/wavelength)*x);    


        evenFilter = imrotate(evenFilter, angle, 'bilinear');
        oddFilter = imrotate(oddFilter, angle, 'bilinear');    


        % Do the filtering
        Eim = filter2(evenFilter,im); % Even filter result
        Oim = filter2(oddFilter,im);  % Odd filter result
        Aim = sqrt(Eim.^2 + Oim.^2);  % Amplitude 
        
        if showfilter % Display filter for inspection
            figure(1), imshow(evenFilter,[]); title('filter'); 
        end
        
        2.main.m

     ori=imread('D:ImagesNewCarsimage_0001.jpg');
     grayimg=rgb2gray(ori);
     gim=im2double(grayimg);
     
     [Eim,Oim,Aim]=spatialgabor(gim,3,90,0.5,0.5,1);%90-vertical===0-horizontal
     imshow(Aim);

    from: http://blog.csdn.net/abcjennifer/article/details/7360436

  • 相关阅读:
    new Handler()和new Handler(Looper.getMainLooper())的区别
    Okhttp3日志采集功能
    【ACM打卡】ZOJ 1001 1048
    20180808 阿里巴巴测试开发工程师一面
    20180601 -1
    20180601
    20180601 指针
    20180601 虚函数
    20180601 C++-1
    20180601 C++
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/5374033.html
Copyright © 2011-2022 走看看