二维gabor滤波器matlab,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:\Images\New\Cars\image_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);
總結
以上是生活随笔為你收集整理的二维gabor滤波器matlab,matlab中实现Gabor滤波器 | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis ubuntu php 5.2
- 下一篇: php要掌握的内容,入门PHPer需要掌