LIRE(Lucene Image REtrieval)提供一種的簡單方式來建立基於圖像特性的Lucene索引。利用該索引就可以構建一個基於內容的圖像檢索(content- based image retrieval,CBIR)系統,來搜索類似的圖像。LIRE使用的特性都取自MPEG-7標準: ScalableColor、ColorLayout、EdgeHistogram。 java
搜索類似圖片的方法ui
使用 ImageSearcherFactory 建立 ImageSearcher。例如ImageSearcherFactory.createDefaultSearcher()。spa
ImageSearcher 能夠經過 InputStream 或 BufferedImage,或者一個描述圖像的Lucene的 Document 進行檢索。 例如使用search(BufferedImage, IndexReader) 或者search(Document, IndexReader).code
返回的結果是一個 ImageSearchHits 相似於Lucene 中的Hits。索引
/** * Simple image retrieval with Lire * @author Mathias Lux, mathias <at> juggle <dot> at */ public class Searcher { public static void main(String[] args) throws IOException { // Checking if arg[0] is there and if it is an image. BufferedImage img = null; boolean passed = false; if (args.length > 0) { File f = new File(args[0]); if (f.exists()) { try { img = ImageIO.read(f); passed = true; } catch (IOException e) { e.printStackTrace(); } } } if (!passed) { System.out.println("No image given as first argument."); System.out.println("Run \"Searcher <query image>\" to search for <query image>."); System.exit(1); } IndexReader ir = DirectoryReader.open(FSDirectory.open(new File("index"))); ImageSearcher searcher = ImageSearcherFactory.createCEDDImageSearcher(10); ImageSearchHits hits = searcher.search(img, ir); for (int i = 0; i < hits.length(); i++) { String fileName = hits.doc(i).getValues(DocumentBuilder.FIELD_NAME_IDENTIFIER)[0]; System.out.println(hits.score(i) + ": \t" + fileName); } } }