1

SIFT 特徴マッチングは、ユークリッド距離ベースの最近傍法によって行われます。これを説明してもらえますか?計算はありますか?誰かが私のSIFT特徴ベクトルのユークリッド距離を計算するのを手伝ってくれますか? 計算されたユークリッド距離を保存して、画像の丸みや色などの機能を備えたニューラル ネットワークにフィードしたいと考えています。

4

2 に答える 2

10

ユークリッド距離による SIFT 特徴マッチングは、難しい作業ではありません。このプロセスは次のように説明できます。

  1. 両方のイメージの SIFT キーポイント記述子を抽出します。

  2. 1 つの画像から 1 つのキーポイント記述子 (参照記述子) を取得します。

    2.1 次に、参照記述子と他の画像のすべてのキーポイント記述子の間のユークリッド距離を見つけます。

    2.2 したがって、参照記述子から image2 のすべてのキーポイント記述子までのユークリッド距離があります。それらを昇順に並べ替えます。(image1 のキーポイントから image2 のキーポイントまでの最も近い距離を意味します)

    2.3 ここで、しきい値 T を設定します (ほとんどの場合、0.3 から 0.7 の範囲)。

    2.4 最初に最も近い距離と 2 番目に近い距離の比率を取り、それがしきい値 T を下回っている場合、それは一致しているため、そのインデックスを保存します。それ以外の場合、一致はありません。

  3. image1 のすべてのキーポイント記述子に対してこれを繰り返します。

  4. これでマッチができました。2 つのイメージを追加し、キーポイントの位置に基づいて一致をプロットできます。
于 2011-10-20T04:02:18.833 に答える
1

あなたの疑問は、ユークリッド距離とは何かだと思います。ユークリッド距離は、ユークリッド (または 2 次元) 平面で見た 2 点間の距離です。2 次元平面の場合は非常に視覚的ですが、SIFT 記述子は 128 次元のベクトルであるため、注意が必要です。公式に固執するだけです(https://en.wikipedia.org/wiki/Euclidean_distance

これは、ユークリッド距離を計算するための私のコードです:

  for j = 1 : length(SIFT2)

        euclideanDist(j) = sqrt(sum((SIFT1{i} - SIFT2{j}).^2));

  end

このコードは、最初の画像の点「i」から 2 番目の画像 (この場合は「j」) で検出されたすべての点までの距離を見つけます。この距離をベクトル euclideanDist に保存します。

セル配列 SIFT1 および SIFT2 には、各イメージの記述子が含まれています。

于 2017-06-14T02:33:55.760 に答える