在图像处理领域,Gabor滤波器通常用于纹理分析和特征提取等方面,这主要是因为Gabor滤波器在频率和方向上的表达类似于人类视觉系统。本节我们将使用Gabor算法对图像进行处理,并结合余弦相似度、欧氏距离度量方法及Naïve检索方法对图像进行相似性检索。
7.10.1 Gabor算法的使用
在 Windows 7 环境下,安装 Microsoft Visual Studio 2010 软件,并配置OpenCV2.4.9。
本算法对应的项目名称是texture。打开texture文件夹,然后使用Visual Studio 2010编译工具打开texuture.sln文件,并配置OpenCV2.4.9及以上版本。
数据输入可在主函数的以下两行代码中修改:
第一行是图像的格式,第二行是图像文件夹的名称。注:目前该代码只能实现RGB图像。
图像的缩放比例参数在doGabor代码中修改:
double scale = 0.5;
结果的输出在当前项目路径下的“CosEuDis_similityGABORFeature1.txt”或“EuDis_similityGABORFeature1.txt”文件中。其中前者是利用相似余弦距离匹配后的结果,后者是利用欧氏距离匹配后的结果。注:本算法中,相似余弦距离的阈值为0.50,欧氏距离的阈值为62000。
测试图像为image1文件夹下的“//image//S001-002.jpg”图像。
测试图像集在当前项目下,文件名称为image1。
按照以上步骤,执行texture.cpp文件即可。
7.10.2 Gabor算法原理
在空间域中,二维的Gabor滤波器由高斯核函数和正弦平面波的乘积组成。Gabor函数的数学公式如下[10,11]:
实数部分:
虚数部分:
(x, y)表示图像中像素的位置(坐标)。
λ:波长,该参数以像素为单位。
θ:取值范围0~2π,是Gabor函数并行条纹的方向,它决定了Gabor条纹的方向。
φ:指相位偏移,决定了Gabor函数的对称性,如φ=0时,为中心对称。
σ:高斯函数的标准差。
γ:空间的宽高比,它决定了Gabor条纹的尺度(大小)。
下面讲述Gabor滤波器的相关参数调优。
参考文献[10]基于C++实现了Gabor,运行上述程序时需要调整Gabor函数的参数。下面是通过调整参数得到的不同Gabor滤波结果,分别在图7-12、图7-13、图7-14中进行展示。
(1)调整参数θ后的Gabor滤波结果比较(见图7-12),其中其他参数为:γ=1.0,λ=10.0,σ=100,0。
图7-12 调整参数θ后的Gabor滤波结果
(2)调整参数λ后的Gabor滤波结果比较(见图7-13),其中其他参数为:θ=0,γ=1.0,σ= 100,0。
图7-13 调整参数λ后的Gabor滤波结果
从上面的示例可以看出,Gabor滤波器具有方向选择性(θ)和尺度选择性(λ)。此外,对滤波器输出产生影响的参数还有高斯函数的作用范围,即高斯窗体。不同高斯窗体的滤波结果如图7-14所示,其中width为滤波宽度,height为滤波高度。
图7-14 调整参数width和height后的Gabor滤波结果
7.10.3 Gabor算法实现
在主函数中,读取每一幅图像,并调用doGabor函数获得该图像Gabor处理后的特征,进而做PCA降维处理,再进行匹配。本书使用了文献[12]中实现的Gabor滤波程序,相关代码如下:
gaborfilter的相关具体实现如下:
7.10.4 Gabor算法的实验数据、实验结果及分析
1.实验数据
该算法的实验数据为当前路径下的image1文件夹下的所有JPG图像。原图像的尺寸为1200×1600像素,在本次实验中,我们设置的尺寸为0.5,也就是说,我们将图像的尺寸缩放到600×800像素。
2.实验结果
查询图像如图7-15所示。
图7-15 查询图像(6)
检索出的部分相似图像如图7-16所示。
图7-16 检索出的部分相似图像(6)
以下是实验结果的两个表格,其中,表7-5表示图像库中的图像与检索图像之间的余弦相似度,表7-6表示图像库中的图像与检索图像之间的欧氏距离。“yes”表示返回机器视觉上的相似图像,换而言之,表示在阈值范围内的相似图像。
基于余弦相似度度量的Gabor图像检索算法的实验结果如表7-5所示。
表7-5 基于余弦相似度度量的Gabor图像检索算法的实验结果
续表
基于欧氏距离度量的Gabor图像检索算法的实验结果如表7-6所示。
表7-6 基于欧氏距离度量的Gabor图像检索算法的实验结果
续表
续表
3.实验分析
从实验结果中看出,该算法对图像的涂抹、覆盖很敏感。但是整体上,匹配到的相似图像的成效尚可。基于余弦相似度度量的Gabor算法的阈值为0.50,查准率为29/31×100%=93.5%,查全率为29/40×100%=72.5%。基于欧氏距离度量的Gabor算法的阈值为62000,查准率为37/41×100%=90.2%,查全率为37/40×100%=92.5%。