前回はDLTパラメータを求める計算式を解説したね。
数式ばかりになってしまっているので、今回はエクセルを使って具体的に数値計算を行っていこう。
はい、頑張ります!
今回は既に実験と測定を済ませたデータを使います。
3次元DLT法で動作分析を行う際には、必ずキャリブレーション(校正)を行う必要があったよね。
キャリブレーションポールを使って、実験範囲をキャリブレーションするんですよね。
その通り。今回は下の図のように、4つの球体がついたキャリブレーションポールを使ったんだよ。
地面との接点も一つのポイントとして、1箇所につき合計5点のキャリブレーションができるね。
水準器を取り付けて、地面と垂直になるように立てるんですね。
このキャリブレーションポールを使って、今回は24箇所でキャリブレーションを行っています。
キャリブレーションをカメラで撮影した後は、カメラの位置は固定して動かさないように注意しましょう。
結構横長の範囲ですね。
5点のコントロールポイントを24箇所で計測しているので、今回は120ポイントを実空間座標として、DLTパラメータの計算に利用することになるね。
前回の$ X_n, Y_n, Z_n $の部分ですね。
その通り!
この時点で、実空間座標を表にまとめておくと、後で整理がしやすいので、表を作っておこう。
実空間座標
出来ました!
イイね!
コントロールポイントをデジタイズしたデータも準備して、実際の計算を行っていこう!
キャリブレーションデジタイズ(行列$ U $)
このデジタイズデータが前回の$ 2n行1列 $の行列$ U $だね。
後は行列$ X $を作ってやればいいんですね。
X,Y,Z,U,Vを使って・・・
行列$ X $
オーケー!
これで行列が作成できたので、行列式をエクセルで解いて行こう!
\begin{eqnarray}
L =\begin{bmatrix} X^{ \mathrm{ T } }X \end{bmatrix}^{ \mathrm{ -1 } }X^{ \mathrm{ T } }U
\tag{5}
\end{eqnarray}
DLTパラメータの行列の計算式は上記の式だったね。
まずは、$ X $の転置行列$ X^{ \mathrm{ T } } $を求めます。
エクセルで転置行列を作成するには、「TRANSPOSE」関数を使用します。
エクセルで行列式を計算する時は、関数を入力後「Ctrl+Shift」キーを押しながらEnterキーを押さないといけないことに注意しよう。
今回の$ X^{ \mathrm{ T } } $は11行240列の行列になったね。
次に行列$ X^{ \mathrm{ T } }X $を求めてみましょう。
行列のかけ算は「MMULT」関数を使用します。
これで11行11列の正方行列$ X^{ \mathrm{ T } }X $ができたね。
では、次にこの逆行列$\begin{bmatrix} X^{ \mathrm{ T } }X \end{bmatrix}^{ \mathrm{ -1 } }$を計算してみよう。
逆行列を求める関数は「MINVERSE」を使用します。
さて、もう一息。
次は行列$ X^{ \mathrm{ T } }U $の計算だね。
行列のかけ算なので「MMULT」関数を使用します。
最後にDLTパラメータの計算だね。
行列$ \begin{bmatrix} X^{ \mathrm{ T } }X \end{bmatrix}^{ \mathrm{ -1 } }$と行列$ X^{ \mathrm{ T } }U $のかけ算を行います。
関数は「MMULT」を使用します。
やったー!できたー!!
同じようにして、カメラ2についてもDLTパラメータを算出してみよう!
最終的に11行1列のDLTパラメータを2つ準備することで、3次元DLT法による3次元座標を求める事ができます。
行列の計算は複雑そうに見えるけど、実際はそこまで難しくはないよ。
とにかく実践あるのみ!
コメント