#libvot - C++11多线程图像检索库
####English Version
##简介 libvot是一套完整的图像检索工具箱,其中包含特征提取工具和一个高效的vocabulary tree实现。在这个工具箱中,我们用到C++11的标准多线程库来加速算法, 取得了快速准确的检索结果。目前,这个库主要用于我们的科研和生产,并且在积极维护中。如果觉得有用,欢迎star或者fork这个项目!
##安装 编译安装libvot非常简单,整个编译安装基于CMake。为了保证能够使用全部的C++11特性,这个项目要求CMake版本高于2.8.12。 我们主要在Unix-like的系统(Ubuntu 14.04, CentOS 7, MacOS 10.10)中用gcc进行测试。简单的编译安装包括以下几个步骤:
- 下载本项目或者clone
- 建立一个build文件夹
- 运行CMake来设置编译选项
- 用make和gcc进行编译
- 运行make test
- 在src/example中查看示例程序
在类Unix系统中,以上步骤可以用如下命令执行:
$ cd libvot
$ git submodule init & git submodule update
$ mkdir build && cd build
$ cmake ..
$ make && make test
##初次尝试
libvot包含一个特征提取工具。你可以用./libvot_feature <image_list>
来生成一些特征点文件,然后用特征点文件来进行图片索引。
注意,这里libvot_feature
的参数是一个文件路径列表,而不是一个图片文件的路径。你可以像下面这样先产生image_list
,然后运行libvot_feature
:
$ ls -d $PWD/*.jpg > image_list
$ $LIBVOT_ROOT/build/bin/libvot_feature <image_list>
编译成功之后,你可以找到一个叫image_search
的程序,它的用法很简单:./image_search <sift_list> <output_dir> [depth] [branch_num] [sift_type] [num_matches] [thread_num]
。我们在data文件夹中加入了一个示例数据fountain-P11来进行演示。如果你执行了上述的安装过程并且成功在build文件夹中编译了libvot,以下命令可以将结果生成在build/bin/vocab_out
文件夹中。注意,你可能需要修改一下sift_list中的文件前缀。
$ cd bin
$ ./image_search <sift_list> <output_folder> [depth] [branch_num] [sift_type] [num_matches] [thread_num]
$ (e.g.) ./image_search ../../test_data/fountain_dense/sift_list ./vocab_out
vocab_out
文件夹中将会出现一个名为match.out
的结果,每一行结果包含三个数字:
“first_index second_index similarity_score”。
##贡献 我们正在向下一个版本(0.2)迈进,如果你对这个项目的开发感兴趣,可以看一下当前的开发计划和libvot的代码风格。我们欢迎并感谢任何形式的贡献,包括文档编辑,测试,新功能开发,意见及建议等等。
##协议 The BSD 3-Clause License
##联系及捐赠 如果有问题或者建议,请发信给tshenaa@ust.hk. 如果你想帮助这个项目,可以考虑为我们贡献代码,也给点击以下链接给开发者捐(投)赠(食),感谢!