转载: Gabor 特征总结

https://mengqi92.github.io/2015/10/11/gabor/

转存失败重新上传取消

Gabor 特征是一种可以用来描述图像纹理信息的特征,Gabor 滤波器的频率和方向与人类的视觉系统类似,特别适合于纹理表示与判别。

Gabor 特征主要依靠 Gabor 核在频率域上对信号进行加窗,从而能描述信号的局部频率信息。

说到 Gabor 核,不能不提到傅里叶变换。正是靠傅里叶变换,我们才能将信号转换到频率域,才能让Gabor核在频率域去加窗。而在原本的空间域中,一个 Gabor 核实际上就是一个高斯核与正弦波调制的结果,可以看做是高斯核应用在了正弦波的频域部分。

上面说的还是比较笼统,下面我们一步一步介绍Gabor核是怎么对信号“加窗”的。

一、傅里叶变换

关于傅里叶变换,韩昊同学总结过一个很直观的解释。我这里就不赘述了。

总之,傅里叶变换是图像处理里面一个很重要的工具,本质是将任意一个函数转化为若干不同频率正弦波的组合,(组合方式在离散函数中就是相加,在连续函数中就是积分)。由此,将空域(或时域)信号转换到了频域(即频率域)。

空间域中多个波叠加,在频率域中就对应着若干个散落的点。韩昊同学将其比喻为不同音阶组成的音谱。

频率域中的基本元素就是正弦波:空间域中的一个正弦波波形,在频率域中只要一个点就能表示。

维基百科上有一个动态图,展示了一个叠加波如何分解到频率域上的若干点:

转存失败重新上传取消

事实上,任何波都可以看做是若干(乃至无穷)个不同频率正弦波的叠加。

就像可见光可以看做不同频率的光的叠加一样,通过傅里叶变换,我们能将任何波分解为不同频率波的叠加。这样转换的好处是:有些情况下空域中很复杂的问题,在频率域会变得十分简单。

二、Gabor 核

2.1 一维 Gabor 核

2.1.1 一维傅里叶变换

一维傅里叶变化定义如下:

其中,f 为输入信号,ξξ 表示分解得到的各个波的频率,f^(f,ξ)f^(f,ξ) 为变换后的信号。公式中的 e−i2πxξe−i2πxξ 表示一个复数波,关于复数波的解释可以看我之前的一篇文章

从上面的公式可以看出,原信号 f(t)f(t) 以 t 为自变量,描述了信号值随时间的变化,说明原信号空间在时间域中。经过傅里叶变换后,函数自变量变为了 ξξ ,f^(ξ)f^(ξ) 描述了信号值随频率的变化,即信号转换到了频率域空间中。如果说原来信号的图示需要以时间(空间)为坐标轴的话,信号在傅里叶变换后的图示就需要以频率为坐标轴了。

2.1.2 一维 Gabor 核

一维Gabor核由一个高斯核与一个复数波的乘积定义:

2.1.3 Gabor 核的傅里叶变换

将 Gabor 核(式22)套入一维傅里叶变换(式11)中,得到 Gabor 核的傅里叶变换:

也就是说,Gabor核相当于在频率域应用了一个高斯核窗口。假设我们这时有了一个信号的频率域:fin(f)fin(f),那么我们直接用频率域的Gabor核 Gabor^Gabor^ 与其相乘,就实现了对 f0f0 频率邻域范围内的滤波效果:输入信号频率离这个 Gabor 核的 f0f0 越远,则乘上Gabor核之后的结果就越小,尤其是当 finfin 在 f0f0 的 3σ3σ 区间外时,这个频率几乎可以忽略不计。于是,最终能保留下来的信号就都是 f0f0 频率附近的信号了。

这个想法,用公式表示出来就是:

从这个角度出发,给我们任意一个输入信号,我们先用傅里叶变换将其变换到频率域得到fin^fin^,再用 Gabor 核的傅里叶变换结果与之相乘,就是频域滤波的结果了。

