【C++版本】SBIR系统(使用SHOG与GALIF特征描述符,BOF检索架构,线性检索方法)

本项目为基于手绘草图的图像检索系统(SBIR),移植自MathiasEitz的imdb_framework,采用GALIF及SHOG特征描述子,并利用BoF框架进行图像检索。项目包含从图像特征提取到检索全过程的模块。

原文我是放在github上的,总结不易,如果大家觉得我写得不错,就麻烦给个星吧~~

个人感觉,初入SBIR研究领域的人,可以好好研究下这里的代码,毕竟Mathias Eitz这位大牛给我们挖了这么大个坑,近10年的特征描述符和近5年的深度学习和近3年的细腻度检索,各种大牛都往里面跳。
原文地址:https://github.com/jjkislele/imdb_framework_msvs


imdb

基于手绘草图的草图检索系统

原作者:Mathias Eitz

在我上一个仓库imdb_framework里有对这个项目的英文说明,不过很迷的是,作者使用的IDE应该是Qt creator,本仓库则将项目代码拆解出来移植至MSVS,方便随后的实验。

欢迎图


说明

所有代码均fork自mathiaseitz’s imdb_framework,并在此基础上进行了修改,使之能够符合自己的实验要求。

本项目应出自学术论文"Sketch-Based Shape Retrieval" - SIGGRAPH 2012 与之前的 “Sketch-based image retrieval: benchmark and bag-of-features descriptors” - IEEE T VIS COMPUT GR 2011。前者是关于图形轮廓检索的,使用的特征是由作者Mathias Eitz等人提出的Gabor滤波改进算法GALIF,而后者是关于图像检索的,使用的特征是由作者Mathias Eitz等人提出的HOG改进算法SHOG(当然还有shape-contextshape-context的改进算法作为对比),并引入BoF检索框架(我是这么称呼的),降低了图像特征的复杂度,加快了图像匹配速度。这两篇文章的创新性(经典性),使得后续研究都承接着这两篇文章的思路。

上述两篇文章均是通过手绘草图进行检索,这就不得不提到基于手绘草图的图像检索(SBIR, Sketch-Based Image Retrieval)这个研究方向,我实际上写了篇关于SBIR的综述,日后发到博客上吧。


算法
  1. 图像特征
  • GALIF: Gabor local line-based feature

    记得有篇博文对GALIF特征进行了详细说明的,很可惜现在找不到了。

  • SHOG: Sketched feature lines in the Histogram of Oriented Gradients

    一种改进的HOG特征描述子,它在图像边缘处提取HOG特征,因此命名为SHOG

  1. 检索方式
  • BoF: Bag of Features

  • Linear search


项目依赖
  1. boost lib

  2. opencv 2.x

  3. Qt lib

本项目使用的是boost 1.65.1、opencv 2.4.13、Qt 5,IDE是MSVS 15 x64。各位可以参照./resource/sbir.props,在MSVS中配置的时候,也可以导入这个.props配置文件,这样就可以方便更改、复用相同配置了。


文件夹结构说明

前文提到,我是将原始项目拆解成了多个模块,此举方便修改原始代码,现将拆解的各模块所对应的文件夹结构说明如下,表格顺序即是程序处理顺序,执行顺序不可发生变化,并且顺带简单介绍模块功能,详细说明则请点击对应链接查看。

序号文件夹名功能说明链接
1generate_filelist生成图像绝对路径索引?
2compute_descriptors提取图像特征?
3compute_vocabulary特征聚类,产生视觉词汇?
4compute_histvw由视觉词汇产生视觉词汇表?
5compute_index生成TF-IDF权重?
6image_search图像检索?
7image_search_featureExtractedimage_search的修改版本,输入为检索序列特征?

写在后面

我仓库里还有SBIR研究领域的算法总结,各位看官老爷们可以瞅瞅 -------> ?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值