没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
python计算机视觉编程——基于BOF的图像检索(附代码)
图像检索
此次实验的内容主要有关于图像检索的内容,与教材《python计算机视觉编程》衔接,将展⽰如何利⽤⽂本挖掘技术对基于图像视觉内容
进⾏图像搜索。
⼀、图像检索
由于暴⼒检索(即⼀张⼀张图像直接对⽐)需要花费⼤量的计算机运⾏时间和内存,考虑到检索效率,从20世纪70年代开始,有关图像检
索的研究就已开始,当时主要是基于⽂本的图像检索技术(Text-based Image Retrieval,简称TBIR),利⽤⽂本描述的⽅式描述图像的
特征,如绘画作品的作者、年代、流派、尺⼨等。到90年代以后,出现了对图像的内容语义,如图像的颜⾊、纹理、布局等进⾏分析和检
索的图像检索技术,即基于内容的图像检索(Content-based Image Retrieval,简称CBIR)技术。CBIR属于基于内容检索(Content-
based Retrieval,简称CBR)的⼀种,CBR中还包括对动态视频、⾳频等其它形式多媒体信息的检索技术。
总的来说图像检索就是从⼤量的图像数据库中检索出满⾜条件的图⽚,技术包括:
基于⽂本的图像检索技术
基于内容的图像检索技术
1.1基本原理
由于对于⼤场景数据集(如城市场景), 只有极少部分的图像对具有匹配关系,为了解决这⼀问题,我们利⽤图像整体特征实现匹配检索,
⽽⾮局部特征点。
在检索原理上,⽆论是基于⽂本的图像检索还是基于内容的图像检索,主要包括三⽅⾯:
⼀⽅⾯对⽤户需求的分析和转化,形成可以检索索引数据库的提问;
另⼀⽅⾯,收集和加⼯图像资源,提取特征,分析并进⾏标引,建⽴图像的索引数据库;
最后⼀⽅⾯是根据相似度算法,计算⽤户提问与索引数据库中记录的相似度⼤⼩,提取出满⾜阈值的记录作为结果,按照相似度降序的
⽅式输出。
1.2 BOW原理简述(同BOF原理)
为了将⽂本挖掘技术应⽤到图像中,我们⾸先需要建⽴视觉等效单词;这通常可以SIFT 局部描述⼦做到。它的思想是将描述⼦空间量化成
⼀些典型实例,并将图像中的每个描述⼦指派到其中的某个实例中。这些典型实例可以通过分析训练图像集确定,并被视为视觉单词。所有
这些视觉单词构成的集合称为视觉词汇,有时也称为视觉码本。对于给定的问题、图像类型,或在通常情况下仅需呈现视觉内容,可以创建
特定的词汇。从⼀个(很⼤的训练图像)集提取特征描述⼦,利⽤⼀些聚类算法可以构建出视觉图像搜索,或在更加⾼级的场合下使⽤层次
K-means单词。聚类算法中最常⽤的是 K-means,这⾥也将采⽤ K-means。视觉单词并不⾼端,只是在给定特征描述⼦空间中的⼀组向
量集,在采⽤ K-means 进⾏聚类时得到的视觉单词是聚类质⼼。⽤视觉单词直⽅图来表⽰图像,则该模型便称为 BOW 模型。
Bag-of-Words模型源于⽂本分类技术。在信息检索中,它假定对于⼀个⽂本,忽略其词序、语法和句法,将其仅仅看作是⼀个词集合,或
者说是词的⼀个组合。⽂本中每个词的出现都是独⽴的,不依赖于其他词是否出现,即在任意⼀个位置选择词汇都不受前⾯句⼦的影响⽽独
⽴选择的。
使⽤某种聚类算法(如K-means)将特征进⾏聚类,每个聚类中⼼被看作是词典中的⼀个视觉词汇(Visual Word),相当于⽂本检索中的词,
视觉词汇由聚类中⼼对应特征形成的码字(code word)来表⽰(可看当为⼀种特征量化过程)。所有视觉词汇形成⼀个视觉词典(Visual
Vocabulary),对应⼀个码书(code book),即码字的集合,词典中所含词的个数反映了词典的⼤⼩。图像中的每个特征都将被映射到视觉
词典的某个词上,这种映射可以通过计算特征间的距离去实现。然后,统计每个视觉词的出现与否或次数,图像可描述为⼀个维数相同的直
⽅图向量,即Bag-of-Features。在Bag-of-Features⽅法的基础上,Andrew Zisserman进⼀步借鉴⽂本检索中TF-IDF模型(Term
Frequency⼀Inverse Document Frequency)来计算Bag-of-Features特征向量。接下来便可以使⽤⽂本搜索引擎中的反向索引技术对图
像建⽴索引,⾼效的进⾏图像检索。
Bag-of-Features更多地是⽤于图像分类或对象识别,鉴于SIFT的优异性能,本⽂提取的是SIFT特征。
1.3 基于BOF的图像检索基本流程
1. 特征提取
2. 学习 “视觉词典(visual vocabulary)”
3. 针对输⼊特征集,根据视觉词典进⾏量化
4. 把输⼊图像,根据TF-IDF转化成视觉单词(visual words)的频 率直⽅图
5. 构造特征到图像的倒排表,通过倒排表快速 索引相关图像
6. 根据索引结果进⾏直⽅图匹配
1.3.1 sift特征提取
该特征提取原理可以参考我之前写过的博⽂,这⾥不多写:
1.3.2 建⽴视觉单词
为了将⽂本挖掘技术运⽤到图像中,⾸先要建⽴视觉等效单词;可以采⽤SIFT局部描述算⼦获得,针对输⼊特征集,根据视觉词典进⾏量
化。建⽴视觉单词的思想就是将描述算⼦空间量化成⼀些典型实例,并将图像中的每个描述算⼦指派到其中的某个实例中,这些典型实例可
通过分析训练图像集确定。即从⼀个很⼤的训练集提取特征描述算⼦,利⽤⼀些聚类算法可以构建出视觉单词(聚类算法最常⽤的是K-
means),视觉单词是在给定特征描述算⼦空间中⼀组向量集,采⽤K-means进⾏聚类得到的聚类质⼼;把输⼊图像,根据TF-IDF转化成
视觉单词( visual words)的频率直⽅图 ,⽤视觉单词直⽅图来表⽰图像。如图下所⽰:
1.3.3 K-Means算法
关于K-Means算法的原理可以参考下⾯这篇博⽂:
K值越⼤,噪声对聚类影响越⼩,但是K值取过⼤将⽆法得出聚类结果,所以聚类时K值的选取要适当。
K-Means算法基本流程:
随机初始化 K 个聚类中⼼
重复下述步骤直⾄算法收敛:
对应每个特征,根据距离关系赋值给某个中⼼/类别
对每个类别,根据其对应的特征集重新计算聚类中⼼
⼆、实验
2.1 实验环境
1.ptyhon3.7版本,win10 ,pycharm;
2.由于有⽤到sift特征提取,所以需要安装vlfeat,我安装的是0.9.20版本。vlfeat的win64⾥的vl.dll和sift.exe和vl.lib复制在项⽬⾥。
3.把PCV包放在项⽬下
4.安装PyQt5(直接pip就好了,加个镜像快很多,要不然容易超时)
5.安装cherrypy(同样直接pip,⽤于可视化检索)
2.2实验要求
剩余11页未读,继续阅读
资源评论
_webkit
- 粉丝: 30
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功