2つのKinect深度マップから射影ホモグラフィーを抽出します
-
30-10-2019 - |
質問
2つの連続した3Dポイントクラウド1と2(クラウド全体ではなく、OpenCVのGoodFeatureStomatchを使用してクラウドから選択された100ポイントなど)を考えると、Kinect Depthmapから取得された場合、カメラのホモグラフィーを1から2に計算したいと思います。変革、そしてそれはすでに多くの人々によって行われています: ここ(スライド12), ここに(スライド30) と ここでは、古典的な論文のようです. 。私の問題は、私は有能なプログラマーですが、それらのメソッドの1つをコードに変える数学やトリガースキルを持っていないことです。これは簡単な問題ではないので、次の問題を解決するコードに大きな賞金を提供します。
カメラは、Z方向を見て、不規則な五面体[a、b、c、d、e、f]で起源にあります。
カメラは-90mmを左(x)、 +60mm上(y)、 +50mm前方(z)に移動し、5°下、右10°、-3°回転します。
カメラが元の位置に戻るようにシーン全体を回転させると、頂点の場所を2で決定できます。
これを準備するために使用される3DS最大ファイルはです 最大1, 最大2 と 最大3
以下は、前後の頂点の位置、本質的なものなどです。
Camera2の頂点は100%正確ではなく、意図的なノイズが少しあることに注意してください。
必要に応じてEMGUCVとOPENCVを使用して、VB.NETまたはC#に容易に翻訳できる必要があるコードは、2セットの頂点と内在性を取り、この出力を生成します。
Camera 2 is at -90 X, +60 Y, +50 Z rotated -5 Y, 10 X, -3 Z.
The homography matrix to translate points in A to B is:
a1, a2, a3
b1, b2, b3
c1, c2, c3
ホモグラフィーが均質な座標の場合は3x3または3x4であるかどうかはわかりませんが、頂点を1から2に翻訳することを可能にする必要があります。
また、値A1、A2などを知りません。それはあなたが見つけなければならないものです> ;-)
500バウンティは、私が提供した賞金を「交換」しています この非常によく似た質問, 、この質問を指摘してコメントを追加しました。
edit2:この質問をしている方法が誤解を招くのではないかと思っています。問題は、カメラのジオメトリよりもポイントクラウドフィッティングの方が多いようです(Aを翻訳してBに回転させる方法を知っている場合、カメラの変換とその逆も知っています)。もしそうなら、おそらくKabschのアルゴリズムなどで解決策を取得することができます
正しい解決策はありません