LIRE源代码分析 1:基本接口DocumentBuilder和ImageSearcher
2016-10-17 14:59
190 查看
Lucene是一个开源的强大的索引工具,但是它仅限于文本索引。基于内容的图像检索(content- based image retrieval,CBIR)要求我们利用图像的一些基本特征(如颜色纹理形状以及sift,surf等等)搜索相似的图片,LIRE(Lucene Image Retrieval)是一款基于lucene的图像特征索引工具,它能帮助我们方便的对图像特征建立索引和搜索,从而实现搜索相似的图像。
![](http://img.blog.csdn.net/20170109094304278?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRGF2ZUJvYm8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
LIRE开发相关的资源准备:
LIRE官网: http://www.semanticmetadata.net/lire/
包和源码: http://code.google.com/p/lire/
基本使用示例: http://www.semanticmetadata.net/wiki/doku.php?id=start
API: http://www.itec.uni-klu.ac.at/lire/nightly/api/index.html 由于需要做一款Android端的图片检索系统,在此对LIRE的整体结构和基本接口的源码进行研究。这里我们需要加入LIRE的源码,参考:http://jingyan.baidu.com/article/454316ab596470f7a7c03aab.html 新建一个java工程将lire.jar、其他jar包以及jire.jar的源文件导入工程。
我使用的IDE是MyEclipse 10
![](http://img.blog.csdn.net/20161017155140426)
从项目的目录结构可以看出所有的包的前缀都是“net.semanticmetadata.lire”,net.semanticmetadata.lire这个目录下主要是接口的定义可以分为2类,
DocumentBuilder:用于生成索引
ImageSearcher:用于检索
其实lire的基本接口主要完成两项工作,生成索引和进行检索。生成索引就是根据图片提取特征向量,然后存储特征向量到索引的过程。检索就是根据输入图片的特征向量到索引中查找相似图片的过程。
先来看看DocumentBuilder的相关类定义
DocumentBuilder:接口,定义了基本的方法。
AbstractDocumentBuilder:抽象类,实现了DocumentBuilder接口。
DocumentBuilderFactory:用于创建DocumentBuilder的工厂类。
DocumentBuilder相关的类的继承关系如下图所示。可见,各种算法类都继承了AbstractDocumentBuilder,而AbstractDocumentBuilder实现了DocumentBuilder。
![](http://img.blog.csdn.net/20161017160725243)
再来看看与ImageSearcher相关的类的定义:
ImageSearcher:接口,定义了基本的方法。
AbstractImageSearcher:抽象类,实现了ImageSearcher接口。
ImageSearcherFactory:用于创建ImageSearcher的工厂类。
ImageSearcher相关的类的继承关系如下图所示。可见,各种算法类都继承了AbstractImageSearcher,而AbstractImageSearcher实现了ImageSearcher接口。
![](http://img.blog.csdn.net/20161017161305327)
此外还有一个结构体:
ImageSearchHits:用于存储搜索的结果。
“lire.imageanalysis”里面存储的是lire支持的方法的实现类。每个类以其实现的方法命名。
![](http://img.blog.csdn.net/20161017153734358)
这些方法的算法有的位于“lire.imageanalysis”的子包中。
比如CEDD算法的实现类位于“lire.imageanalysis.cedd”中;
ColorLayout算法的实现类位于“lire.imageanalysis.mpeg7”中。
“lire.impl”里面存储的是lire支持的方法的DocumentBuilder和ImageSearcher。命名规则是***DocumentBuilder或者***ImageSearcher(***代表方法名称)
LIRE开发相关的资源准备:
LIRE官网: http://www.semanticmetadata.net/lire/
包和源码: http://code.google.com/p/lire/
基本使用示例: http://www.semanticmetadata.net/wiki/doku.php?id=start
API: http://www.itec.uni-klu.ac.at/lire/nightly/api/index.html 由于需要做一款Android端的图片检索系统,在此对LIRE的整体结构和基本接口的源码进行研究。这里我们需要加入LIRE的源码,参考:http://jingyan.baidu.com/article/454316ab596470f7a7c03aab.html 新建一个java工程将lire.jar、其他jar包以及jire.jar的源文件导入工程。
我使用的IDE是MyEclipse 10
从项目的目录结构可以看出所有的包的前缀都是“net.semanticmetadata.lire”,net.semanticmetadata.lire这个目录下主要是接口的定义可以分为2类,
DocumentBuilder:用于生成索引
ImageSearcher:用于检索
其实lire的基本接口主要完成两项工作,生成索引和进行检索。生成索引就是根据图片提取特征向量,然后存储特征向量到索引的过程。检索就是根据输入图片的特征向量到索引中查找相似图片的过程。
先来看看DocumentBuilder的相关类定义
DocumentBuilder:接口,定义了基本的方法。
AbstractDocumentBuilder:抽象类,实现了DocumentBuilder接口。
DocumentBuilderFactory:用于创建DocumentBuilder的工厂类。
DocumentBuilder相关的类的继承关系如下图所示。可见,各种算法类都继承了AbstractDocumentBuilder,而AbstractDocumentBuilder实现了DocumentBuilder。
再来看看与ImageSearcher相关的类的定义:
ImageSearcher:接口,定义了基本的方法。
AbstractImageSearcher:抽象类,实现了ImageSearcher接口。
ImageSearcherFactory:用于创建ImageSearcher的工厂类。
ImageSearcher相关的类的继承关系如下图所示。可见,各种算法类都继承了AbstractImageSearcher,而AbstractImageSearcher实现了ImageSearcher接口。
此外还有一个结构体:
ImageSearchHits:用于存储搜索的结果。
“lire.imageanalysis”里面存储的是lire支持的方法的实现类。每个类以其实现的方法命名。
这些方法的算法有的位于“lire.imageanalysis”的子包中。
比如CEDD算法的实现类位于“lire.imageanalysis.cedd”中;
ColorLayout算法的实现类位于“lire.imageanalysis.mpeg7”中。
“lire.impl”里面存储的是lire支持的方法的DocumentBuilder和ImageSearcher。命名规则是***DocumentBuilder或者***ImageSearcher(***代表方法名称)
相关文章推荐
- LIRe 源代码分析 2:基本接口(DocumentBuilder)
- LIRe 源代码分析 2:基本接口(DocumentBuilder)
- LIRe 源代码分析 2:基本接口(DocumentBuilder)
- LIRe 源代码分析 2:基本接口(DocumentBuilder)
- LIRe 源代码分析 2:基本接口(DocumentBuilder)
- LIRe 源代码分析 3:基本接口(ImageSearcher)
- LIRe 源代码分析 3:基本接口(ImageSearcher)
- LIRe 源代码分析 3:基本接口(ImageSearcher)
- LIRe 源代码分析 3:基本接口(ImageSearcher)
- LIRe 源代码分析 3:基本接口(ImageSearcher)
- LIRe 源代码分析 4:建立索引(DocumentBuilder)[以颜色布局为例]
- powerbuilder decomplier 完成基本分析和编程(图8张)
- 集合框架_用户登录注册案例详细分析和分包的实现、用户基本描述类和用户操作接口的实现、用户操作类的具体实现、用户测试类的实现、加入猜数字小游戏
- LIRe 源代码分析 4:建立索引(DocumentBuilder)[以颜色布局为例]
- LIRe 源代码分析 4:建立索引(DocumentBuilder)[以颜色布局为例]
- LIRe 源代码分析 4:建立索引(DocumentBuilder)[以颜色布局为例]
- Java集合框架的知识总结(1) 说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。 1、综述 所有集合类
- 孤独的个人在社会中生存应掌握的基本健康技能(个人分析)
- 启航独家资料-考研英语长难句基本句型分析
- 基本分析