OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
FLANNによる特徴マッチング

前のチュートリアル: 特徴記述
次のチュートリアル: Features2D + ホモグラフィによる既知物体の検出

原著者Ana Huamán
互換性OpenCV >= 3.0

目的

このチュートリアルでは、以下の方法を学ぶ:

警告
SURF特徴を使用するには OpenCV contribモジュール が必要である(代替としてORB、KAZEなどの特徴がある)。

理論

古典的な特徴記述子(SIFT, SURF, ...)は通常、ユークリッド距離(またはL2ノルム)を用いて比較・マッチングされる。SIFTやSURFの記述子は近傍における勾配方向(SURFの場合はHaarウェーブレット応答)のヒストグラムを表すため、ユークリッド距離の代替としてヒストグラムベースの距離尺度( \( \chi^{2} \), Earth Mover’s Distance (EMD), ...)がある。

Arandjelovicらは [15] においてRootSIFT記述子への拡張を提案した:

‍SIFT記述子間の類似度を測るために標準的なユークリッド距離の代わりに平方根(Hellinger)カーネルを用いると、パイプラインの全段階で性能が劇的に向上する。

バイナリ記述子(ORB, BRISK, ...)は ハミング距離 を用いてマッチングされる。この距離はバイナリ文字列について異なる要素の数を数えること(XOR演算を適用した後のpopulation count)に等しい:

\[ d_{hamming} \left ( a,b \right ) = \sum_{i=0}^{n-1} \left ( a_i \oplus b_i \right ) \]

マッチをフィルタリングするため、Loweは [179] において誤マッチを除去するための距離比テストの使用を提案した。対象とするキーポイントの最も近い2つのマッチ間の距離比を計算し、この値がしきい値を下回るときに良いマッチとする。実際、この比は曖昧なマッチ(最近傍2つの間の距離比が1に近い)と良好に識別されたマッチとを区別するのに役立つ。下図はSIFTの論文からのもので、最近傍距離比テストに基づいてマッチが正しい確率を示している。

代替または追加のフィルタリングテストには次のものがある:

  • クロスチェックテスト(特徴 \( f_b \) が \( I_b \) 内で \( f_a \) に対する最良のマッチであり、かつ特徴 \( f_a \) が \( I_a \) 内で \( f_b \) に対する最良のマッチであるとき、 \( \left( f_a, f_b \right) \) を良いマッチとする)
  • 幾何学的テスト(幾何モデルに適合しないマッチを除去する。例えばRANSACや平面物体に対するロバストなホモグラフィ)

コード

解説

結果

  • 距離比テストを用いたSURF特徴マッチングの結果を以下に示す: