2011-08-26 31 views
8

私は画像のデータベースを持っています。私が新しい写真を撮るとき、私はそれをこのデータベースの画像と比較し、類似点(OpenCVを使用)を受け取りたいと思います。このようにして、もし私が画像を持っていれば、新しい画像に非常によく似ています。OpenCV:指紋画像とデータベースとの比較

私のデータベースイメージのフィンガープリント/ハッシュを作成し、それに新しいイメージをマッチさせることは可能ですか?

私は、Alogrithmのコードスニペットや技術的なデモを探していますが、商用のソリューションではありません。

ベスト、

ステファン

+2

通常、この種のことは、画像から特徴ベクトルを抽出し、特徴ベクトルに対して何らかの種類のテンプレートマッチングを行うことによって行われる。 –

+0

類似した/関連する/重複した質問があります:[OpenCV/SURFディスクリプタからイメージハッシュ/フィンガープリント/シグネチャを生成する方法は?](http://stackoverflow.com/questions/7205489/opencv-fingerprint-imageデータベースとの比較)、[Near-Duplicate Image Detection](http://stackoverflow.com/questions/1034900/near-duplicate-image-detection/)、[多くの画像の類似性を比較する画像指紋] (http://stackoverflow.com/questions/596262/image-fingerprint-to-compare-similarity-of-many-images)、... – Albert

答えて

10

Pual Rはコメントしているように、この「指紋/ハッシュ」とは、通常、特徴ベクトルの集合や特徴記述子のセットです。しかし、コンピュータビジョンで使用される特徴ベクトルの大部分は、通常、データベースに対して検索するには計算コストがかかりすぎる。したがって、このタスクでは、SURFやSIFTなどの記述子がさまざまな最適化を行っても検索に時間がかかりすぎるため、特殊な種類の機能記述子が必要です。

OpenCVがあなたのタスク(オブジェクトの分類)に持つ唯一のことは、視覚的単語(BOW)のBagの実装です。

特殊な種類の画像機能を計算し、視覚的な語彙を訓練することができます。次に、この語彙を使用してデータベース内の類似の画像を検索し、類似性スコアを計算することができます。

Here is OpenCVの語句のドキュメント。また、OpenCVにはbagofwords_classification.cppという名前のサンプルがあります。それは本当に大きいですが、役に立つかもしれません。

+1

Andrey、あなたはこれをしますか: "これは、あなたのデータベースに類似の画像を見つけて類似性スコアを計算するために、この語彙を使用することができます。 ありがとう – lilouch

2

コンテンツベースの画像検索システムがまだアクティブな研究分野です:http://citeseerx.ist.psu.edu/search?q=content-based+image+retrieval

まず、あなたの状況に似て構成するもの、明確にする必要があります:

  1. 同様の色の分布を:のようなものを使用しますイメージの細分化のためにcolor descriptorsを使用すると、かなり満足のいく結果が得られるはずです。
  2. 類似のオブジェクト:オブジェクトが何であるかわからないので、オブジェクトに関する広範なドメイン知識(またはオブジェクトクラスの数が少ない)を除いて、あまり遠くまで到達することはありません。研究の現状についての概要は、hereresults)、すぐにhereとなります。

あなたが説明した問題に対して「すべてのニーズを満たす」アルゴリズムはありません。問題の詳細を分かち合うほど、より良い回答が得られます。いくつかの代表的な画像を投稿し(可能な場合)、また望ましい結果を記述することも非常に役に立ちます。

computer-vision.stackexchange.comが既に存在する場合は、これは良い質問です。

0

あなたは、このコードを使用して、データベースにpHashアルゴリズムや店舗phash値を使用することができます。

double const mismatch = algo->compare(image1Hash, image2Hash); 

ここで「不一致」値はイースリーあなたに2つの画像間の類似度比を伝えることができます。

pHash機能:

  1. AverageHash
  2. PHASH
  3. MarrHildrethHash
  4. RadialVarianceHash
  5. BlockMeanHash
  6. BlockMeanHash
  7. ColorMomentHash

これらの機能は、あらゆる側面で画像の類似性を評価するのに十分です。

関連する問題