博主简介:matlab图像代码项目合作(扣扣:3249726188)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本次案例是基于Gabor特征的图像检索,用matlab实现。
一、案例背景和算法介绍
这次博客文章我们介绍图像处理的一个重要领域算法:图像检索。目前的图像检索的算法比较多,有基于颜色、纹理、形状等等各种特征算法的图像检索。
前期的博客介绍了颜色、纹理、形状、SIFT模型等的图像检索:
基于颜色模型的图像内容检索(【图像检索】基于颜色模型的图像内容检索,matlab实现-CSDN博客)
基于灰度共生矩的纹理图像检索(【图像检索】基于灰度共生矩的纹理图像检索,matlab实现-CSDN博客)
基于傅里叶描述子的形状特征图像检索(【图像检索】基于傅里叶描述子的形状特征图像检索,matlab实现-CSDN博客)
基于SIFT特征的图像检索(【图像检索】基于SIFT特征的图像检索,matlab实现-CSDN博客)
这次分享的是基于Gabor特征图像检索,特征算法是利用Gabor滤波器提取的纹理特征,前期博客对这个特征算法做过介绍(基于Gabor滤波器的指纹图像识别,Matlab实现_图像纹理识别滤波-CSDN博客),博客写Gabor不多,而且比较多同学对这个算法感兴趣,这里将当时对Gabor算法的简介重新贴一下。
傅里叶变换是线性系统分析的有力工具,提供了一种把时域信号转换到频域进行分析的途径,时域和频域之间是一对一的映射关系。图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为 灰度分布函数。
傅里叶变换不足之处:经典傅里叶变换只能反映信号的整体特性(时域,频域)。对傅里叶谱中的某一频率,无法知道这个频率是在什么时候产生的。从傅里叶变换的定义也可看出,傅里叶变换是信号在整个时域内的积分,因此反映的是信号频率的统计特性,没有局部化分析信号的功能。另外,要求信号满足平稳条件。为解决傅里叶变换的局限性,产生了Gabor变换和小波变换。
Gabor变换是D.Gabor 1946年提出的。为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数,得到了窗口Fourier变换。由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Fourier变换又称为短时Fourier变换,这个变换又称为Gabor变换。
Gabor 特征是一种可以用来描述图像纹理信息的特征。此外,Gabor小波对于图像的边缘敏感,能够提供良好的方向选择和尺度选择特性,Gabor滤波器可以提取不同方向上的纹理信息。Gabor滤波器对于光照变化不敏感,能够提供对光照变化良好的适应性,能容忍一定程度的图像旋转和变形,对光照、姿态具有一定的鲁棒性。Gabor 函数的定义、参数细节等等网上也比较多资料,这里不再细述。
下面对本次分享的图像检索进行介绍,主要的算法流程如下:
1、提取测试图的特征,这次选取的是Gabor特征。
2、计算待检索图库的特征,并将特征保存为特征库
3、计算相似度,对检索图像的特征与图库特征进行距离的计算,可以采用计算直接特征距离、欧式距离等,得到相近度
4、确定检索规则,可以采用相似度在一定范围则为检索的结果,或直接选取与待检索图像距离最近的前N个图像作为检索结果。这次的案例我们选取图库中距离最近的10个图作为检索结果。
具体流程图如下:
下面看看具体的matlab实现效果。
二、Matlab实现效果
图库采用image.orig:
测试图库部分截图如下:
下面看看测试的检索效果:
待检索图1和检索效果:
待检索图2和检索效果: