Gabor滤波器详解
转载自如何理解Gabor滤波器
介绍
我们已经知道,傅里叶变换是一种信号处理中的有力工具,可以帮助我们将图像从空域转换到频域,并提取到空域上不易提取的特征。但是经过傅里叶变换后,图像在不同位置的频度特征往往混合在一起,但是Gabor滤波器却可以抽取空间局部频度特征,是一种有效的纹理检测工具。
如何生成一个Gabor滤波器
在二维空间中,使用一个三角函数(如正弦函数)与一个高斯函数叠加我们就得到了一个Gabor滤波器[1],如下图。
Gabor核函数
二维Gabor核函数由一个高斯函数和一个余弦函数相乘得出,其中θ,ϕ,γ,λ,σθ,ϕ,γ,λ,σ为参数。
在OpenCV中的getGaborKernel函数里需要传入的参数除了上述5个外,还需要传入卷积核的大小。
cv::Mat getGaborKernel(Size ksize, double sigma, double theta, double lambd, double gamma, double psi=CV_PI*0.5, int ktype=CV_64F );
- 1
参数
Orientation θθ
θθ表示Gabor滤波核中平行条带的方向,有效值为从0~360度的实数。
Phase offset ϕϕ
ϕϕ表示Gabor核函数中余弦函数的相位参数,有效值为-180度~180度,0度和180度对应的方程与原点对称,-90度和90度的方程分别于原点成中心对称,可两项直角坐标系中的余弦函数。
Aspect ratio γγ
γγ,纵横比,更准确的应称为空间纵横比,表示Gabor滤波器的椭圆度。
Wavelength λλ
λλ表示Gabor核函数中余弦函数的波长参数,有效值应大于2,以像素为单位。
The standard deviation σσ
σσ表示Gabor核函数中高斯函数的标准差,该参数决定了Gabor滤波核可接受区域的大小,σσ不能被直接指定,其值与b(Bandwidth)和λλ有关。
Bandwidth(b)表示高低频率之差。在实际选取Gabor滤波核中,我们会选取频域中半响应空间频度带宽(the half-response spatial frequency bandwidth),或者半峰量级(the half-peak magnitude),他们都指的是频域中Bandwidth/2的空间位置。b,λλ和σσ的关系如下:
演示
这里用一张程序运行动态图可以清楚的显示出Gabor滤波核随各个参数变化的情况, 该程序的链接。
如下为不同参数调节下,Gabor滤波器作用于图像的效果演示
http://player.youku.com/embed/XMTU4NzA0MTIyOA==
如何设计Gabor滤波器来提取特征
为了充分利用Gabor滤波器的特点,我们必然需要设计不同方向,不同尺度的GaborL滤波器来提取特征,[2]中提到了如下策略来使滤波器尽量无重叠覆盖频域中的各个方向:
“Then the design strategy is to ensure that the half-peak magnitude support of the filter responses in the frequency spectrum touch each other as shown in Fig. 1.”
首先通过如下公式计算出aa, σxσx, σyσy,其中UhUh,UlUl分别表示滤波器的中心频度,及波长λλ的倒数,K为方向的数量,S为尺度的数量。
然后将上述结果带入下列Gabor核函数方程,从而求得Gabor卷积核上某点的值。其中m=0,1,…,S−1, n=0,1,…,K−1, θθ=nππ/K
但是在OpenCV中的Gabor核函数采用式(1)的形式,因此我们需要对两种不同表达的Gabor核函数中的参数进行一些转换。比较两种表达式,不难看出,式(4)中的2ππjWx’是一个复数形式,可以分解成正余弦和的形式,与式(1)中的余弦函数部分相对应,式(4)最前端的部分为幅度。因此两种形式的主要区别在于高斯函数的指数以及x’的表达不同。通过如下转换,就可以将式(4)中的参数转换成式(1)中的参数。
不同的卷积核(kernel size)大小对Gabor滤波核的影响
如果卷积核的边长小于波长,那么整个波形不能包括在卷积核中,使得波形边缘的滤波效果起不到作用。相反,如果如果卷积核的边长大于波长,则不会对滤波器产生什么影响。
相位变化对Gabor滤波核的影响
通过相位变化可以改变滤波核中心点的波形,如果滤波核中心点正对波峰(ϕ=0ϕ=0),则会对整张图像起到加强的作用,如果滤波核中心点正对波谷(ϕ=180ϕ=180),则会对整张图像起到减弱的作用。我们应当避免滤波核中心点的波形位于零交叉点,因为这样我们可能会看不到滤波器的任何效果。
References
[1] Prasad V S N, Domke J. Gabor filter visualization[J]. J. Atmos. Sci, 2005, 13.
[2] Manjunath B S, Ma W Y. Texture features for browsing and retrieval of image data[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 1996, 18(8): 837-842.
[3] Movellan J R. Tutorial on Gabor filters[J]. Open Source Document, 2002.
[4] Celik T, Lee H K, Petznick A, et al. Bioimage informatics approach to automated meibomian gland analysis in infrared images of meibography[J]. Journal of optometry, 2013, 6(4): 194-204.
[5] Cheng E, Du L, Wu Y, et al. Discriminative vessel segmentation in retinal images by fusing context-aware hybrid features[J]. Machine Vision and Applications, 2014, 25(7): 1779-1792.
[6] Advances in Digital Document Processing and Retrieval[M]. World Scientific, 2013.
[7] 孔锐, 张冰. Gabor 滤波器参数设置[J]. 控制与决策, 2012, 27(8): 1277-1280.
Useful Web Sites
http://www.cs.rug.nl/~imaging/simplecell.html
http://www.juergenwiki.de/work/wiki/doku.php?id=public:gabor_filter
http://blog.163.com/hulin_feng/blog/static/9235253201231453211288/
帮助理解Gabor滤波器的有关文档,以及Gabor滤波器的可视化程序已经上传到Github.
Gabor滤波器详解相关推荐
- gammatone 滤波器详解及其MATLAB代码实现
一.GammaTone 滤波器详解 定义: 外界语音信号进入耳蜗的基底膜后,将依据频率进行分解并产生行波震动,从而刺激听觉感受细胞[1].GammaTone 滤波器是一组用来模拟耳蜗频率分解特点的滤波 ...
- RC滤波器与LC滤波器详解(RC滤波器与LC滤波器区别,RC滤波器和LC滤波器工作原理和经典设计)
RC滤波器与LC滤波器详解(RC滤波器与LC滤波器区别,RC滤波器和LC滤波器工作原理和经典设计) [导读] LC滤波器应用的频率范围为1kHz-1.5GHz.由于受限于其中电感的Q值,频率响应的截至 ...
- ise的时钟ip核_Vivado CIC IP核滤波器详解(一)
引言:从本文开始,我们详细介绍Xilinx CIC IP核滤波器相关知识,包括CIC IP核提供的特性.IP核接口描述以及IP核设计指导等相关内容. 1.概述 级联积分器梳状(CIC)滤波器,也称为H ...
- Savitzky-Golay 滤波器详解及C/matlab语言程序设计
1.Savitzky-Golay 滤波器 Savitzky-Golay滤波器(通常简称为S-G滤波器)最初由Savitzky和Golay于1964年提出,发表于Analytical Chemistry ...
- 无迹卡尔曼滤波器详解
文章目录 一. 非线性处理/测量模型 二.无损(迹)变换(Unscented Transformation) 2.1 一个高斯分布产生sigma point 2.2 sigma point的权重 2. ...
- OpenCV高斯滤波器详解及代码实现
高斯滤波(Gauss Filter)是线性滤波中的一种.在OpenCV图像滤波处理中,高斯滤波用于平滑图像,或者说是图像模糊处理,因此高斯滤波是低通的.其广泛的应用在图像处理的减噪过程中,尤其是被高斯 ...
- GammaTone 滤波器详解
定义: 外界语音信号进入耳蜗的基底膜后,将依据频率进行分解并产生行波震动,从而刺激听觉感受细胞[1].GammaTone 滤波器是一组用来模拟耳蜗频率分解特点的滤波器模型,可以用于音频信号的分解,便于 ...
- python 数据、曲线平滑处理——基于Numpy.convolve实现滑动平均滤波——详解
文章目录 1 基于Numpy.convolve实现滑动平均滤波 1.1 滑动平均概念 1.2 滑动平均的数学原理 1.3 语法 1.4 滑动平均滤波示例 2 曲线平滑处理--Savitzky-Gola ...
- python cv2 轮廓的包络 面积_Python 基于FIR实现Hilbert滤波器求信号包络详解
在通信领域,可以通过希尔伯特变换求解解析信号,进而求解窄带信号的包络. 实现希尔伯特变换有两种方法,一种是对信号做FFT,单后只保留单边频谱,在做IFFT,我们称之为频域方法:另一种是基于FIR根据传 ...
- 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解
本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二: 一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...
最新文章
- cloudstack4.11 centos7 安装文档
- zendguard php5.4,ZendGuardLoader6.0.0支持PHP5.4.x系列
- 20145206邹京儒《网络对抗》逆向及Bof基础实践
- 产品经理应该mysql_数据库对产品经理的重要性
- 手机内部零件名称图解_旧手机回收后都干嘛了?
- SSIS包如何动态指定文件路径
- 详解 Qt 串口通信程序全程图文 (2)
- IE7下用ajax动态填充select框的一个问题
- 远程调试阿里云上的NodeJS Docker应用
- 时钟软件哪个好?9款苹果电脑时钟提醒软件推荐
- 操作系统的基本类型、工作流程及其优缺点
- dasheddotted IE6爷爷居然认不出来的说……
- 对旅游行业APP前五名(个人观点)优缺点的简析
- app毕业设计开题报告题目Uniapp实现的Android的校园二手商品交易平台计算机毕业论文
- Caicloud 开源 Nirvana:让 API 从对框架的依赖中涅槃重生
- 浅谈大数据风控的基本框架
- Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)...
- 视频教程-OmniPlan项目管理就该这样学-研发管理
- 【贪玩巴斯】Unity3D初学圣经(一)——学习要求 Unity简单介绍 游戏引擎介绍 课程体系介绍 「1-1 到 1-4 」—— 2021年12月9日
- 【有利可图网】PS教程:制作千图成像效果
热门文章
- # SIGPROC --- 脉冲星信号处理程序-详解
- DataGear 制作Excel动态数据可视化图表
- 新氧科技CEO金星直播背后:助推产业线上化,打造医美“新基建”
- Riverbed发布业界最全面的数字体验管理解决方案
- 微信小程序防止点击事件多次请求接口
- 如何在PC,Mac或iPhone上启用iTunes家长限制
- 解决 Minimum supported Gradle version is 5.1.1. Current version is 4.6 以及最终apk打包输出
- 文本预处理:词袋模型(bag of words,BOW)、TF-IDF
- Meta-learning algorithms for Few-Shot Computer Vision 论文解读(二)
- 转行测试,11k入职,我写了份1000多字的分享,每一笔都是经历