bag of words model 应用于图像

来源:互联网 发布:网站排名seo 编辑:程序博客网 时间:2024/05/15 01:22

本文记录bag of words(BOW)在图像中的应用相关思路。
1. 简介
bag of words是文档的一种建模方法,它可以把一个文档表示成向量数据,从而使计算机处理文档数据更加方便。
wiki的例子很清晰的描述了BOW对一个文档建模的过程。
http://en.wikipedia.org/wiki/Bag-of-words_model
现有如下两个文档:
John likes to watch movies. Mary likes movies too.
John also likes to watch football games.
把文档中的单词抽取出来,可以构成一个单词表:
{
“John”: 1,
“likes”: 2,
“to”: 3,
“watch”: 4,
“movies”: 5,
“also”: 6,
“football”: 7,
“games”: 8,
“Mary”: 9,
“too”: 10
}
这个单词表中有10个不同的词,根据单词表中每个词的索引号,可以把两个文档表示成如下的两个含有10个元素的向量:
[1, 2, 1, 1, 2, 0, 0, 0, 1, 1]
[1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
其中,元素值代表其索引号在单词表中对应的词在文档中出现的次数。比如第一个文档对应的向量,前两个元素值为1和2,1代表“John”在该文档中的出现1次,2代表“likes”在该文档中出现2次。
这样的建模,只提取了单词,忽略了语法和语序,等于把单词一个一个放进一个袋子里,所以是词袋模型。

2, BOW在图像中的应用
此部分描述参考文章:http://blog.sina.com.cn/s/blog_65f81ec601012sd5.html
要应用到图像中,我们要把一幅图看成一个文档,图片分割成的patch对应的sift特征看成单词。所以首先要做的是单词表的构造。
用人脸,自行车,和吉他,三张图片举例。
主要有以下3步:
1)把图像分割成一个个patch,并对每个patch的中心点计算sift特征。sift算法可以提取图像中的局部不变特征,这一步是做dense sift.
这里写图片描述

2)利用kmeans算法,将这些patch的中心点的sift特征聚成为k个类,用这k个聚类中心来构造单词表。因为一幅图像中能提取出成千上万个sift向量,而每个sift向量是128维的,为了减小计算量,需要对这些sift向量做聚类,把相似的patch合并,取聚类中心作代表,构造单词表。
这里写图片描述

以上的众多patch中可以看到有一些是相似的,设定k=4,则聚类后的单词表如下:

这里写图片描述

其他参考资料:
http://en.wikipedia.org/wiki/Bag-of-words_model_in_computer_vision
http://www.douban.com/note/310140053/
http://blog.csdn.net/pupu_2009/article/details/6427222

文章出处:http://blog.csdn.net/happyer88/article/details/45769413

0 0
原创粉丝点击