gabor filter 已修改

function [Aim,Eim,Oim]=gabor_filter(img,gamma,theta,lambda,psi,b)
 % [Aim,Eim,Oim]=gabor_filter3(img,gamma,theta,lambda,psi,b)
% lambda       Wavelength in pixels of Gabor filter to construct
% psi           phase 
% theta            - Angle of filter in degrees.  An angle of 0 gives a
%                      filter that responds to vertical features.
% Returns:
%         Eim - Result from filtering with the even (cosine) Gabor filter
%         Oim - Result from filtering with the odd (sine) Gabor filter
%         Amplitude image = sqrt(Eim.^2 + Oim.^2)
narginchk(4,6);
if nargin<6
    b=1;
end
if nargin<5
    psi=0;
end
sigma=lambda/pi*sqrt(log(2)/2)*(2^b+1)/(2^b-1);
if (gamma <= 1 && gamma > 0)
	n = ceil(3*sigma/gamma);
else
	n = ceil(3*sigma);
end
[x,y] = meshgrid(-n:n);
 
% Rotation 
x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);
gb= exp(-.5*(x_theta.^2+gamma^2*y_theta.^2)/sigma^2).*exp(1i*(2*pi/lambda*x_theta+psi));
gb_R= real(gb);   % gabor function real part  
gb_I= imag(gb);   % gabor function imag part 
Eim=conv2(double(img),gb_R,'same');  
Oim=conv2(double(img),gb_I,'same');
Aim=sqrt(Eim.^2+Oim.^2);   % Amplitude image = sqrt(Eim.^2 + Oim.^2)
end


clc;
clear;
f=imread('synthetic1.png');
%  ori=imread('mm.jpg');
%  grayimg=rgb2gray(ori);
%  f=im2double(grayimg);
gamma=0.5;
lambda=8; 
n=1;
k=12;
GB_img=0;
for theta=0:pi/k:(pi-pi/k)
    [Aim,Eim,Oim]=gabor_filter(f,gamma,theta,lambda); % 计算各个方向滤波后的图像
    GB_img=GB_img+Aim; 
%     figure,imshow(Aim,[]); % 显示各个方向滤波后的图像
%     filename2=['D:\img\17\','filtered with gabor function',num2str(n)];
%      saveas(gcf,filename2,'jpg');
%      close all
    subplot(2,fix(k/2),n),imshow(Aim,[])
    str_1=['theta=',num2str((n-1)*180/k)];
    title(str_1)
    n=n+1;
end
figure,imshow(GB_img,[]);% 各个方向滤波后合成的图像,也可以阈值处理





第一张为原图,二三张为滤波后的图片


二维 旋转

  [x']=   [cos(θ) sin(θ)]      [x]
  [y']=   [-sin(θ) cos(θ)]    [y]
原来gabor 函数只是  二为高斯函数 乘了一个相位(复指数),后经旋转变换得到的。
现在考虑gabor  函数的实部,经过傅里叶变换后是高斯函数和一个对称的狄拉克函数的卷积 (卷积定理:一个域的乘积,相当于另一个域的卷积),再经过旋转变换,得到不同方向的滤波器,之后对图像不同方向滤波,在反变换到空域,就得到了原图像不同的纹理,这就是频域滤波!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值