如何状态变量滤波器怎样理解?Gabor滤波器

Gabor滤波小结整理
看到两文章摘抄之后整理得到:
一、Gabor&滤波器简介(部分资料来自维基百科)
&在图像处理、模式识别以及计算机视觉等领域中,,Gabor&滤波器得到了广泛的应用。Gabor滤波器是一个用于边缘检测的线性滤波器。Gabor滤波器的频率和方向表示接近人类视觉系统对于频率和方向的表示,并且它们常备用于纹理表示和描述。在空域,一个2维的Gabor滤波器是一个正弦平面波和高斯核函数的乘积,具有在空间域和频率域同时取得最优局部化的特性,与人类生物视觉特性很相似,因此能够很好地描述对应于空间频率(尺度)、空间位置及方向选择性的局部结构信息。。Gabor滤波器是自相似的,也就是说,所有Gabor滤波器都可以从一个母小波经过膨胀和旋转产生。实际应用中,Gabor滤波器可以在频域的不同尺度,不同方向上提取相关特征。
  Gabor变换是一种短时傅里叶变换方法,其实质是在傅里叶变换中加入一个窗函数,通过窗函数来实现信号的时频分析。当选取高斯函数作为窗函数时,短时傅里叶变换称为Gabor变换。
二、Gabor滤波器公式化定义&
λ:正弦函数波长;
θ:Gabor核函数的方向&
ψ:相位偏移
σ:高斯函数的标准差&
γ:&空间的宽高比(这个没太理解)
常用的偶对称二维Gabor滤波器可表示为:
&不同方向下的Gabor滤波器:
                    图1&不同方向上的滤波器
  在实际应用时,可以根据检测对象的方向趋势,选择合适的方向参数进行滤波。如在检测人脸的五官时,可以根据人脸的偏转角度进行滤波,可以使特征点的定位更加准确。
&不同频率下的滤波器:
                      图2&不同频率下的滤波器
  从图2可以看出随着的变化,Gabor滤波器中出现了很多宽窄与纹理不同的明暗条纹。当滤波器纹理与图像作用时,滤波器覆盖下的局部纹理频率与滤波器的频率越接近响应就越大,反之越小。
&人脸光照之Gabor滤波&试验结果:
  在“人脸光照调整之DCT变换”随笔中,原始图像经过DCT变换处理后,并不能完全去除光照在人脸上分布不均的影响,而且人脸的本真信息也难以被全部表达。为此在DCT变换的基础上,用Gabor滤波对其进行再处理,可以达到更好的结果。
图三&基于DCT变换的Gabor滤波
基于DCT变换的Gabor滤波
  图三(c)是在(b)图基础上做的Gabor滤波,效果显示已基本完全消除了高曝光对图像的影响。同理,图四(c)的右边脸的光照也被抑制下来。图四(d)是对原始图像直接做Gabor滤波,虽然局部效果较(c)图更清晰,但整体纹理没有(c)图平滑,这样会给后续特征点定位的收敛性带来影响,因此定位效果欠稳定。
  这两种方法合在一起使用,时间开销还是挺大的,在人脸识别等实时系统中,需要优化或精简。一般情况下,就单比处理效果和稳定性,Gabor要由于DCT变换。因此,在容许情况下,我们可以只取Gabor对图像进行处理。比如,作者在“眼睛定位”随笔中,就只用Gabor滤波对人脸处理,以提高眼睛定位精度。
  下面,作者再贴几张图,看看这两种方法合在一起时,对AAM的帮助。
光照调整对AAM定位的帮助
  图五中的(a)图是AAM对原始图像直接定位的结果,(b)图是在去光照后的定位效果。比较两组图像,可以很明显的看到(b)图的定位精度有了大幅度的提高。
