Gabor 特征总结

本文转载自个人博客git


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

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

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

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

1、傅里叶变换

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

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

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

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

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

叠加波的分解过程

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

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

2、Gabor 核

2.1 一维 Gabor 核

2.1.1 一维傅里叶变换

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

$$ \hat{f}(\xi)=\int_{-\infty}^\infty f(t) e^{-i2\pi t \xi}\, dt,\quad \xi \text{为任意实数} \tag{1}\label{1} $$

其中,$f$ 为输入信号,$\xi$ 表示分解获得的各个波的频率,$\hat{f}(f, \xi)$ 为变换后的信号。公式中的 $e^{-i2\pi x \xi}$ 表示一个复数波,关于复数波的解释能够看我以前的一篇文章

从上面的公式能够看出,原信号 $f(t)$ 以 t 为自变量,描述了信号值随时间的变化,说明原信号空间在时间域中。通过傅里叶变换后,函数自变量变为了 $\xi$ ,$\hat{f}(\xi)$ 描述了信号值随频率的变化,即信号转换到了频率域空间中。若是说原来信号的图示须要以时间(空间)为坐标轴的话,信号在傅里叶变换后的图示就须要以频率为坐标轴了。

2.1.2 一维 Gabor 核

一维Gabor核由一个高斯核与一个复数波的乘积定义:
$$ Gabor(t) = ke^{i\theta} \omega(at) s(t) \tag{2}\label{2}$$

其中,
$$\begin{cases}
\omega(t)=e^{-\pi t^2} \\\
s(t) = e^{i(2\pi f_0 t)} \\\
\end{cases}$$
这里,$f_0$ 是复数波$s(t)$的频率。

将复数波$s(t) = e^{i(2\pi f_0 t)}$代入$\ref{2}$式中,获得:

$$\begin{align}
Gabor(t) & = k \omega(at) e^{i(2\pi f_0 t + \theta)} \\\
& = k \omega(at) \left[ \cos(2\pi f_0 t+\theta) + i\sin(2\pi f_0 t+\theta) \right]
\end{align}$$

上面最后一步获得了 Gabor 核的复数表示,咱们就能够按实部和虚部将其拆分为实核和虚核,在不少应用中,咱们只须要应用 Gabor核的实数部分便可:
$$\begin{cases}
Gabor_{real}(t) = \omega(at)\cos(2\pi f_0 t + \theta) \\\
Gabor_{imag}(t) = \omega(at)\sin(2\pi f_0 t + \theta)
\end{cases}$$

2.1.3 Gabor 核的傅里叶变换

将 Gabor 核(式$\ref{2}$)套入一维傅里叶变换(式$\ref{1}$)中,获得 Gabor 核的傅里叶变换:

$$\begin{align}
\hat{Gabor}(f)
& = ke^{i\theta} \int_{-\infty}^{\infty} e^{-i 2\pi f t} \omega(at) s(t) \,dt \\\
& = ke^{i\theta} \int_{-\infty}^{\infty} e^{-i2\pi (f-f_0)t} \omega(at) \,dt \\\
& = (k/a) \cdot e^{i\theta} \cdot \hat{\omega}\left( (f-f_0)/a \right) \\\
\end{align} \tag{3}\label{3}$$

上式中出现了 $\hat{\omega}(\frac{f-f_0}{a})$ 的形式,这里须要补充高斯核一个颇有趣的性质:$\hat{\omega}(f) = \omega(f) = e^{-\pi f^2}$,这个性质这里就不证实了,有兴趣的同窗能够本身推导一下。根据这个性质,上式中的 $\hat{\omega}(\frac{f-f_0}{a})$ 也能够写做 $\omega(\frac{f-f_0}{a})$,两者能够自由转换。

此外,$\ref{3}$式中的末尾,咱们知道了Gabor核傅里叶变换后是这样一个形式:$\frac{k}{a} e^{i\theta} \hat{\omega}(\frac{f-f_0}{a})$,这个形式能够看作是一个复数波,它的幅度
$$A = \left\lVert \hat{Gabor}(f) \right\rVert = \frac{k}{a} \hat{\omega}(\frac{f-f_0}{a}) = \frac{k}{a} \omega(\frac{f-f_0}{a}) $$

也就是说,Gabor核至关于在频率域应用了一个高斯核窗口。假设咱们这时有了一个信号的频率域:$f_{in}(f)$,那么咱们直接用频率域的Gabor核 $\hat{Gabor}$ 与其相乘,就实现了对 $f_0$ 频率邻域范围内的滤波效果:输入信号频率离这个 Gabor 核的 $f_0$ 越远,则乘上Gabor核以后的结果就越小,尤为是当 $f_{in}$ 在 $f_0$ 的 $3\sigma$ 区间外时,这个频率几乎能够忽略不计。因而,最终能保留下来的信号就都是 $f_0$ 频率附近的信号了。

这个想法,用公式表示出来就是:
$$ \hat{Gabor} \cdot \hat{f_{in}} $$

