这篇教程图像检索之基于vlfeat实现SIFT特征写得很实用,希望能帮到您。 概述基于内容的图像检索技术是采用某种算法来提取图像中的特征,并将特征存储起来,组成图像特征数据库。当需要检索图像时,采用相同的特征提取技术提取出待检索图像的特征,并根据某种相似性准则计算得到特征数据库中图像与待检索图像的相关度,最后通过由大到小排序,得到与待检索图像最相关的图像,实现图像检索。图像检索的结果优劣取决于图像特征提取的好坏,在面对海量数据检索环境中,我们还需要考虑到图像比对(图像相似性考量)的过程,采用高效的算法快速找到相似图像也至关重要。 在构建图像特征库的时候,通常不会使用原始的图像特征,这是由于Raw Feature有很多冗余信息,而且维度过高在构建特征数据库和匹配的时候效率较低。所以,通常要对提取到的原始特征进行重新编码。比较常用的三种编码方式: - BoF , Bog of Feature 源于文本处理的词袋模型(Bog,Bag of Words)
- VLAD , Vector of Aggragate Locally Descriptor
- FV , fisher vector
构建图像特征数据库,通常有以下几个步骤: - 图像预处理流程(增强,旋转,滤波,缩放等)
- 特征提取(全局特征,局部特征:SIFT,SURF,CNN等)
- 对每张图片提取的原始特征重新编码(BoF,VLAD,FV)形成图像的特征库
图像的特征库构建完成后,在检索阶段,主要涉及到特征的相似性度量准则,排序,搜索 - 提取图像的特征,
- 特征编码
- 在图像特征库中进行检索
- 返回相似性较高的结果
SIFT特征SIFT特征的讲解已经很多了,之前的博客也有过介绍。本文就借助vlfeat 对SIFT特征的提取过程做一个总结。 一个SIFT特征有两部分组成:关键点(keypoint)和对应特征描述子(Descriptor)。使用SIFT detector 进行SIFT关键点的提取,然后使用SIFT descriptor 计算关键点的描述子。也可以独立的使用SIFT detector 进行SIFT 关键点的提取,或者使用SIFT descriptor 进行别的关键点描述子的计算。 一个SIFT keypoint是一块圆形区域并且带有方向,使用4个参数描述该区域的几何结构: - keypoint的中心位置的坐标(x,y)
- keypoint的scale(圆形区域的半径r)
- keypoint的方向(使用弧度表示的角度θ)

一个SIFT关键点由4个参数确定: 
|