Gabor滤波(个人学习)
Gabor滤波
1.优点
Gabor小波与人类视觉系统中简单细胞的视觉刺激响应非常相似。在提取目标的局部空间和频率与信息方面具有良好的特性。
对于图像的边缘敏感,能够提供良好的方向选择和尺度选择。因此Gabor小波被广泛应用于视觉信息理解。
Gabor滤波器和脊椎动物视觉皮层感受野响应的比较:
第一行代表脊椎动物的视觉皮层感受野,第二行是Gabor滤波器,第三行是两者的残差。
可见两者相差极小。Gabor滤波器的这一性质,使得其在视觉领域中经常被用来作图像的预处理。
2) Gabor定义
① Gabor变换的基本思想:把信号划分成许多小的时间间隔,用傅里叶变换分析每一个时间间隔,以便确定信号在该时间间隔存在的频率。其处理方法是对f(t)加一个滑动窗,再作傅里叶变换。
设函数f为具体的函数,且,则Gabor变换定义为
其中,,是高斯函数,称为窗函数。其中a>0,b>0.
是一个时间局部化的“窗函数”。其中,参数b用于平行移动窗口,以便于覆盖整个时域。对参数b积分,则有
信号的重构表达式为
Gabor取g(t)为一个高斯函数有两个原因:一是高斯函数的Fourier变换仍为高斯函数,这使得Fourier逆变换也是用窗函数局部化,同时体现了频域的局部化;二是Gabor变换是最优的窗口Fourier变换。其意义在于Gabor变换出现之后,才有了真正意义上的时间-频率分析。即Gabor变换可以达到时频局部化的目的:它能够在整体上提供信号的全部信息而又能提供在任一局部时间内信号变化剧烈程度的信息。简言之,可以同时提供时域和频域局部化的信息。
② 窗口的宽高关系 :经理论推导可以得出:高斯窗函数条件下的窗口宽度与高度,且积为一固定值。
矩形时间――频率窗:宽为,高。
由此,可以看出Gabor变换的局限性:时间频率的宽度对所有频率是固定不变的。实际要求是:窗口的大小应随频率而变化,频率高窗口应愈小,这才符合实际问题中的高频信号的分辨率应比低频信号的分辨率要低。
3)二维Gabor滤波器:十分适合纹理表达和分离。
应用:图像分析与压缩
在图像处理领域,Gabor滤波器是一个用于边缘检测的线性滤波器。
在空间域,一个二维的Gabor滤波器是一个正弦平面波和高斯核函数的乘积。
4)用gabor提取纹理特征的思路
Gabor滤波方法的主要思想是:不同纹理一般具有不同的中心频率及带宽,根据这些频率和带宽可以设计一组Gabor滤波器对纹理图像进行滤波,每个Gabor滤波器只允许与其频率相对应的纹理顺利通过,而使其他纹理的能量受到抑制,从各滤波器的输出结果中分析和提取纹理特征,用于之后的分类或分割任务。Gabor滤波器提取纹理特征主要包括两个过程:①设计滤波器(例如函数、数目、方向和间隔);②从滤波器的输出结果中提取有效纹理特征集。Gabor滤波器是带通滤波器,它的单位冲激响应函数(Gabor函数)是高斯函数与复指数函的乘积。它是达到时频测不准关系下界的函数,具有最好地兼顾信号在时频域的分辨能力。
实现步骤:
(1)将输入图像分为3×3(9块)和4×4(16块)的图像块;
(2)建立Gabor滤波器组:选择4个尺度,6个方向,这样组成了24个Gabor滤波器;
(3)Gabor滤波器组与每个图像块在空域卷积,每个图像块可以得到24个滤波器输出,这些输出是图像块大小的图像,如果直接将其作为特征向量,特征空间的维数会很大,所以需要“浓缩”;
(4)每个图像块经过Gabor滤波器组的24个输出,要“浓缩”(文中提到“average filter responses within the block”我的理解是取灰度均值)为一个24×1的列向量作为该图像 块的纹理特征。查阅相关文献,发现也可以用方差。
5)频域分析法
研究控制系统的一种工程方法。控制系统中的信号可以表示为不同频率的正弦信号的合成。描述控制系统在不同频率的正弦函数作用时的稳态输出和输入信号之间关系的数学模型称为频率特性,它反映了正弦信号作用下系统响应的性能。应用频率特性研究线性系统的经典方法称为频域分析法。
频域分析法在图像增强、图像复原、图像编码压缩及特征编码压缩方面有着广泛应用。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
(注释嘿嘿嘿)
Gabor滤波(个人学习)的更多相关文章
- 图像滤波:Gabor滤波
- 学习OpenCV——Gabor函数的应用
原文:http://blog.csdn.net/yao_zhuang/article/details/2532279 下载cvgabor.cpp和cvgabor.h到你的C/C++工程目录下 注:在我 ...
- Gabor滤波器学习
本文的目的是用C实现生成Gabor模版,并对图像卷积.并简单提一下,Gabor滤波器在纹理特征提取上的应用. 一.什么是Gabor函数(以下内容含部分翻译自维基百科) 在图像处理中,Gabor函数是一 ...
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...
- dennis gabor 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换(转载)
dennis gabor 题目:从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅 ...
- Gabor变换、Gabor滤波器
D.Gabor 1946年提出 窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数. 由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Four ...
- 【Gabor】基于多尺度多方向Gabor融合+分块直方图的表情识别
Topic:表情识别Env: win10 + Pycharm2018 + Python3.6.8Date: 2019/6/23~25 by hw_Chen2018 ...
- python数字图像处理(10):图像简单滤波
对图像进行滤波,可以有两种效果:一种是平滑滤波,用来抑制噪声:另一种是微分算子,可以用来检测边缘和特征提取. skimage库中通过filters模块进行滤波操作. 1.sobel算子 sobel算子 ...
- python实现gabor滤波器提取纹理特征 提取指静脉纹理特征 指静脉切割代码
参考博客:https://blog.csdn.net/xue_wenyuan/article/details/51533953 https://blog.csdn.net/jinshengtao/ar ...
- 利用Gabor变换法分析纹理图像 matlab代码实现
Gabor变化属于加窗傅里叶变换,Gabor函数可以在频域不同尺度.不同方向上提取相关的特征.Gabor函数与人眼的生物作用相仿,所以经常用于纹理识别上,并取得了较好的效果. 二维Gobor滤波函数: ...
随机推荐
- 微信小程序云开发使用Typescript
1.首先参考陈希章@中国在微信小程序开发中使用Typescript中的内容了解相关的内容 2.按以下步聚进行设置 1)确认本机环境已安装npm.通过在安装目录下输入 npm --v 如返回具体的版本, ...
- [笔记] 什么是Groovy?什么是Kotlin?
关于Groovy 参考文章 https://www.w3cschool.cn/groovy/ 摘抄如下: Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Jav ...
- python读取xml格式数据
读取节点文本值和,属性值 # -*- coding: UTF-8 -*- from xml.dom import minidom dom=minidom.parse('F:\\python_proje ...
- 一、MySQL 函数
1.MySQL 字符串函数 函数 描述 实例 结果展示 说明 REPLACE(s,s1,s2) 将字符串s2代替字符串s中的字符串s1 SELECT REPLACE(ccc.contract_no,& ...
- 为什么用postman
1, 保存测试的记录, 就是确保访问的地址,数据什么的,得到的结果是有效的2, 假设开始一个访问, 然后方便在本地debug, 因为有些访问是不能通过本地的浏览器来访问的, 比如前后端分离的情况, ...
- unity GetComponent在android端获取对象错误
PlayerObj pobj = go.GetComponent<PlayerObj>(); if (pobj && pobj.IsMyTeam()) { marchAct ...
- rsyslog由于RateLimit丢失日志的处理
问题 问题的发现:在我们的docker应用中,配置了rsyslog作为日志输出:当应用产生的日志在某段时间内量比较大时,就发现会丢日志. 原因 问题的原因:日志的输出路径,应用程序把日志输出到syst ...
- Java 分布式锁实现的一些实践
近期换工作,闲下来有点时间写点东西,在这里分享一些心得体会 背景:我们在做后端开发时,无法避免的会遇到一些一致性问题,有时候我们前端的小伙伴或者rpc接口的调用方,在很短的时间间隔内给我们相同的请求, ...
- django查询中values_list(flat=True) 是什么意思?
1.values() departments = models.Department.objects.filter(dpm_status=1).values('dnp__name') print(de ...
- 渲染杂谈:early-z、z-culling、hi-z、z-perpass到底是什么?
之前一直被这几个和深度缓存(z-buffer)相关的概念搞得神魂颠倒.今天在翻阅<Real-Time Rendering>时碰巧碰巧看到了这部分的讲解.硬着头皮看了看,姑且算是讲几个概念分 ...