mydir = 'C:\Users\user\Desktop\data1\'; for i=5:5 for j=1:5 dir = [mydir,num2str(i),'-',num2str(j),'.bmp']; im = imread(dir); %or=rgb2gray(im); gim = im2double(im); disp(dir); [Eim,Oim,Aim]=spatialgabor(gim,3.5,90,0.4,0.4,1); savefile = [mydir,'Gabor\',num2str(i),'-',num2str(j),'.bmp']; imwrite(Aim,savefile); end end
这个是主函数,下面是Gabor变换函数
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
参数选择:wavelength:3.5;angle :90,kx:0.4;ky:0.4;showfilter:1
效果图片:
参数选择:3.2 --90----0.4----0.4----1