matlab实现gabor filter (4)

来源:互联网 发布:js如何获取本机ip地址 编辑:程序博客网 时间:2024/05/28 16:19

源代码:

%%%%%%%VERSION 1%The Gabor filter is basically a Gaussian (with variances sx and sy along x and y-axes respectively)%modulated by a complex sinusoid (with centre frequencies U and V along x and y-axes respectively) %described by the following equation%%%               1                -1     x  ^    y  ^%%% G(x,y) = ---------- * exp ([----{(----) 2+(----) 2}+2*pi*i*(Ux+Vy)])%            2*pi*sx*sy           2    sx       sy%% Describtion :%% I : Input image%% Sx & Sy : Variances along x and y-axes respectively%% U & V : Centre frequencies  along x and y-axes respectively%% G : The output filter as described above%% gabout : The output filtered image%%  Author : Ahmad poursaberi  e-mail : a.poursaberi@ece.ut.ac.ir%%          Faulty of Engineering, Electrical&Computer Department,Tehran%%          University,Iran,June 2004function [G,gabout] = gaborfilter(I,Sx,Sy,U,V)if isa(I,'double')~=1     I = double(I);endfor x = -fix(Sx):fix(Sx)    for y = -fix(Sy):fix(Sy)        G(fix(Sx)+x+1,fix(Sy)+y+1) = (1/(2*pi*Sx*Sy))*exp(-.5*((x/Sx)^2+(y/Sy)^2)+2*pi*i*(U*x+V*y));    endendImgabout = conv2(I,double(imag(G)),'same');Regabout = conv2(I,double(real(G)),'same');gabout = uint8(sqrt(Imgabout.*Imgabout + Regabout.*Regabout));


调用代码:

close all;clear all;clc;% 读入图像image=imread('C:\Users\watkins\Pictures\cartoon.jpg');grayImage=rgb2gray(image);grayImage=im2double(grayImage);% 显示读入图像imshow(grayImage);sx=32;sy=32;theta=[0 pi/4 2*pi/4 3*pi/4 4*pi/4 5*pi/4 6*pi/4 7*pi/4];gamma=1;psi=0;sigma=6; % 也可以为12lambda=[5 6 7 8 9];V=[4 5 6 7 8];U=[0 pi/4 2*pi/4 3*pi/4 4*pi/4 5*pi/4 6*pi/4 7*pi];%U=[1 2 3 4 5 6 7 8];% Creating 40 Gabor FiltersG = cell(5,8);for i = 1:5    for j = 1:8        G{i,j}=zeros(65,65);    endendfor i = 1:5    for j = 1:8        [T,gabout] = gaborfilter(grayImage,sx,sy,U(j),V(i));        G{i,j} = T;     endend% Showing Gabor Filtersfigure;for s = 1:5    for j = 1:8                subplot(5,8,(s-1)*8+j);                %imshow(real(G{s,j})/2-0.5,[]);        imshow(real(G{s,j}),[]);    endend


滤波器组图片:

不明白为什么滤波器组的图片是这样,还希望哪位大侠帮忙指点一下?

原创粉丝点击