3

2 つの類似した画像内の特定のキーポイント間の一致を見つけるための最近傍アルゴリズムの実装に出会いました。キーポイントは、SIFT アルゴリズムによって生成されました。ポイントは 128 次元のベクトルで記述され、両方の画像にそのようなポイントが多数あります。

マッチング アルゴリズムは最近傍検索を使用し、1 つのイメージ内の各ポイントに対して、もう 1 つのイメージ内の対応する最も近いポイントを計算します。「近さ」は、ポイントのベクトル間の最小ユークリッド距離によって表されます。そのような最良の一致は、距離が特定のしきい値を下回るポイントのペアのみを取得することによって選択されます。

しかし、私が遭遇した実装では、一方の画像のキーポイントのすべてのベクトルをもう一方の画像のベクトルと乗算し、積の行列を形成します。次に、積が所定のしきい値よりも高い点を見つけます。

この実装は正しい結果をもたらしますが、それがどのように機能するか知りたいです。ベクトル間の相関をメトリックとして使用しますか、それともここで何か他のことが起こっていますか?

4

1 に答える 1

2

結局、内積が違うとか内積の問題でもないようです。簡単な計算の問題であることがわかります。

基本的...

abs(a + b) = C と仮定します。ここで、C は何らかの定数です。a * b の可能な最大値は、常に a == b == +- C / 2 の結果になります。したがって、a と b の間の距離は、積が最大のときに最小になり、その逆も同様です。これはすべての実数 (正と負の両方) で機能し、複数の次元にも拡張されるため、おそらく複素数でも機能します (私はそのようなものでテストしていませんが)。

C = 20 の例:

((a, b)、距離、積)

((0, 20), 20.0, 0)
((1, 19), 18.0, 19)
((2, 18), 16.0, 36)
((3, 17), 14.0, 51)
((4, 16) , 12.0, 64)
((5, 15), 10.0, 75)
((6, 14), 8.0, 84)
((7, 13), 6.0, 91)
((8, 12), 4.0, 96)
( (9, 11), 2.0, 99)
((10, 10), 0.0, 100) (ご覧のとおり、積が最大で距離が最小です。)
((11, 9), 2.0, 99)
( (12, 8), 4.0, 96)
((13, 7), 6.0, 91)
((14, 6), 8.0, 84)
((15, 5), 10.0, 75)
((16, 4), 12.0, 64)
((17, 3), 14.0, 51)
((18, 2), 16.0, 36)
((19, 1), 18.0, 19)
((20, 0), 20.0, 0)

于 2010-06-30T16:30:56.967 に答える