从这个角度出发,给咱们任意一个输入信号,咱们先用傅里叶变换将其变换到频率域获得$\hat{f_{in}}$,再用 Gabor 核的傅里叶变换结果与之相乘,就是频域滤波的结果了。

不过咱们大可没必要这么麻烦,由于有卷积定理:
$$Gabor * f_{in} = \hat{Gabor} \cdot f_{in} $$
这样看来,咱们只须要用 Gabor 核和输入信号卷积就能够获得输入信号在某频率邻域附近的响应结果!!

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

2.2 二维 Gabor 变换

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

2.2.1 二维傅里叶变换:

二维傅里叶变换定义以下:
$$ \hat{f}(\xi_x, \xi_y) = \iint f(x,y) e^{-i2\pi (\xi_x x + \xi_y y)}\, dx dy$$

为了简洁,改用 $(u_0, v_0)$ 来代替 $(\xi_x, \xi_y)$,则上式可写为:
$$ \hat{f}(u_0, v_0) = \iint f(x, y) \exp {\left( -i2\pi {\left( u_0 x + v_0 y\right) }\right) } \, dxdy \tag{4}\label{4}$$
提醒一下,这里 $(x, y)$ 表示空域坐标,$(u_0, v_0)$ 表示频域坐标。

2.2.2 二维复数波

二维复数波完整定义以下(用复指数形式表示):
$$ s(x,y) = \exp\left( i \left(2\pi (u_0 x + v_0 y) + P \right) \right) $$

因为初始相位对Gabor核影响不大,所以能够将其省略,获得更简洁的形式(论文中关于 Gabor 函数的定义各不同,主要是这些细节的考虑不一样):
$$ s(x,y) = \exp \left(i \left(2\pi (u_0 x + v_0 y) \right) \right) $$

2.2.3 二维高斯函数

二维高斯函数定义以下:

$$ \omega(x, y, \sigma_x, \sigma_y) = K \exp(-\pi \left (x-x_0)^2 / \sigma_x^2 + (y-y_0)^2 / \sigma_y^2\right ) \tag{5}\label{5}$$

其中,$\sigma_x, \sigma_y$ 分别为两个方向上的尺度参数(scaling parameters),用来控制高斯函数在两个方向上的“展布”形状。$(x_0, y_0)$ 为高斯函数的中心点。$K$ 为常数。

考虑全面的话,高斯函数还要有(顺时针)旋转,即:
$$\begin{cases}
(x-x_0)_r = (x-x_0)\cos \theta + (y-y_0)\sin \theta \\\
(y-y_0)_r = -(y-y_0)\sin \theta + (y-y_0)\cos \theta
\end{cases}$$

加入旋转参数后的二维高斯函数为:
$$ \omega_r(x, y, \theta, \sigma_x, \sigma_y) = K \exp(-\pi \left (x-x_0)_r^2 / \sigma_x^2 + (y-y_0)_r^2 / \sigma_y^2\right )$$

二维高斯示意

上图便是一个二维高斯核的图像,该高斯核中,$(x_0, y_0) = (0, 0)$,$(\sigma_x^2, \sigma_y^2) = (50, 40)$,$\theta = -45°$

从图像能够看出,$\sigma_x 和 \sigma_y$分别控制了高斯两个方向的“展布”状况。

2.2.4 Gabor 滤波器核

相似一维 Gabor 核,咱们将二维高斯函数与二维复数波相乘,就获得了二维的Gabor核:
$$\begin{align}
Gabor(x_0, y_0, \theta, \sigma_x, \sigma_y, u_0, v_0)
& = s(x,y) \omega_r(x,y) \\\
& = K \exp\left(-\pi \left( (x-x_0)_r^2/\sigma_x^2 + (y-y_0)_r^2/\sigma_y^2 \right) \right) \exp\left(i 2\pi (u_0 x + v_0 y) \right) \\\
\end{align}$$

它的各个参数含义以下:

  • $(x_0, y_0)$: 高斯核的中心点

  • $\theta$: 高斯核的旋转方向(顺时针)

  • $(\sigma_x, \sigma_y)$: 高斯核两个方向上的尺度

  • $(u_0, v_0)$: 频域坐标

  • $K$: 高斯核的幅度(magnitude)的比例

Gabor核频率域图示
上图为Gabor核在频率域中的图示,这个Gabor核就是从以前那个高斯核获得的,其参数分别为:$u_0 = v_0 = 1/80$,$x_0 = y_0 = 0$,$\sigma_x^2 = 50$,$\sigma_y^2 = 40$,$\theta = -45°$,$F_0 = \sqrt{2}/80$,$\omega_0=45°$。

Gabor核空间域图示

上图为Gabor核在空间域中的图示,参数和上面那个Gabor核同样。图像左边是实部,右边是虚部。这样的Gabor核与图像进行卷积,咱们便能获得图像在$(u_0, v_0)$频率附近的响应状况。在图像处理中,一般使用Gabor的实部进行卷积就能够。

3、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.

欢迎到个人博客查看更多文章

相关文章
相关标签/搜索