13

これは非常に専門的な質問だと思います..しかし、ここに行きます。SIFT の実装を使用して、2 つの画像の一致を見つけています。私が持っている現在の実装では、画像を 90 度または 180 度のバージョンと一致させると、一貫して約半分のピクセルだけずれている一致が得られますが、範囲内で変化します。したがって、たとえば、im1 のピクセル座標 (x,y) で一致が見つかった場合、90 度回転した画像 im2 の対応する一致は (x,y + 0.5) になります。180 度の画像を使用すると、オフセットは x 座標と y 座標の両方に表示され、270 度 (-90) 回転した画像を使用すると x 座標にのみ表示されます。

1) まず第一に、SIFT が回転した画像で同じ一致する場所を提供するはずだと仮定しています。暗黙の仮定は、回転によって画像のピクセル値が変更されないということです。これは正しいことを確認しました。(私は IRFAN ビューを使用して回転し、.pgm として保存しますが、ピクセル値は変更されません)。

2) このオフセットを与えない他の実装があります。

3) このオフセットはプログラミング関連であり、おそらくスケール空間のキーポイント座標から画像空間のキーポイント座標への変換に関係していると思います。

誰かがこの問題に遭遇したか、スケール空間から画像空間に変換する方法についてのリファレンスを教えてくれることを願っています。

4

2 に答える 2

4

Mikola の主張に反して、SIFT からスケールと向きを取得することは可能です。SIFT は、最大の DOG 極値 ( s ) を持つスケールを見つけようとし、支配的な方向 ( r ) も見つけます。SIFT 特徴の各位置ベクトルは(x, y, s, r) を返します

スケール スペースがどのようにピクセルに変換されるかを確認するには、VLFeat の実装を試してください。特に、vl_plotsiftdescriptor を使用して記述子をプロットします。この実装でsがピクセルに対してどのようにスケーリングするかを確認できます。他の実装を理解するには、両方の実装で同じ機能を見つけ、スケール ファクターsがどのように異なるかを確認します。

于 2011-06-16T16:24:52.773 に答える
2

最初に一般的なコメント:

SIFT は、ピクセル座標の x、y 位置を持つ機能を提供するだけです。設計上、特定の機能のスケールや回転について直接的には何も伝えません。実際、これらのタイプの変換の下で機能ベクトルが不変であることは、SIFT の特徴を定義するものです (つまり、これが SIFT が機能する理由です)。 ~~ (編集:これは間違っています。これを書いたときに考えていたのは何ですか?)

0.5 ピクセルのオフセットは重要ではなく、この違いについてはさまざまな説明が考えられます。1 つの可能性は、2 つの実装が異なる原点座標を使用することです。たとえば、一方は原点を中央に配置し、もう一方は隅に配置します。これは丸めに影響を与える可能性があり、報告されたピクセル位置で 0.5 の差が生じる可能性があります。もう 1 つの可能性は、使用されるローテーション サンプルの数が異なることです。またはおそらく考慮されるスケールの数について。これらのパラメーターのいずれかを変更すると、観測された特徴に数ピクセルほど影響を与える可能性があります。もちろん、決定的なことを言うには実際に実装を確認する必要があるため、これはすべて純粋な憶測です。

より具体的な懸念に対処するには:

  1. これは悪い仮定です。直線的にサンプリングされた画像は、一般に回転下で不変ではありません。SIFT 実装が 4 の倍数ではない数の回転をサンプリングする場合、90 度の倍数で回転しても問題が発生する可能性があります。ただし、十分なサンプルがあれば、正しい結果に近づくことが期待できますが正確になることはほとんどありません。 (一部の非常に特殊な退化状況を除く)。

  2. 彼らが正しいオフセットを与えていることをどのように知っていますか? それらはすべて、同じコード ベースのクローンまたは移植である可能性があり、同様のバグが含まれている可能性があります。

  3. SIFT は、実装間で異なる可能性がある多くの内部調整要素に依存しているため、なぜ同じであると期待するのかわかりません。

最後に、「スケール空間からイメージ空間に変換する」という意味がわかりません。スケール空間は、ポイントではなくイメージに対して定義され、スケール空間とイメージ空間の座標間に 1:1 のマッピングはありません。スケール スペース イメージを通常のイメージに変換するだけの場合は、0 スケールのスライスを取得します。画像をスケール空間表現に変換したい場合は、さまざまな半径のガウス分布で畳み込みます。

于 2011-06-13T19:36:43.277 に答える