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

前のチュートリアル: 平面物体の検出
次のチュートリアル: AKAZE と ORB による平面トラッキング

原著者Fedor Morozov
互換性OpenCV >= 3.0

はじめに

このチュートリアルでは、AKAZE [12] 局所特徴を用いて2枚の画像上のキーポイントを検出しマッチングする方法を学ぶ。与えられたホモグラフィ行列を持つ画像のペアに対してキーポイントを検出し、それらをマッチングして、インライア (すなわち与えられたホモグラフィに適合するマッチ) の数を数える。

この例の拡張版はこちらにある: https://github.com/pablofdezalc/test_kaze_akaze_opencv

データ

Oxford データセットGraffiti シーケンスの画像1と3を使用する。

ホモグラフィは 3x3 の行列で与えられる:

7.6285898e-01 -2.9922929e-01 2.2567123e+02
3.3443473e-01 1.0143901e+00 -7.6999973e+01
3.4663091e-04 -1.4364524e-05 1.0000000e+00

画像 (graf1.png, graf3.png) とホモグラフィ (H1to3p.xml) は opencv/samples/data/ にある。

ソースコード

解説

  • 画像とホモグラフィの読み込み

ここではグレースケール画像を読み込んでいる。ホモグラフィは FileStorage で作成した xml に保存されている。

  • AKAZE を用いてキーポイントを検出し記述子を計算する

AKAZE を作成し、AKAZE のキーポイントと記述子を検出・計算する。mask 引数は不要なので、noArray() を使用する。

  • 総当たりマッチャーを用いて 2-nn マッチを見つける

AKAZE はデフォルトでバイナリ記述子を使用するため、ハミング距離を使用する。

  • 2-nn マッチと比率基準を用いて正しいキーポイントマッチを見つける

最も近いマッチの距離が2番目に近いマッチの距離より十分に小さければ、そのマッチは正しい (マッチが曖昧でない)。

  • マッチがホモグラフィモデルに適合するか確認する

1つ目のキーポイントの投影から2つ目のキーポイントまでの距離がしきい値より小さければ、ホモグラフィモデルに適合する。

描画関数で必要となるため、インライア用に新しいマッチの集合を作成する。

  • 結果の出力

ここでは結果の画像を保存し、いくつかの統計情報を出力する。

結果

見つかったマッチ

使用している OpenCV のバージョンによっては、次と整合する結果が得られるはずである:

Keypoints 1: 2943
Keypoints 2: 3511
Matches: 447
Inliers: 308
Inlier Ratio: 0.689038