1

SIFT の VLFEAT 実装を使用して、クエリとデータベース イメージの 2 つのイメージ セットで SIFT 記述子を計算しています。一連のクエリが与えられた場合、vl_ubcmatch を使用して、ディスクリプタの大きなデータベースから最も近いディスクリプタを取得したいと考えています。

vl_ubcmatch 構文をMATCHES = vl_ubcmatch(DESCR1, DESCR2)使用すると、クエリ記述子を最初に入力し、データベース記述子を 2 番目のパラメーターとして入力した場合、またはその逆の場合に異なる結果が得られます。

正しい構文はどれですか?

1)MATCHES = vl_ubcmatch(QUERY_DESCR,DATABASE_DESCR)

また

2)MATCHES = vl_ubcmatch(DATABASE_DESCR,QUERY_DESCR)

4

2 に答える 2

1

クエリ記述子を最初に入力し、データベース記述子を 2 番目のパラメーターとして入力した場合、またはその逆の場合は、異なる結果が得られます。

これは、このメソッドが比率テスト[1] アルゴリズムを舞台裏で使用するためです。つまり、最近傍の距離を 2 番目に近い近傍の距離と比較します

vl_feat 実装では、デフォルトで次のしきい値が使用されます1.5

if(thresh * (float) best < (float) second_best) {
  /* accept the match */
}

この比率テストは対称的ではありません。そのため、入力を交換すると、一致セット間の差が得られる可能性があります。

慣れていない場合は、OpenCV ライブラリを使用したコンピューター ビジョン プログラミングの 第 9 章を参照してください。この章では、マッチングを対称化する実用的な方法を次のように提案しています。

これらの[一致する]セットから、両方のセットと一致する一致を抽出します。これは、一致するペアが受け入れられるためには、両方のポイントが他方のポイントと最も一致する特徴である必要があることを課す、対称的なマッチング スキームです。

[1] D. Lowe の論文の7.1 Keypoint Matchingを参照してください。

于 2013-06-25T22:14:35.340 に答える