使用Lire索引并搜索图片

最近想做一个图片检索的程序,期望实现的功能包括图片信息的记录、重复图片的查找、相似图片的查找等,于是找到了Lire库,一个用于图像搜索的Lucene扩展包。

示例代码见:Lire图片搜索示例以下内容译自:Lire - Lucene Image REtrieval

Lire - Lucene Image REtrieval

Lire(全名:Lucene图像检索),是一种简单的用于创建图片的Lucene索引并实现基于内容的图片检索库。Lire实现的特色包括:

  • ScalableColor、ColorLayout和EdgeHistogram。(MPEG-7标准,多媒体内容描述接口中的描述工具,工具释义参见:http://t.cn/zWyIGQw

  • CEDD和FCTH

  • 颜色柱状图(HSV和RGB),Tamura & Gabor,自动色彩图, JPEG系数柱图(通用全局描述符)

  • SIFT和SURF中的视觉关键词

此外,还提供了基于Lucene的用于从索引中检索的方法。

Lire是从Caliph & Emir项目中的一部分发展而来的,它包含的基于内容的图片检索(CBIR)特征旨在为Caliph & Emir对其它Java项目提供一种简单和轻量的使用方式。

同时,它也发展成为一个大的很有意思的项目。

Lire 是如何工作的?

Lire使用全局的图像特点来进行基于内容的图像检索。你应该去查阅关于CBIR的基础文献以了解更多底层的方法和技术:

关于使用到的底层Lucene(Java搜索引擎)技术:

  • 线性搜索(从每一个索引文件中匹配查询关键词)

  • 粗略索引(基于G. Amato的文件倒排图像检索技术

------------------------------------------------------------------------------

Lire官网:http://t.cn/aK1y4zAPI:http://t.cn/zWyIbOC

代码示例中的方法均采自Lire开发Wiki页,并稍作修改。使用该方法,可以完成基本的图像识别功能,但是更加精确的搜索结果可能需要其他参数设置。

亦可使用Luke查看Lire生成的索引,可识别文件名(descriptorImageIdentifier)等,如使用CEDD文本生成器会显示CEDD信息(featureCEDD)。

PS:

我在使用lire做大批量的图片索引时遇到一系列的问题,记录如下:

1.java.lang.StackOverflowError

http://blog.csdn.net/zhuam/article/details/1222121

原因是代码中一个变量写错导致无限递归,从而造成栈溢出错误。

2.java.lang.IllegalArgumentException: Empty region!

原因是“ImageIO不支持ico格式图像读写“,索引的文件夹中包含ico格式的图标文件,而lire使用的ImageIO不支持对ico格式图片数据的处理。

参考:ico图片转换ImageIO读取图像时报的两种错误

3.java.lang.OutOfMemoryError: Java heap space

参考:http://floger.iteye.com/blog/758031

文件夹过大导致JVM堆空间不够了。由于我使用的是eclipse,打开Run - Open Run Dialog...,定位到当前的运行实例,进入选项Arguments下的VM arguments

在其中输入-Xms128M -Xmx512M再次运行即可。

转载于:https://my.oschina.net/cwalet/blog/55502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值