2011-09-12 8 views
1

私は、以下のように動作する類似性に基づいてC++/Qt画像検索システムに取り組んでいます(無関係なトピック):整数リスト文書で全文検索を行うための最良のアプローチ

私はOpenCV関数を使用して画像のコレクションを取り出し、そこからインデックスを作成します。その後、各画像に対して、各画像が属する重要な「クラス」を表す整数値のリストを取得します。 2つの画像が共通する整数が多いほど、類似していると考えられます。 システムを照会するときは、照会イメージを表す整数のリストを計算し、全文検索(またはそれに類似したもの)を実行して、最も類似したX個のイメージを検索するだけです。

私の質問は、このような検索のための最良の方法は何ですか? Lucene、Lemur、および他の索引付け方法について聞いたことがありますが、ドメインが縮小されている場合(単語の代わりに整数のみ)、このような全文検索が最良の方法であるかどうかはわかりません。 私は、効率、精度、C++の使いやすさの点で代替案について知りたいと思います。

ありがとうございます!

+0

データベースの仕事のような匂いがします。 –

答えて

0

あなたにはvectorspace modelがあるように聞こえるので、Luceneまたは類似の製品がうまくいく可能性があります。場合一般的には、逆インデックスモデルが良いでしょう:

  1. あなたは、事前にクラスの数を知らない
  2. 画像の数に対するクラスがたくさんあります

問題がこれらの基準に合わない場合は、Thomasが提案したように、通常のリレーショナルDBがうまくいくかもしれません。 #1ではなく#2を満たす場合は、「列指向」の非リレーショナルデータベースの1つを調べることができます。私はこれらがどれほどうまくいくかを伝えるのに十分なものではありませんが、私の直感はIRツールキットの多くの機能を自分で複製する必要があるということです。

LuceneはJavaで書かれており、私はC++ポートを知りません。 SolrはLuceneをWebサービスとして公開していますので、どの言語からでもその方法でアクセスできます。

私はLemurについてよく分かりませんが、類似のベクトル空間モデルがあり、C++で書かれているので、使いやすくなるかもしれません。あなたがここで画像検索(リラ)のためのLuceneを見てみることができます

+0

私はあなたのポイントに基づいて詳細にドメインを勉強します。私は最近、LuceneのC++ポートであるCLuceneについて聞いたので、多分私も試してみましょう。 答えをありがとう! –

0

:私が間違ってる場合http://www.semanticmetadata.net/2006/05/19/lire-lucene-image-retrieval-04-released/

、あなたは言葉の画像検索の典型的なバッグを実装しようとしている私が修正していますか?そうであれば、逆ファイルインデックスを作成しようとしている可能性があります。 Lucene自体は適切ではありません。数値の代わりにテキストを索引付けすることで既に実現していると思います。インデックスを照会するためにそのクラスを使用することは、照会ベクトルに「パース」する(すなわち、キーポイントを検出し、記述子を抽出し、ベクトル量子化する)ようには設計されていないので、問題となる。一方、LIREは、特徴ベクトルにインデックスを付けるように修正されている。しかし、それは単語モデルのバッグのためのボックスの外で動作するようには表示されません。また、私は著者のウェブサイトで、逆ファイルインデックスではなくブルートフォースマッチングを使用してイメージを取得していると読んだと思いますが、Lucene自身よりも簡単に拡張できると期待しています。

これが役に立ちます。

関連する問題