经过对以上的图像特征特性的仔细分析,我们不难看出,如果只以单一图像特征为图像检测标准,所能表述的属性只是图像属性的部分而已,所能描述的图像内容也过于片面从而导致图像区分信息不足,尤其是当图像经过某些变换后所呈现出的检索效果并不十分理想,甚至十分糟糕。为了解决这一上述问题,对图像多种特征进行处理之后再综合起来,并用其结果来作为检索的标准的相关技术应运而生。可以证明,新技术的提出能够显著提高图像检索的准确率。
2.2 相似度计算技术
特征向量正是图像的上述特征提取的结果的一种数学上或者说数字上的一种,有了这些图像具有的不同的特征向量,图像本身就可以靠他们表示出了。在有了图像的特征向量之后,完成图像检索的关键就在于找到特征最接近的图像,也就是要有很高的相似程度,而这个程度就可以用两张进行对比的图像各自的特征向量的距离作为标准来进行一个排序。
显然,一个合适的特征相似度计算方法对图像检索的速度和精度结果影响很大。理想的相似度计算方法的选择也是一个问题,这个方法要满足的是人眼看上去比较相似的两张图像的相似度距离应该比较小,而人眼看上去相似程度不高的图像之间的相似度距离应该比较大。目前在图像检索中常用到的主要相似度计算方法都是基于向量空间模型的,在这个模型中,特征向量被看成是向量空间中的以个点,那么图像的相似度距离的计算就可以简化成两个特征向量在向量空间的距离的计算。
2.3 SIFT算法
SIFT是大卫罗伊在1999年提出的,它是的一种局部特征的描述子,并在2004年被完善和补充[9]。SIFT特征匹配算法的强大之处在于两幅图像之间不管是发生了各种变化,比如平移,缩放等等变换的情况下仍能进行匹配,它的匹配能力是很厉害的。在现实的针对很多局部描述子所做的图像变换适应性的实验中,SIFT算法的适用性是最好的,被大家认为是所有局部描述子中最具有健壮性的描述子。
以下即为SIFT算子的一些性质:
(1)SIFT特征是一种本地的描述子,它的健壮性也正是其对图像的一般变换的适应性的体现。
(2)其独特性很好,包含的信息量很丰富,即使特征数据库中的数据是庞大的,它还是可以又快又好地进行图像匹配。
(3)具有多量性,他可以在即使是在包含很少量物体的图像中还是可以提取出很多的特征出来。
(4)运行时间短,速度快,SIFT匹配算法在经过优化之后,搜索的时间将会更加缩短,将能在更短的时间内看到匹配结果。
(5)具有很强的扩展性,SIFT算子并不是独立性的算子,他与很多特征一样可以和别的特征进行综合。
3 开发工具和环境
3.1 开发工具
3.1.1 OpenCV 1.0版本
OpenCV是一个基于C/C++语言的开源图像处理函数库,它所具有的代码都经过优化,可用于进行实时的图像处理,有比较好的移植性,支持图像/视频加载、保存等一些比较常规的操作,提供给使用者的不仅仅是低级的应用程序接口(API),也有高级的借口。它还提供了面向Intel IPP的多媒体函数库的接口,可根据你使用的Intel CPU型号的不同来进行不同的代码优化,从而提高程序运行的性能。
OpenCV具有很强大的功能,包括:支持多种图像标注、图像或者视频的输入输出、矩阵或者向量数据操作及线性代数运算、目标识别、基本图像处理、基本的GUI、动态数据结构。