BoW词袋模型Bag of Words cpp实现(stable version 0.01)

致谢:基础框架来源BoW,开发版本在此基础上进行,已在Ubuntu、OS X上测试通过,Windows需要支持c++11的编译器(VS2012及其以上)。

使用

代码下载地址:bag-of-words-stable-version,这个是稳定版,上层目录里的开发版不要下载,那是我添加测试新模块所用的。

编译

修改Makefile文件,如果你的系统支持多线程技术,将

CFLAGS = -std=c++11

修改为

CFLAGS = -std=c++11 -fopenMP # if openMP accesses, using this

修改完上面后,再修改编译所需的OpenCV和cppsugar,即

INCPATH = -I/usr/local/include -I/Users/willard/codes/cpp/opencv-computer-vision/cpp/BoVW/cppsugar
LIBPATH = -L/usr/local/lib

/usr/local/include/usr/local/lib分别是OpenCV所在的包含头文件目录路径和库目录路径,修改为你本机所在的目录即可。后面的cppsugar目录同样换成你本机的目录。 修改。这些修改完成后,执行下面命令进行编译:

make

编译后即可在所在目录生成可执行文件。

生成图库列表文件

对于待检索的图像库imagesDataSet,执行下面命令

python imgNamesToTXT.py -t /Users/willard/Pictures/imagesDataSet

上面执行后生成一个imageNamesList.txt的文件,该文件中包含的是每幅图像的路径及其图像文件名。

建立索引

执行下面命令,会完成特征提取、生成词典、量化生成bag of word向量:

./index imageNamesList.txt

上面命令执行玩,会生成两个文件bows.datdict.dat,分别存放的是图像库每幅图像的bag of word向量以及词典。

查询图像

按下面命令进行查询

./search /Users/willard/Pictures/first1000/ukbench00499.jpg imageNamesList.txt

其中/Users/willard/Pictures/first1000/ukbench00499.jpg是查询图像,执行完后,会生成一个result.html的文件,应为要显示检索结果,所以这里采用的是用html页面的方式显示检索结果的,用浏览器打开即可。

批量测试

为了评价检索的效果,可以使用ukbenchScores.cpp计算在ukbench图像库上的NS score(NS分数),下面是在ukbench1000张图像上计算的NS score:

Ukbench first 1000 images, the NS-scores: 3.358, with tf*idf and histogram intersection kernel distance.

Ukbench first 1000 images, the NS-scores: 3.602, with tf and histogram intersection kernel distance.

Bag of words原理

关于bag of words的原理,可以查阅我的博文BoW图像检索Python实战Bag of Words模型注意,该框架中采用的相似性度量方式是直方图相交(histogram intersection kernel)的方法,测试发现直方图相交的方法要比用余弦距离度量的方式效果更好,但计算速度较慢。

开发版本bag-of-words-dev-version中加入了逆文档词频以及RANSAC重排,待效果达到预期后,会添加到稳定版中。


from: http://yongyuan.name/blog/bag-of-words-cpp-implement.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值