Skip to content

Billy213/imret

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于内容的图像检索-基于视觉词袋模型

目录介绍

  • bin/ 包含二进制文件
  • conf/ 一系列配置文件
  • imgInfo/ 图像文件集及提取图像信息的脚本
  • include/ 头文件
  • src/ 源文件
  • mist/ 数据库表生成文件及Google protobuf定义文件

依赖

  • opencv >= 2.0 且编译NONFree 库
  • postgresql >= 9.0
  • ImageMagick ,在用脚本提取图像信息的时候用到
  • Google Protobuf ,图像检索服务器用于客户端通讯

安装

  1. 创建数据库及相应的表
    # 创建名为 imret的数据库,在PostgreSQL中可能需要切换到pgsql用户才有权限
    $ createdb imret 
    $ cd mist
    # 使用用户 pgsql 在数据库imret中 创建表
    $ psql -U pgsql -d imret -f ./createTB.sql
        
  2. 添加图像集,读取图像信息,写入数据库
    # 假设图像集放在目录 mist/img/PI100 下
    $ cd mist
    # 读取图像信息, 并以带头CSV格式输出到标准输出,使用重定向写入到文件
    $ ./readImgInfo.sh img/PI100 PI100 > PI100.csv
    # 上述命令的第2个参数为图像集的标签
    # 将图像信息写入数据库,参数为 ./readImgInfo.sh 生成的文件,默认使用pgsql用户
    $ ./writeImgInfoDB.sh PI100.csv
        
  3. 生成二进制可执行文件
    $ cd src
    $ make all
    # 生成的可执行代码放在 bin/目录下
        

配置文件

配置文件的每行均为key=”value” 形式,以 # 开头的为注释 支持的key如下:

  • PGURI,连接数据库的URI,egg:postgresql://username:password@server-address/database
  • image,用于选择初始化的图像集,imageClass为给图像的标签,改语句实际为SQL语句中的where子句, 所以可以加入其它符合SQL语法的命令。这个值确定好后不要修改,不然会无法读取已经写入的数据!
  • k ,k-means聚类时使用的k
  • precision, k-means收敛的精度
  • maxCount, k-means的最大迭代次数
  • nresult, 图像检索服务器返回的最大结果数
  • resultSimilarity, 图像检索服务器返回结果的最小相似度[0,1]

使用

  1. 计算SIFT特征
    # 确保在bin/ 目录下的可执行文件能够读取图像集
    $ cd bin
    $ ln -s ../imgInfo/img img
    # 先手动写入CSV文件的头
    $ echo "imageID,position,feature" > PI100_SIFT.csv
    # ./calcSift 的参数为配置文件路径,结果会输出到标准输出,运行状态会输出到标准错误
    $ ./calcSift ../conf/PI100.conf >> PI100_SIFT.csv
        

    至此img/PI100目录下的图像的SIFT特征均存提取并存放在文件PI100_SIFT.csv

  2. 统计视觉词汇频率直方图
    # ./featsKmeans 需要两个参数,第一个为配置文件,第二个为含有头的SIFT的csv文件,
    # 结果会写入数据库
    $ ./featsKmeans ../conf/PI100.conf PI100_SIFT.csv
        
  3. 运行图像检索服务器
    # 服务器将缓存文件放在当前目录的 userData/cache文件夹下,需要新建这个文件夹
    $ cd bin
    $ mkdir userData
    $ mkdir userData/cache
    $ ./server ../conf/PI100.conf
        
  4. 向图像检索服务器发出检索请求
    $ ./client <path-to-img> [server-ip] [server-port]
        

Bug

Report bug szive(at)live.com

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.0%
  • Shell 2.2%
  • Perl 0.8%