不过我们大可不必这么麻烦,因为有卷积定理:


这样看来,我们只需要用 Gabor 核和输入信号卷积就可以得到输入信号在某频率邻域附近的响应结果!!

我们既可以用这个响应结果来实现频域滤波,又可以用它来描述信号的频率信息。下面要提到的Gabor特征,就是用Gabor核来描述信号的频率信息,从而作为信号的特征的。

2.2 二维 Gabor 变换

将上面的一维情况推广至二维:

2.2.1 二维傅里叶变换:

二维傅里叶变换定义如下:


提醒一下,这里 (x,y)(x,y) 表示空域坐标,(u0,v0)(u0,v0) 表示频域坐标。

2.2.2 二维复数波

二维复数波完整定义如下(用复指数形式表示):

s(x,y)=exp(i(2π(u0x+v0y)+P))s(x,y)=exp⁡(i(2π(u0x+v0y)+P))

由于初始相位对Gabor核影响不大,因此可以将其省略,得到更简洁的形式(论文中关于 Gabor 函数的定义各不一样,主要是这些细节的考虑不同):

s(x,y)=exp(i(2π(u0x+v0y)))s(x,y)=exp⁡(i(2π(u0x+v0y)))

2.2.3 二维高斯函数

二维高斯函数定义如下:

ω(x,y,σx,σy)=Kexp(−π((x−x0)2/σ2x+(y−y0)2/σ2y))(5)(5)ω(x,y,σx,σy)=Kexp⁡(−π((x−x0)2/σx2+(y−y0)2/σy2))

其中,σx,σyσx,σy 分别为两个方向上的尺度参数(scaling parameters),用来控制高斯函数在两个方向上的“展布”形状。(x0,y0)(x0,y0) 为高斯函数的中心点。KK 为常数。

考虑全面的话,高斯函数还要有(顺时针)旋转,即:

