搬以前写的博客【2014-02-28 20:03】

关于Gabor滤波器是如何提取出特征点,这个过程真是煎熬。看各种文章,结合百度、文章内部的分析才有一点点明白。

Gabor滤波器究竟是什么?
 
很多表述说的是加窗傅里叶变换。怎么理解呢? 公式有下面几种表述:

             (1)

                     (2)

(3)

文章中的和第三种最相似,那么我理解是:傅里叶变换的基是e^(j2πfx),那么所谓的加窗指的是加上一个高斯函数,如公式(1),和Gabor函数卷积的过程,很想再做一个基为Gauss * e^(j2πfx)的傅里叶变换。
 
那么这样的gabor滤波器有什么作用呢?
 
既然他是一个滤波器,按照我们学的滤波器的处理过程:
Out(x, y) = In(x, y) ∗Gabor(x, y).         输入是图像I,滤波器是G,输出是复变量Out,分实部real虚部img;
Mag(x,y) = |out(x,y)|;                           滤波后输出的幅度,也就是Gabor滤波器在图I上的幅度响应
Ang(x,y) = arctan(img(x,y)/real(x,y));  Gabor滤波器在图I上的相位响应
 
很显然相位响应是随即的,我们以前做滤波器时也只关注幅度响应。我在Matlab里面依据公式(3)画出了Gabor滤波器的频率响应图。
注:公式3中是表示在具体某个中心点(ζ,η)上的相对坐标,在求Gabor滤波器核函数的时候(0,0)即可,不懂的话也不要紧。另外我认为公式3中的符号有一点问题自己做了修改,论文中的符号也有问题。
gama =0.2;
sigma = 2;
namuda = 6;
x = -7:1:7;
y = -35:1:35;
sita = 0;
[x,y]=meshgrid(x,y);
x1 = x*cos(sita)+y*sin(sita);
y1 = -x*sin(sita)+y*cos(sita);
z = exp(-(x1.^2+gama^2*y1.^2)/(2*sigma^2)).*cos(2*pi*x1/namuda);
z = z/sum(sum(z));
mesh(x,y,z);
         
sita=0                          sita=-pi/4                      sita=pi/4
可以看出来确实Gabor滤波器的频率响应方向随sita而变化,那么我们调整参数来看一张图片经过不同sita下输出的相应来确定特征点。
代码如下:
gama =0.2;
sigma = ;
namuda = ;
x = -::;
y = -::;
sita = ; I= imread('F:\SceneTrialTrain\Train\surg.jpg');
I = I(:,:,);
figure()
imshow(I); [x,y]=meshgrid(x,y);
x1 = x*cos(sita)+y*sin(sita);
y1 = -x*sin(sita)+y*cos(sita);
z = exp(-(x1.^+gama^*y1.^)/(*sigma^)).*cos(*pi*x1/namuda+3.14*);
z = z/sum(sum(z)); c = imfilter(I,z);
d = c;
m = c>;
n = c<=;
d(m) = ;
d(n) = ; figure()
imshow(d);
我设定响应大或者小的阈值是180
      原图
    sita=pi/4
 sita = -pi/4;
 sita = pi/2;
 sita = 0;
由此看出Gabor滤波器确实可以检测出来笔画特性的纹理。
 
Gabor滤波器怎么检测特征点呢?
在每一个点上找到兼容Gabor滤波器和不兼容Gabor滤波器,求出两个滤波器在该点的相应的差值,把每一差值的局部最大值对应的那个点设为特征点,由此在一张图上可以获得多个代表笔画的特征点。
虽然关于Gabor滤波器还不是很懂,但是现在的理解也就到这里了,推荐一个很不错的理解,这里

