Python 计算机视觉-BOW图像检索

本文介绍了从基于文本到基于内容的图像检索转变,重点阐述了基于内容的图像检索(CBIR)中的矢量空间模型(BOW)及其在图像检索中的应用。通过SIFT特征提取、k-means聚类构建视觉词典,将输入图像转化为视觉单词的频率直方图,实现图像的量化和检索。实验结果显示,该方法在图像相似度检索上有较好的表现,但图像复杂或无明显特征时效果会受影响。
摘要由CSDN通过智能技术生成
一、图像检索的概述和原理

  从20世纪70年代开始,有关图像检索的研究就已开始,当时主要是基于文本的图像检索技术(Text-based Image Retrieval,简称TBIR),利用文本描述的方式描述图像的特征,如绘画作品的作者、年代、流派、尺寸等。到90年代以后,出现了对图像的内容语义,如图像的颜色、纹理、布局等进行分析和检索的图像检索技术,即基于内容的图像检索(Content-based Image Retrieval,简称CBIR)技术。CBIR属于基于内容检索(Content-based Retrieval,简称CBR)的一种,CBR中还包括对动态视频、音频等其它形式多媒体信息的检索技术。

1.1 文本检索

  基于文本的图像检索沿用了传统文本检索技术,回避对图像可视化元素的分析,而是从图像名称、图像尺寸、压缩类型、作者、年代等方面标引图像,一般以关键词形式的提问查询图像,或者是根据等级目录的形式浏览查找特定类目下的图像。
  在图像数字化之前,档案管理者、图书管理员都是采用这种方式组织和管理图像。 图像所在页面的主题、图像的文件名称、与图像密切环绕的文字内容、图像的链接地址等都被用作图像分析的依据,根据这些文本分析结果推断其中图像的特征。

1.2 内容检索

  基于内容的图像检索,即CBIR(Content-based image retrieval),是计算机视觉领域中关注大规模数字图像内容检索的研究分支。典型的CBIR系统,允许用户输入一张图片,以查找具有相同或相似内容的其他图片。而传统的图像检索是基于文本的,即通过图片的名称、文字信息和索引关系来实现查询功能。

1.2.1 矢量空间模型(BOW)

  矢量空间模型 是一个用于表示和搜索文本文档的模型。它基本上可以应用于任何对象类型,包括图像。该名字来源于用矢量来表示文本文档,这些矢量是由文本词频直方图构成的。矢量包括了每个单词出现的次数,而且在其他别的地方包含很多 0 元素。由于其忽略了单词出现的顺序及位置,该模型也被称为 BOW 表示模型(Bag of Words)。

1.2.2 Bag-of-words应用于图像

  类比Bag-of-words在文档中的应用,也可以将图片分成若干个图像块,构建“词库”,把每幅图像描述为一个局部区域/关键点(Patches/Key Points)特征的无序集合,即Bag-of-features。
在这里插入图片描述

1.3 Bag of features流程
  1. 特征提取
  2. 学习 “视觉词典(visual vocabulary)”
  3. 针对输入特征集,根据视觉词典进行量化
  4. 把输入图像转化成视觉单词(visual words)的频率直方图
1.3.1 特征提取

  通过分割、密集或随机采集、关键点或稳定区域、显著区域等方式使图像形成不同的图像块,并获得各图像块处的特征。
在这里插入图片描述
  特征必须具有较高的区分度,而且要满足旋转不变性以及尺寸不变性等,通常采用SIFT特征(也可以采用SUFT、Harrist等特征提取算法 )。SIFT会从图片上提取出很多特征点,每个特征点都是 128 维的向量,如果图片足够多的话,我们会提取出一个巨大的特征向量库。
在这里插入图片描述

1.3.2 学习 “视觉词典(visual vocabulary)”

  提取完特征后,采取聚类算法对这些特征向量进行聚类。通才采用k-means聚类。
在这里插入图片描述
K-means算法流程:

  1. 随机初始化 K 个聚类中心
  2. 重复下述步骤直至算法收敛:
  3. (1)对应每个特征,根据距离关系赋值给某个中心/类别
    (2) 对每个类别,根据其对应的特征集重新计算聚类中心

视觉单词数量即K一般取3000~10000, 即图像整体描述的直方图维度为3000~10000。

聚类是实现 visual vocabulary 即码本的关键

  1. 无监督学习策略
  2. k-means 算法获取的聚类中心作为 codevector
  3. 码本可以通过不同的训练集协同训练获得
  4. 一旦训练集准备足够充分, 训练出来的码本将具有普适性
    在这里插入图片描述
    聚类完成后,得到k个向量组成的字典,叫visual word。
1.3.3、针对输入特征集,根据视觉词典进行量化

(1)对于输入特征,量化的过程是将该特征映射到距离其最接近的 codevector ,并实现计数

码本=视觉词典

Codevector=视觉单词

视觉词典样例
在这里插入图片描述
(2)选择视觉词典/码本的规模可能存在的问题:

     太少:视觉单词无法覆盖所有可能出现的情况

     太多:计算量大,容易过拟合
1.3.4、把输入图像转化成视觉单词(visual words)的频率直方图

  生成码本,即构造Bag-of-Features,也就是

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值