問題タブ [keypoint]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 2 つのイメージからの OpenCV 変換
2 つの画像を照合し、回転とスケールを出力する MATLAB の例があります: https://de.mathworks.com/help/vision/examples/find-image-rotation-and-scale-using-automated-feature-matching. html?requestedDomain=www.mathworks.com
私の目標は、C++ を使用してこの例を再現することです。私はキーポイント検出 (Harris) の同じ方法を使用しており、キーポイントは Matlab が見つけたものとほとんど同じようです。ここまでは順調ですね。
BRISK は、キーポイントから特徴を抽出するために使用されます。
これらの記述子は、flannbasedmatcher を使用して照合されます。
問題は、私の一致の約 80% が間違っていて使用できないことです。同一の画像セットに対して、Matlab は 20% 程度しか間違っていない 2 つの一致のみを返します。距離の値に基づいて C++ で Matches をソートしようとしましたが、成功しませんでした。値の範囲は 300 から 700 で、最も短い距離の一致でさえ、ほとんど完全に正しくありません。
現在、20% の適切な一致でオフセットを計算するのに十分ですが、間違った一致をチェックするために多くの処理能力が浪費されています。正しい一致をソートするためのより良い方法は何ですか、または私が間違っていることは明らかですか?
編集:
Harris/BRISK から AKAZE に切り替えました。これは、はるかに優れた機能と、距離の値で簡単に並べ替えることができる一致を提供するようです。唯一の欠点は、計算時間が非常に長くなることです。2 つの 1000px 幅の画像を使用すると、AKAZE は (PC 上で) キーポイントを見つけるのに 30 分かかります。許容範囲の 3 ~ 5 秒になるように画像を縮小することで、これを減らしました。
point-cloud-library - PCL: ISS キーポイントを使用した PFH
現在、ISS キーポイントの PFH 記述子を計算しようとしています。次の手順を実行します。
(1) pcl::ISSKeypoint3D でキーポイントを検出 (2) pcl::NormalEstimation で (1) から新しいキーポイント クラウドの法線を推定 (3) pcl::PFHEstimation で (2) からキーポイントと法線の PFH を推定
私の理解では、PFH 推定はk 個の近傍を考慮に入れるため、O(n*k^2) の複雑さを持ちます。ここで、nはキーポイントの数を示します。ただし、(3) では、キーポイント自体で構成されるクラウドのみを推定器に渡します。
だから私の質問は次のとおりです:各ISSキーポイントのkネイバーを取得するにはどうすればよいですか?