2016-08-30 15 views
0

OpenCVには、KNNやBruteForceなどの多くのマッチャーが組み込まれています。私は、2つの機能の間の "コスト"を計算し、自分自身をマッチングさせることができる何らかの関数がどこかに存在するかどうかを知りたいと思います。基本的には、私は2つのcv :: Keypointオブジェクトを持っており、それぞれに128のベクトルがあります。理想的には、それらを取り込んで単一のスコア出力を提供する機能があれば、あるいはおそらく他の発見的方法があれば可能でしょう。OpenCV SURF:2つの機能間のコスト関数ですか?

+0

SURFの場合、KNNとBruteFoceの両方が距離関数としてユークリッド距離(L2距離)を使用します。 – cxyzs7

答えて

1

SIFTおよびSURF記述子は両方ともヒストグラムです。ヒストグラム距離メトリックのいずれかを使用して、記述子の各ペア間の類似度/相違度スコアを調べることができます。

ユークリッド距離とヘリンガー距離は、この目的のために最も有名な手段です。しかし、距離尺度を使用する場合は、その関数にメトリック機能があることを確認する必要があります。メトリック機能に精通していない場合は、Wikipediaがそれを非常にうまく説明しました:Metric Definition

OpenCVは、Bhattacharyya distanceを含む最も一般的なメトリック関数のいくつかを実装しています。

+0

さて、私は比較のためにどのようなスケールですか?私がL2 Normを使うと、どんな距離になっていますか?どのようにその良い/最小限を知っていますか? – raaj

+0

ほとんどの場合、ポイントを受け入れるか拒否するためにRANSACを使用します。 (1)3つのマッチ(3つのペア)を取る、(2)それらの間の変換を見つける、(3)TマトリックスでOKであるマッチの数を最大公差で数える、4 )(3)の結果に関して、より良いTがなくなるまでそれを繰り返す。 => Tはあなたが望むものです! – Hossein

+0

RANSACのない単純な例:http://docs.opencv.org/2.4/doc/tutorials/features2d/feature_homography/feature_homography.html – Hossein

関連する問題