8

2 組のポイントがあり、それらの間で最適な変換を見つけたいと考えています。OpenCV には、次の機能があります。

Mat H = Calib3d.findHomography(src_points, dest_points);

RANSAC を使用して、3x3 ホモグラフィ行列を返します。私の問題は、並進と回転(およびおそらくスケール)だけが必要であり、アフィンと遠近法は必要ないということです。

問題は、私のポイントは 2D だけです。

(1) ホモグラフィのようなものを計算するが、自由度が少ない関数はありますか?

(2) 無い場合、3x3 ホモグラフィ行列から平行移動と回転のみを行う 3x3 行列を抽出することは可能でしょうか?

助けてくれてありがとう!

伊佐

4

2 に答える 2

8

OpenCVの推定RigidTransform関数はまさにあなたが必要としているものです.Translation、Rotation、Scaleを返します(fullAffineフラグにはfalse値を使用してください)。そして、それは RANSAC を使用します (それを確認するには、ソース コードを参照してください)。

于 2015-01-09T00:16:25.877 に答える
3

ホモグラフィは 2D 点用で、3 次元は 3 次元同次座標で点をキャストし、遠近効果を実行するためのものです。ポイントはいつでもキャストバックできます。

同次 [x, y, w] デカルト [x/w, y/w]

ただし、4DOF (類似度) の代わりに 6DOF を計算するため、結果は 4DOF で期待するものとはかなり異なります。より柔軟な変換は、気になる変換の歪みを犠牲にして、RANSAC により多くのポイントを適合させます。結論 - H を分解しようとしないでください。代わりに、類似度またはアイソメトリー (剛体またはユークリッドとも呼ばれます) を適合させます。それらがライブラリに存在しない理由 - ポイント座標の正しい最小二乗メトリックを使用しても閉じた形式で表現されるため、非線形最適化は必要ありません。言い換えれば、それらは非常に単純です。

回転と平行移動しかない場合は、それらを見つけるための簡単な関数を作成しました (ただし、RANSAC はありません)。おそらくri​​gidTransformに似ていますが、より理解しやすいです(うまくいけば) https://stackoverflow.com/a/18091472/457687

スケールを使用すると、まだ閉じた形式のソリューションがありますが、変換とスケーリングの式がわずかに異なります。類似性パラメータの学習、p.を参照してください。25

于 2014-03-20T06:13:34.703 に答える