Gabor滤波器的理解的更多相关文章

  1. Gabor滤波器学习

    本文的目的是用C实现生成Gabor模版,并对图像卷积.并简单提一下,Gabor滤波器在纹理特征提取上的应用. 一.什么是Gabor函数(以下内容含部分翻译自维基百科) 在图像处理中,Gabor函数是一 ...

  2. Gabor变换、Gabor滤波器

    D.Gabor 1946年提出 窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数. 由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Four ...

  3. 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波

    原 https://blog.csdn.net/alwaystry/article/details/52756051 图像算法五:[图像小波变换]多分辨率重构.Gabor滤波器.Haar小波 2018 ...

  4. gabor滤波器

    https://blog.csdn.net/u013709270/article/details/49642397 https://github.com/xuewenyuan/Gabor_Visual ...

  5. python实现gabor滤波器提取纹理特征 提取指静脉纹理特征 指静脉切割代码

    参考博客:https://blog.csdn.net/xue_wenyuan/article/details/51533953 https://blog.csdn.net/jinshengtao/ar ...

  6. 对Kalman(卡尔曼)滤波器的理解

    1.简单介绍(Brief Introduction) 在学习卡尔曼滤波器之前,首先看看为什么叫"卡尔曼". 跟其它著名的理论(比如傅立叶变换.泰勒级数等等)一样.卡尔曼也是一个人的 ...

  7. 对Kalman(卡尔曼)滤波器的理解@@zz

    1.简介(Brief Introduction) 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”.跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他 ...

  8. matlab实现gabor滤波器的几种方式

    转自:http://blog.csdn.net/watkinsong/article/details/7882443 方式一: function result = gaborKernel2d( lam ...

  9. matlab中实现Gabor滤波器

    1.spatialgabor.m描述gabor函数 % SPATIALGABOR - applies single oriented gabor filter to an image%% Usage: ...

随机推荐

  1. SQL查询连续年份

    有这样一个问题,给出一个表格记录了夺冠球队的名称和年份,我们要做的就是写出一条SQL语句,查询再次期间连续夺冠的有哪些,起止时间是什么 下边是代码 create table #t(TEAM vaarc ...

  2. Jmeter 将正则表达式提取的参数传给全局(跨线程组使用变量)

    一.使用正则表达式提取sessionId 1.在测试计划(跨线程组使用变量)--> 线程组(登录)--> 添加HTTP请求(登录接口) (1)创建测试计划: 勾选独立运行每个线程组(例如在 ...

  3. Spring 讲解(六)

    如何理解 Spring 中的 AOP 一.AOP 的概述 AOP(Aspect Oriented Programming):面向切面编程,通过预编译方式和运行期动态代理来实现程序功能的统一维护的一种技 ...

  4. 微信小程序常用API组件开发

    关于小程序 张小龙定义小程序: 1.不需要下载安装即可使用: 2.用完即走,不用关心是否安装太多应用: 3.应用无处不在,随时可用. 特点: 1.适合业务逻辑简单的应用: 2,.适合低频应用: 3.适 ...

  5. linux系统一些信息(待整理)

    Linux查看物理CPU个数.核数.逻辑CPU个数 复制代码 # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 ...

  6. (转)Spring Boot干货系列:(七)默认日志logback配置解析

    转:http://tengj.top/2017/04/05/springboot7/ 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的, ...

  7. python 100day notes (1)

    x1 + x2 +x3 + x4 = 8 多少正整数解 上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案 即用三个隔板插7个空位. 答案C(7,3) =35 # __name__是Pyt ...

  8. 关于radio选中或者反选

      关注点:一.attr()和prop()的区别 <!DOCTYPE html> <html> <head> <title>JavaScript对文字按 ...

  9. LInux终端中Ctrl+S卡死

    因为初学Linux,在vim中写东西是总是喜欢按Ctrl+s来保存内容导致终端突然卡主,然后上网查资料发现了Ctrl+s 暂停屏幕输出[锁住终端]而对应的按键是Ctrl+q 恢复屏幕输出[解锁终端]

  10. 树状数据删除(TP5)

    应用场景:类似上图中树状菜单,选中一级菜单 点击上方删除按钮 所有子菜单删除 以下是代码截图(代码基于 TP5)