web-dev-qa-db-ja.com

サイズと応答は、SURFキーポイントで正確に何を表していますか?

キーポイントの検出と照合にOpenCV2.3を使用しています。しかし、私は検出アルゴリズムによって与えられたsizeおよびresponseパラメーターと少し混乱しています。それらは正確にはどういう意味ですか?

OpenCVのマニュアルに基づいて、私はそれを理解することができません:

float size:意味のあるキーポイント近傍の直径

float response:最も強力なキーポイントが選択された応答。さらなるソートまたはサブサンプリングに使用できます

追跡するのに最適なポイントは、応答が最も高いポイントだと思いましたが、そうではないようです。では、サーフディテクタから返されたキーポイントのセットをサブサンプリングして、追跡可能性の観点から最良のものだけを維持するにはどうすればよいでしょうか。

20
Tulkkas

サイズと応答

SURFはブロブ検出器です。つまり、フィーチャのサイズはブロブのサイズです。より正確には、OpenCVによって返されるサイズは、近似されたヘッセ演算子の半分の長さです。サイズはスケールとも呼ばれます。これは、ブロブ検出器の動作方法によるものです。つまり、最初にガウスフィルターを使用して複数のスケールで画像をぼかし、次に画像をダウンサンプリングして、最後に固定サイズのブロブを検出するのと機能的に同じです。 SURFフィーチャーのサイズを示す下の画像を参照してください。各フィーチャのサイズは、描画された円の半径です。フィーチャの中心から円周に向かう線は、角度または方向を示しています。この画像では、ブロブ検出フィルターの応答強度が色分けされています。検出された機能の大部分の応答が弱いことがわかります。 (フルサイズの画像を参照 ここ

SURF features

このヒストグラムは、上の画像の特徴の応答強度の分布を示しています。

histogram showing distribution of response strengths

追跡する機能は何ですか?

最も堅牢な機能トラッカーは、検出されたすべての機能を追跡します。機能が多いほど、堅牢性が高まります。しかし、計算時間を制限したいことが多いので、多数の特徴を追跡することは実用的ではありません。多くの場合、追跡する機能の数は、アプリケーションごとに経験的に調整する必要があります。多くの場合、画像は通常のサブ領域に分割され、それぞれでn個の最も強力な特徴が追跡されます。 nは通常、フレームごとに合計で約500〜1000個のフィーチャが検出されるように選択されます。

参考文献

SURFを説明するジャーナルペーパー を読むと、それがどのように機能するかを確実に理解できます。特に背景がマシン/コンピュータービジョンや画像処理にない場合は、細部にとらわれないようにしてください。 SURF検出器は一見非常に斬新に見えるかもしれませんが、全体的なアイデアは、積分画像(SURFよりずっと前に他の方法で使用されていた)を使用してヘッセ演算子(十分に確立されたフィルター)を推定することです。 SURFをよく理解したいが、画像処理に慣れていない場合は、戻って紹介資料を読む必要があります。最近、私は 新しくて無料の本 に出くわしました。その第13章には、機能検出についての簡潔でわかりやすい紹介があります。そこに書かれていることすべてが技術的に正しいわけではありませんが、それは良い出発点です。 ここ 各ステップがどのように機能するかを示すいくつかの画像を含むSURFの別の良い説明を見つけることができます。そのページに次の画像が表示されます。

SURF blobs

白と黒のブロブを見ることができます。これらは、SURFがいくつかのスケールで検出し、それらのサイズ(OpenCVコードの半径)を推定するブロブです。

60
fireant
  1. 「サイズ」は、元の画像の記述子でカバーされる領域のサイズです(元の画像をスケール空間でダウンサンプリングすることによって取得されるため、スケールに基づいてキーポイントごとに異なります)。

  2. 「応答」は確かに、ポイントが「どれだけ良い」か(大まかに言えば、コーナーネスの観点から)の指標です。

  3. 静的シーン検索の良い点は安定しています(これがSIFT/SURF記述子の主な目的です)。トラッキングの場合、トラッキングされたオブジェクトが整形式の背景にあり、半分が影になっているために良い点が表示され、この状態が変化したために消えます(光の変化、オクルージョンなど)。したがって、タスクを追跡することは、良い点が常にそこにあるという保証はありません。

5
sansuiso