基于SIFT及BOW的图像检索

一、什么是图像检索

图像检索就是基于图像的某一特征对其他图片进行匹配检索。从20世纪70年代开始,有关图像检索的研究就已开始,当时主要是基于文本的图像检索技术(Text-based Image Retrieval,简称TBIR),利用文本描述的方式描述图像的特征,如绘画作品的作者、年代、流派、尺寸等。到90年代以后,出现了对图像的内容语义,如图像的颜色、纹理、布局等进行分析和检索的图像检索技术,即基于内容的图像检索(Content-based Image Retrieval,简称CBIR)技术。在这里我们主要讨论的是基于内容的图像检索
BOW(bag of words)模型最初应用于文本处理领域,用来对文档进行分类和识别。

二、实现图像检索的步骤

1、 基于SIFT进行特征提取
在这一点,我在前面的笔记中有详细的介绍过如何进行基于sift算子的特征提取。将待处理的图片都进行SIFT特征提取处理,并且保存在原来存放图片的文件夹中,备用。
2、学习构建“视觉词典(visual vocabulary)”
对于已经提取的图像特征进行遍历,并利用聚类方法(本次实验使用K-Means算法)将其投影到词汇上,,特征描述子分为K个簇,以使簇内具有较高的相似度,而簇间相似度较低,将词义相近的词汇合并,作为单词表中的基础词汇,聚类类别的数量K即为整个视觉词典的大小基础词汇的个数。提交至数据库,由此产生该图片群的视觉词典。
3、针对输入特征集,根据视觉词典进行量化
从每幅图像中提取很多个特征点,这些特征点都可以用单词表中的单词近似代替,通过统计单词表中每个单词在图像中出现的次数,可以将图像表示成为一个K维数值向量。
4、把输入图像,根据TF-IDF转化成视觉单词(visual words)的频率直方图
在第三步我们已经统计出每个单词在图像中出现的次数,根据这个结果绘制出相应的频率直方图。
基于SIFT及BOW的图像检索_第1张图片
5、 构造特征到图像的倒排表,通过倒排表快速索引相关图像
倒排索引又叫反向索引,它是一种逆向思维运算,是现代信息检索领域里面最有效的一种索引结构。它的原理是从用户请求到结果返回,对给定查询特征的单词,通过“关键词——文本”的方式从局部得到整体的方式进行查询。
6、 根据索引结果进行直方图匹配
对于符合索引结果的图片根据匹配点的多少进行直方图重排,可以得到更精确的匹配结果。

三、实验代码及结果

1.首先依旧准备好相应的sift文件及PCV文件以及安装需要的模块
a.安装PyQt模块,最好下载好安装的whl文件,直接pip安装很耗时T_T,下载地址:https://pypi.org/project/PyQt5/#files ,下载以后pip install文件全名就好啦
b.安装cherrypy模块(web演示需要,不做网页演示可以忽略),这个直接pip install cherrypy就可以啦
c.准备相应sift文件~或者有做过之前的sift文件的可以直接拿图片去处理再直接进行接下去的实验
在这里插入图片描述
d.准备相应PCV模块~
在这里插入图片描述

2.此时可以进行sift算子的匹配及sift文件生成
基于SIFT及BOW的图像检索_第2张图片
生成的sift文件:
基于SIFT及BOW的图像检索_第3张图片
3.生成视觉词典:

基于SIFT及BOW的图像检索_第4张图片
4.检索
常规检索
基于SIFT及BOW的图像检索_第5张图片

基于SIFT及BOW的图像检索_第6张图片
5.常规检索结果
基于SIFT及BOW的图像检索_第7张图片
6.直方重排检索结果
基于SIFT及BOW的图像检索_第8张图片
从以上两张图片的情况来看,重排和常规的效果差不多。但是在匹配出的图片量较大时可以看到重排后的精准度会相对较高。

你可能感兴趣的:(图像处理)