2011-09-12 53 views
1

我正在研究基於相似性的C++/Qt圖像檢索系統,其工作原理如下(我將盡量避免不相關或偏離主題的詳細信息):使用整數列表進行全文搜索的最佳方法文檔

我使用OpenCV函數從圖像中獲取圖像並構建索引。之後,對於每幅圖像,我都會得到一個表示每個圖像所屬的重要「類」的整數值列表。兩個圖像共有的整數越多,它們被認爲越相似。 因此,當我想查詢系統時,我只需計算表示查詢圖像的整數列表,執行全文搜索(或類似)並檢索X最相似的圖像。

我的問題是,什麼是最好的方法permorm這樣的搜索? 我聽說過Lucene,Lemur和其他索引方法,但我不知道這種全文搜索是否是最好的方法,因爲域被縮小了(只有整數而不是單詞)。 我想知道關於效率,準確性或C++友善方面的替代方案。

謝謝!

+0

聞起來像一個數據庫的工作。 –

回答

0

這聽起來像你有一個vectorspace model,所以Lucene或類似的產品可能適合你。在一般情況下,倒指數模型將是很好的,如果:

  1. 你不知道事先班數
  2. 有相對於圖像的數量大量類

如果你的問題不符合這些標準,正如Thomas建議的那樣,正常的關係數據庫可能會更好地工作。如果它符合#1但不符合#2,則可以調查其中一個「列嚮導」非關係數據庫。我不太瞭解這些情況,告訴你他們工作的效果如何,但我的直覺是你需要自己在IR工具包中複製很多功能。

Lucene是用Java編寫的,我不知道任何C++端口。 Solr將Lucene公開爲Web服務,因此很容易從您選擇的任何語言訪問它。

我對狐猴並不瞭解,但看起來它有一個類似的向量空間模型,並且它是用C++編寫的,因此可能更容易使用。

+0

我要根據你的觀點詳細研究域名。我最近聽說過關於Lucene的C++端口CLucene,所以也許我會試一試。 感謝您的回答! –

0

你可以看看Lucene的圖像檢索(里拉)位置:http://www.semanticmetadata.net/2006/05/19/lire-lucene-image-retrieval-04-released/

如果我錯了,你想實現的話圖像檢索的一個典型的包我是正確的?如果是這樣,你可能試圖建立一個倒排文件索引。 Lucene本身並不適合,因爲你可能已經意識到它索引文本而不是數字。使用它的類來查詢索引也會成爲一個問題,因爲它不是用來解析(即檢測關鍵點,提取描述符,然後將它們矢量量化)圖像到查詢向量中。

LIRE另一方面已被修改爲索引特徵向量。然而,它似乎並沒有爲包裝袋的文字模型開箱即用。另外,我認爲我已經在作者的網站上看到,它目前使用蠻力匹配而不是倒排文件索引來檢索圖像,但我預計它會比Lucene本身更容易擴展。

希望這會有所幫助。

相關問題