首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

gabor滤波器的几种兑现方式

2012-08-29 
gabor滤波器的几种实现方式1. 方式一 Sx,Sy在公式里分别表示Guass函数沿着x,y轴的标准差,相当于其他的gabo

gabor滤波器的几种实现方式
1. 方式一

 

Sx,Sy在公式里分别表示Guass函数沿着x,y轴的标准差,相当于其他的gabor函数中的 sigma. 同时也用Sx,Sy指定了gabor滤波器的大小。(滤波器矩阵的大小)

这里没有考虑到相位偏移.

 

%%%%%%%VERSION 2%%ANOTHER DESCRIBTION OF GABOR FILTER%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     x' ^     y'  ^             %%% G(x,y,theta,f) =  exp ([----{(----) 2+(----) 2}])*cos(2*pi*f*x');%                             2    sx'       sy'%%% x' = x*cos(theta)+y*sin(theta);%%% y' = y*cos(theta)-x*sin(theta);%% Describtion :%% I : Input image%% Sx & Sy : Variances along x and y-axes respectively%% f : The frequency of the sinusoidal function%% theta : The orientation of Gabor filter%% 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] = gaborfilter1(I,Sx,Sy,f,theta)if isa(I,'double')~=1     I = double(I);endfor x = -fix(Sx):fix(Sx)    for y = -fix(Sy):fix(Sy)        xPrime = x * cos(theta) + y * sin(theta);        yPrime = y * cos(theta) - x * sin(theta);        G(fix(Sx)+x+1,fix(Sy)+y+1) = exp(-.5*((xPrime/Sx)^2+(yPrime/Sy)^2))*cos(2*pi*f*xPrime);    endendImgabout = conv2(I,double(imag(G)),'same');Regabout = conv2(I,double(real(G)),'same');gabout = sqrt(Imgabout.*Imgabout + Regabout.*Regabout);


这个gaobor函数生成的gabor滤波器的图像如图:

gabor滤波器的几种兑现方式

不同的参数也会导致不同的结果。

 2. 方式二

 

这个gabor滤波器的实现增加了尺度和方向变换,其他的参数以及意义都和上面的一样。

 

%%%%%%%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));


调用代码:

ori=imread('C:\Users\watkins\Pictures\cartoon.jpg');grayimg=rgb2gray(ori);gim=im2double(grayimg); Sx=32;Sy=32;f=sqrt(8);theta=pi/2;u=4;v=4;%[G,gabout] = gaborfilter1(gim,Sx,Sy,f,theta);[G,gabout] = gaborfilter1(gim,Sx,Sy,u,v);imshow(real(G));%imshow(real(gabout));


 

滤波器图片:

gabor滤波器的几种兑现方式

 3. 方式三

 

%%%%%%%VERSION 3%%ANOTHER DESCRIBTION OF GABOR FILTER%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  ^%%% Gi(x,y) = ---------- * exp ([----{(----) 2+(----) 2}])*Mi(x,y,f); %            2*pi*sx*sy           2    sx       sy%%% i =1,2%%% M1(x,y,f) = cos[2*pi*f*sqrt(x^2+y^2)];%%% M2(x,y,f) = cos[2*pi*f*(x*cos(theta) + y*sin(theta)];%% Describtion :%% I : Input image%% Sx & Sy : Variances along x and y-axes respectively%% f : The frequency of the sinusoidal function%% theta : The orientation of Gabor filter%% G1 & G2 : The output filters as described above%% gabout1 & gabout2 : The output filtered images%%  Author : Ahmad poursaberi  e-mail : a.poursaberi@ece.ut.ac.ir%%          Faulty of Engineering, Electrical&Computer Department,Tehran%%          University,Iran,June 2004function [G1,G2,gabout1,gabout2] = gaborfilter2(I,Sx,Sy,f,theta)if isa(I,'double')~=1     I = double(I);endfor x = -fix(Sx):fix(Sx)    for y = -fix(Sy):fix(Sy)        M1 = cos(2*pi*f*sqrt(x^2+y^2));        M2 = cos(2*pi*f*(x*cos(theta)+y*sin(theta)));        G1(fix(Sx)+x+1,fix(Sy)+y+1) = (1/(2*pi*Sx*Sy)) * exp(-.5*((x/Sx)^2+(y/Sy)^2))*M1;        G2(fix(Sx)+x+1,fix(Sy)+y+1) = (1/(2*pi*Sx*Sy)) * exp(-.5*((x/Sx)^2+(y/Sy)^2))*M2;    endendImgabout1 = conv2(I,double(imag(G1)),'same');Regabout1 = conv2(I,double(real(G1)),'same');Imgabout2 = conv2(I,double(imag(G2)),'same');Regabout2 = conv2(I,double(real(G2)),'same');gabout1 = sqrt(Imgabout1.*Imgabout1 + Regabout1.*Regabout1);gabout2 = sqrt(Imgabout2.*Imgabout2 + Regabout2.*Regabout2);


 

调用代码:

ori=imread('C:\Users\watkins\Pictures\cartoon.jpg');grayimg=rgb2gray(ori);gim=im2double(grayimg); Sx=16;Sy=16;f=sqrt(2);theta=pi/2;u=8;v=0;%[G,gabout] = gaborfilter1(gim,Sx,Sy,f,theta);%[G,gabout] = gaborfilter1(gim,Sx,Sy,u,v);[G1,G2,gabout1,gabout2] = gaborfilter2(gim,Sx,Sy,f,theta);R=real(G2);k=127.5/max(max(abs(R)));imshow(uint8(k*R+127.5));%imshow(real(G2));%imshow(abs(real(gabout)));


 

生成的滤波器图片:

gabor滤波器的几种兑现方式

热点排行