{(x−x0)r=(x−x0)cosθ+(y−y0)sinθ(y−y0)r=−(x−x0)sinθ+(y−y0)cosθ{(x−x0)r=(x−x0)cos⁡θ+(y−y0)sin⁡θ(y−y0)r=−(x−x0)sin⁡θ+(y−y0)cos⁡θ

加入旋转参数后的二维高斯函数为:

ωr(x,y,θ,σx,σy)=Kexp(−π((x−x0)2r/σ2x+(y−y0)2r/σ2y))ωr(x,y,θ,σx,σy)=Kexp⁡(−π((x−x0)r2/σx2+(y−y0)r2/σy2))

转存失败重新上传取消

上图即是一个二维高斯核的图像,该高斯核中,(x0,y0)=(0,0)(x0,y0)=(0,0),(σ2x,σ2y)=(50,40)(σx2,σy2)=(50,40),θ=−45°θ=−45°

从图像可以看出,σx和σyσx和σy分别控制了高斯两个方向的“展布”情况。

2.2.4 Gabor 滤波器核

类似一维 Gabor 核,我们将二维高斯函数与二维复数波相乘,就得到了二维的Gabor核:

Gabor(x0,y0,θ,σx,σy,u0,v0)=s(x,y)ωr(x,y)=Kexp(−π((x−x0)2r/σ2x+(y−y0)2r/σ2y))exp(i2π(u0x+v0y))(6)(7)(6)Gabor(x0,y0,θ,σx,σy,u0,v0)=s(x,y)ωr(x,y)(7)=Kexp⁡(−π((x−x0)r2/σx2+(y−y0)r2/σy2))exp⁡(i2π(u0x+v0y))

它的各个参数含义如下:

  • (x0,y0)(x0,y0): 高斯核的中心点
  • θθ: 高斯核的旋转方向(顺时针)
  • (σx,σy)(σx,σy): 高斯核两个方向上的尺度
  • (u0,v0)(u0,v0): 频域坐标
  • KK: 高斯核的幅度(magnitude)的比例

转存失败重新上传取消

上图为Gabor核在频率域中的图示,这个Gabor核就是从之前那个高斯核得到的,其参数分别为:u0=v0=1/80u0=v0=1/80,x0=y0=0x0=y0=0,σ2x=50σx2=50,σ2y=40σy2=40,θ=−45°θ=−45°,F0=2–√/80F0=2/80,ω0=45°ω0=45°。

转存失败重新上传取消

上图为Gabor核在空间域中的图示,参数和上面那个Gabor核一样。图像左边是实部,右边是虚部。这样的Gabor核与图像进行卷积,我们便能得到图像在(u0,v0)(u0,v0)频率附近的响应情况。在图像处理中,通常使用Gabor的实部进行卷积就可以。

三、Gabor 核作为图像特征

通过上面的分析,我们知道了,一个Gabor核能获取到图像某个频率邻域的响应情况,这个响应结果可以看做是图像的一个特征。那么,我们如果用多个不同频率的Gabor核去获取图像在不同频率邻域的响应情况,最后就能形成图像在各个频率段的特征,这个特征就可以描述图像的频率信息了

转存失败重新上传取消

上图展示了一系列具有不同频率的 Gabor 核,用这些核与图像卷积,我们就能得到图像上每个点和其附近区域的频率分布情况。

由于纹理特征通常和频率相关,因此Gabor核经常用来作为纹理特征。又因为字符识别问题通常都是识别纹理的过程,所以Gabor核在光学字符识别(OCR)系统中也有广泛应用。

写在最后

由于本人对信号处理不是太了解,因此对傅里叶变换、频率域的理解都是个人粗浅的理解。为了完成这篇文章,我学习了很多信号处理的知识,重新理解了一些基本概念,看别人的帖子建立过一些认识,随后这层理解不牢又被推翻,再重新建立……前前后后用了一周的时间才最终完成。如有不严谨或错误的地方,还请大家谅解。要严肃学习的话最好还是看权威教材、看论文,我这篇文章可以作为另一个角度的补充。

参考资料

  1. 中文维基百科 / 傅里叶变换
  2. 韩昊同学对傅里叶变换的直观解释
  3. 中文维基百科 / 卷积定理
  4. 英文维基百科 / Gabor_filter
  5. 英文维基百科 / Gabor_transform
  6. Movellan J R. Tutorial on Gabor filters[J]. Open Source Document, 2002.
  7. Idrissa M, Acheroy M. Texture classification using Gabor filters[J]. Pattern Recognition Letters, 2002, 23(9): 1095-1102.

版权声明

本文所有文字版权均属本人所有,如需转载请注明来源。

  • 本文作者: Mengqi
  • 本文链接: http://mengqi92.github.io/2015/10/11/gabor/

转载:Gabor 特征总结相关推荐

  1. gabor特征 gabor滤波器

    gabor特征 Gabor 特征是一种可以用来描述图像纹理信息的特征,Gabor 滤波器的频率和方向与人类的视觉系统类似,特别适合于纹理表示与判别.Gabor 特征主要依靠 Gabor 核在频率域上对 ...

  2. 人脸识别---Gabor特征(mean pooling和max pooling)

    Abstract-本文主要讲解Gabor特征在人脸识别中的使用.       在此不讲Gabor滤波器的原理,网上有很多博客已经介绍了大量关于Gabor滤波器.此文讲下提取出来后的Gabor滤波器的处 ...

  3. 【表情识别】基于Gabor特征实现微表情识别系统含Matlab源码

    1 简介 表情识别的研究目标是让计算机能够自动识别出人的表情信息,从而更进一步地增强人机交互的友好性及智能性.但是由于人脸表情识别涉及图像处理,计算机视觉,应用数学等学科的融合,正是由于这种多学科交叉 ...

  4. [转载]文本特征TFIDF权重计算及文本向量空间VSM表示

    https://blog.csdn.net/Fighting_No1/article/details/51000066

  5. 【航空和卫星图像中检测建筑物】使用gabor特征和概率的城市区域和建筑物检测研究(Matlab代码实现)

  6. Gabor滤波器为什么能实现频率域加窗

    Gabor 特征是一种可以用来描述图像纹理信息的特征,Gabor 滤波器的频率和方向与人类的视觉系统类似,特别适合于纹理表示与判别. Gabor 特征主要依靠 Gabor 核在频率域上对信号进行加窗, ...

  7. 【Gabor】基于多尺度多方向Gabor融合+分块直方图的表情识别

    Topic:表情识别 Env: win10 + Pycharm2018 + Python3.6.8 Date:   2019/6/23~25 by hw_Chen2018                ...

  8. 图像检索:几种基于纹理特征的图像检索算法

    from:图像检索:几种基于纹理特征的图像检索算法 本文节选自<基于纹理的图像检索算法研究>.描述了几种基于纹理特征的图像检索算法. 第 3 章基于纹理特征的图像检索 3.2 基于灰度共生 ...

  9. Gabor滤波器的特征提取C++实现

    自己项目中用到了Gabor滤波器,于是自己借助Opencv图像库,实现了Gabor滤波器的特征提取,用类的形式将其封装,希望对大家有用>0<. Gabor参数主要是5个尺度,8个方向,共4 ...

  10. matlab在图像调用Gabor滤波

    有很多介绍Gabor的文章,Gabor是一种纹理特征提取,和灰度共生矩阵类似 ------------------------------------------------------------- ...

最新文章

  1. Spring Cloud Alibaba 之 服务治理:Nacos 如何实现微服务服务治理
  2. kubesphere服务网格servicemesh(Istio)示例:部署 Bookinfo 和管理流量
  3. POJ - 1469 COURSES (匈牙利算法入门题)
  4. 一个女程序员的第七年工作总结
  5. Unable to locate the default servlet for serving static content. Please set the 'defaultServletName'
  6. java - 计算距离和反弹
  7. 炸裂!万字长文拿下HTTP!
  8. Bootstrap 流式布局
  9. 漫画:唐玄奘教你横扫 AVL 树面试题无敌手!
  10. 用java实现邮件发送验证码
  11. java关键字与解释_5.Java基础知识-注释和关键字
  12. java坦克大战图片素材包,坦克大战素材包
  13. 区块链开发语言python_区块链开发语言有哪些?哪种语言更适合区块链开发?
  14. exlc表格怎么换行_excel表格怎么换行_excel表格怎么换行上下换行
  15. Android自定义一个属于自己的刻度尺
  16. 基于Android的学生管理系统的设计与实现
  17. 3-D Reconstruction from a Single Still Image-学习《1》
  18. 【车牌识别】基于matlab GUI阈值分割车牌识别(带面板)【含Matlab源码 721期】
  19. Win8.1自带“滑动关机” 小技巧教你开启隐藏功能
  20. minicom配置1500000波特率

热门文章

  1. 【气动学】基于龙格库塔算法实现外弹道仿真含Matlab源码
  2. 使用阿里智能语音实现录音文件识别
  3. 阿里云智能语音交互服务-录音文件识别采样率不支持-UNSUPPORTED_SAMPLE_RATE 解决方案
  4. 推荐9个强大的谷歌插件,程序猿必备!不看后悔系列!
  5. Hi3519V101 开发环境搭建
  6. 五大理由!建议你选择中国电信 CTWing 物联网平台?
  7. 软件工程专业和网络工程专业的区别
  8. 开发uni-app时HBuilderX编辑器使用微信小程序模拟器保存代码无法刷新模拟器问题
  9. 基带信号带宽与占空比的关系
  10. matlab算方差std,MATLAB 方差函数 var std