ORBの特徴検出器と抽出器を使用して、特徴ベースのアライメントアルゴリズムを実装したい。
これまでのところ、OpenCVから [〜#〜] orb [〜#〜] クラスを使用して機能を抽出しました_ORB orb;
_orb(gray_image,Mat(),features.keypoints,features.descriptors);
そしてopenCVのknnMatch関数を使用してそれらを照合しましたmatcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2);
その後、findHomography関数を使用してホモグラフィを見つけようとしていますが、この関数は画像の特徴間で少なくとも4つの一致を必要とします。テストした画像のうち、4枚未満でした。
誰かがこの機能を使用しましたか?それ、またはOpenCVのORBクラス(ORBコンストラクタパラメータの意味)に関するドキュメントはありますか?
追伸これが私の最初の質問です。投稿できるリンクは2つまでです。 opencvのドキュメントについては this を使用してください。
更新:OpenCVドキュメントのisです: http://opencv.itseez.com/modules/features2d/doc/ feature_detection_and_description.html#orb
アルゴリズムの詳細な説明はここにあります: http://www.willowgarage.com/sites/default/files/orb_final.pdf
OpenCVのドキュメントには記載されていませんが、実際にはOpenCVには次のような特徴があります。
2種類の記述子:
そして対応するマッチャー:
FlannBased
BruteForce<L2<float> >
BruteForce<SL2<float> >
//2.3.1以降BruteForce<L1<float> >
BruteForce<Hamming>
BruteForce<HammingLUT>
FlannBased
LSHインデックス付き//2.4.0以降したがって、たとえばORB記述子にBruteForce<Hamming>
マッチャーを使用するようにコードを変更する必要があります。 L2またはL1距離を使用してuchar記述子を照合することは可能ですが、結果は正しくなく、findHomographyは満足のいく結果を返しません。