参考文献:
Gabor滤波小结:http://www.cppblog.com/polly-yang/archive//183327.aspx
人脸光照调整之Gabor滤波:http://www.cnblogs.com/ImageVision/archive//2439464.html
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Gabor滤波器及其在OpenCV中的使用 - 简书
Gabor滤波器及其在OpenCV中的使用
因为最近毕设要用到 Gabor 特征提取,所以来总结一下对 Gabor 滤波器的理解,以及在 OpenCV 中的应用。
对 Gabor 滤波器的理解
Fourier 变换是一种信号处理中的有力工具,可以将图像从空域转换到频域,并提取到空域上不易提取的特征。但是 Fourier 变换缺乏时间和位置的局部信息。
Gabor 变换是一种加窗短时 Fourier 变换(简单理解起来就是在特定时间窗内做 Fourier 变换),是短时 Fourier 变换中当窗函数取为高斯函数时的一种特殊情况。因此,Gabor 滤波器可以在频域不同尺度、不同方向上提取相关的特征。另外 Gabor 函数与人眼的生物作用相仿,所以经常用作纹理识别上,并取得了较好的效果。
在二维空间中,使用一个三角函数(如正弦函数)与一个高斯函数叠加,我们就得到了一个 Gabor 滤波器。如下图所示:
感觉这个图画的好生动啊!一下子就看懂了
2 Gabor 函数以及参数含义
二维 Gabor 函数的数学表达如下(OpenCV 里好像只用到了实数部分):
下面介绍公式中各个参数的含义:
波长 (λ):表示 Gabor 核函数中余弦函数的波长参数。它的值以像素为单位指定,通常大于等于2,但不能大于输入图像尺寸的五分之一。
方向 (θ):表示 Gabor 滤波核中平行条带的方向。有效值为从0到360度的实数。
相位偏移 (φ):表示 Gabor 核函数中余弦函数的相位参数。它的取值范围为-180度到180度。其中,0度和180度对应的方程与原点对称,-90度和90度的方程分别于原点成中心对称。
长宽比 (γ):空间纵横比,决定了 Gabor 函数形状的椭圆率。当 γ=1 时,形状是圆的;当 γ&1 时,形状随着平行条纹方向而拉长。通常该值为0.5。
带宽 (b):Gabor 滤波器的半响应空间频率带宽 b 和 σ/ λ 的比率有关,其中 σ 表示 Gabor 函数的高斯因子的标准差。三者的关系如下:
σ 的值不能直接设置,它仅随着带宽 b 变化。带宽值必须是正实数,通常为1,此时,标准差和波长的关系为 σ=0.56λ。带宽越小,标准差越大,Gabor 形状越大,可见平行条纹数量越多。
3 在 OpenCV 中使用 Gabor 滤波
我在网上看到好多 OpenCV 的代码实现的 Gabor 函数,但是其实可以利用 OpenCV 的库函数,实现起来非常简单,只要几行代码。
主要的函数有以下两个:
CV_EXPORTS_W Mat getGaborKernel( Size ksize, double sigma, double theta,
double lambd, double gamma, double psi = CV_PI*0.5, int ktype = CV_64F );
CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth,
InputArray kernel, Point anchor = Point(-1,-1), double delta = 0,
int borderType = BORDER_DEFAULT );
(哈哈哈,学会插入代码了!爱上了 Markdown 编辑器)
getGaborKernel 函数生成了一个 Gabor 滤波的核,也就是相当于一个模板。参数参见上面的说明。
filter2D 函数实现卷积运算。其中参数 ddepth 表示目标图像深度,ddepth=-1 表示生成与原图像深度相同的图像。
4 效果展示
我用了一张视频截图来做的滤波,识别文字的效果还是蛮好的。
滤波后的图片
撒老师的表情非常适合做滤波,2333
Gabor函数是一个用于边缘提取的线性滤波器,十分适合纹理表达和分离,其频率和方向表达同人类视觉系统类似。另外从生物学实验发现,Gabor滤波器而已很好地近似单细胞的感受野函数。 另外,Gabor函数分为实部和虚部,用实部进行滤波后图像会平滑;虚部滤波后可用来检测边缘(也许...
Gabor Filter 以下定义翻译引用自维基百科: 在图像处理领域,以Dennis Gabor命名的Gabor滤波器,是一种用于纹理分析的线性滤波器,即它主要分析的是,图像在某一特定区域的特定方向上是否有特定的频率内容。当代许多视觉科学家认为,Gabor滤波器的频率和方...
一、傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很难能够从感性上得到理解, 要理解傅立叶变换,确实需要一定的耐心,别一下子想着傅立叶变换是怎么变换...
这些年计算机视觉识别和搜索这个领域非常热闹,后期出现了很多的创业公司,大公司也在这方面也花了很多力气在做。做视觉搜索,其实是深度学习(或人工智能)领域最重要的研究课题之一,在现实生活中有着非常广泛的应用。 通常,视觉搜索包含了两步任务:首先,待搜索物体的检测与定位;其次,从...
简书的朋友,大家好,我是Alvin,从这篇文章开始,我会慢慢把微信公众号中我觉得写的还可以的内容搬到简书上来,同时也欢迎大家关注我的微信公众号:机器学习和数学。 之所以要这样做,是发现了公众号确实有它的不足,就是之前写的内容,很少会被后面关注的朋友看到。不过以后我会保持同步...
通常,大家在刚刚接触水晶的时候,会用水晶的品种来定义水晶的作用。 依据颜色来划分,有白水晶、粉水晶、紫水晶等;依据特别的光学效应,有星光水晶、石英猫眼; 依据包体特征,又可将其划分为发晶、钛晶、幽灵、水胆水晶等。但这只是水晶的其中一个面向,也是ta最初的一个面向。 进一步延...
“大雪”节气,通常在每年的12月7日(也有个别年份的6日或8日)。太阳黄经达255度时,为二十四节气之一的“大雪”。大雪,顾名思义,雪量大。古人云:“大者,盛也,至此而雪盛也”。 每年的12月7日至8日为二十四节气中的大雪节气。大雪节气的到来,预示着正式进入了冬季最寒冷的时...
Spring Boot自定义BannerSpring Initializr来快速构建Spring Boot/Cloud工程Swagger2MybatisDubboRedis@BeanApplication.properties/.yml自定义拦截器 WebMvcConfig...
004 013 022 028 031 034 037 040 043 059 068 073 077 082 086 095 103 130 133 151 158 185 202 208 223 232 238 239 280 283 293 301 304 307 3...如何理解Gabor滤波器
我们已经知道,傅里叶变换是一种信号处理中的有力工具,可以帮助我们将图像从空域转换到频域,并提取到空域上不易提取的特征。但是经过傅里叶变换后,图像在不同位置的频度特征往往混合在一起,但是Gabor滤波器却可以抽取空间局部频度特征,是一种有效的纹理检测工具。
如何生成一个Gabor滤波器
在二维空间中,使用一个三角函数(如正弦函数)与一个高斯函数叠加我们就得到了一个Gabor滤波器,如下图。
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 );11
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滤波器作用于图像的效果演示
如何设计Gabor滤波器来提取特征
为了充分利用Gabor滤波器的特点,我们必然需要设计不同方向,不同尺度的GaborL滤波器来提取特征,中提到了如下策略来使滤波器尽量无重叠覆盖频域中的各个方向:
“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.”
首先通过如下公式计算出a, σx, σy,其中Uh,Ul分别表示滤波器的中心频度,及波长λ的倒数,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),则会对整张图像起到加强的作用,如果滤波核中心点正对波谷(?=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, ): 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, ): 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, ): .
[6] Advances in Digital Document Processing and Retrieval[M]. World Scientific, 2013.
[7] 孔锐, 张冰. Gabor 滤波器参数设置[J]. 控制与决策, ): .
Useful Web Sites
帮助理解Gabor滤波器的有关文档,以及Gabor滤波器的可视化程序已经上传到.
没有更多推荐了,【算法详解】Gabor滤波器的理解
关于Gabor滤波器是如何提取出特征点,这个过程真是煎熬。
看各种文章,结合百度、文章内部的分析才有一点点明白。
Gabor滤波器究竟是什么?
很多表述说的是加窗傅里叶变换。怎么理解呢?
公式有下面几种表述
& & & (2)
文章中的和第三种最相似,那么我理解是:傅里叶变换的基是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;
[x,y]=meshgrid(x,y);
x1 = x*cos(sita)+y*sin(sita);
y1 = -x*sin(sita)+y*cos(sita);
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 = 2;
namuda = 6;
x = -7:1:7;
y = -35:1:35;
I= imread('F:\SceneTrialTrain\Train\surg.jpg');
I = I(:,:,1);
imshow(I);
[x,y]=meshgrid(x,y);
x1 = x*cos(sita)+y*sin(sita);
y1 = -x*sin(sita)+y*cos(sita);
exp(-(x1.^2+gama^2*y1.^2)/(2*sigma^2)).*cos(2*pi*x1/namuda+3.14*2);
z = z/sum(sum(z));
c = imfilter(I,z);
m = c&180;
n = c&=180;
d(m) = 255;
imshow(d);
我设定响应大或者小的阈值是180
& sita=pi/4
由此看出Gabor滤波器确实可以检测出来笔画特性的纹理。
Gabor滤波器怎么检测特征点呢?
在每一个点上找到兼容Gabor滤波器和不兼容Gabor滤波器,求出两个滤波器在该点的相应的差值,把每一差值的局部最大值对应的那个点设为特征点,由此在一张图上可以获得多个代表笔画的特征点。
虽然关于Gabor滤波器还不是很懂,但是现在的理解也就到这里了,推荐一个很不错的理解,。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 理解滤波器陡峭程度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信