から3D COORDSを回復:C++行列乗算 - Iは問題下記た奥行き画像
Iは、異なる方向から同じ物体の深度画像のセットを持っていると私は、カメラキャリブレーションのためのデータを有しています。今度は、指定された深度値を持つピクセル座標をワールドポイントに変換したいので、それらのポイントをメッシュとして使用できます。
は私はピクセル座標から現実の世界でのポイント Pwのを取得するために知って Pxの次式が成り立つ:Pwのを= K * [Rトン] * PX
つつ固有行列K = [0 PP F。 0 f pp; 0381]と焦点距離であるppとを用いて、3x3回転行列R *および3x1変換行列tからなる外因性マトリクスと主点とを生成する。
私の質問は次のようになりました: どのように順番に行列を掛けますか?私は、最初外因 = [R * トン]、次いでK * 外因を意味し、マトリックスは右から左に乗算されなければならないことを知っています。または、最初に2次元座標(深さをZとします)にの外因性の -matrixを掛け、Kに結果を掛けます。
また、いくつかのstd関数はありますか?行列行列ベクトル乗算、またはstd :: vector/arrayで実装する必要がありますか?
あなたの答えをありがとう。 あなたは逆の方程式の次元を教えてください。 R *とK^-1は(3x3)行列であり、tは(3x1)であると考えます。 zはちょうど(0、0、z)のベクトルか、それともちょうどzの値ですか? また、この式をどの順序で解くことができますか?最初に括弧内の項はマイナスt ..?私はちょっと遅い思想家です。 – DrSkyer
はい、 'R *'と 'K^-1'は3 x 3の行列で、' t'はベクトルです(3 x 1)。 'z'はスカラーなので、z/depth値自体です。 2番目の方程式を適用するには、カッコ内の項を評価し、その結果に 'R * 'を掛けます。 – user3146587