前回はDLTパラメータを求めたので、実際の3次元座標を算出していこう。
2台分のカメラのDLTパラメータは計算できたかな?
はい、計算しました!
これで3次元座標を算出する準備ができたね。
カメラ1とカメラ2の2台分のデジタイズデータがあるはずなので、i番目の3次元座標を算出することができます。
\begin{eqnarray}
\begin{bmatrix}
L1_1 – L9_1U_{i1} & L2_1 – L10_1U_{i1} & L3_1 – L11_1U_{i1} \\
L5_1 – L9_1V_{i1} & L6_1 – L10_1V_{i1} & L7_1 – L11_1V_{i1} \\
L1_2 – L9_2U_{i2} & L2_2 – L10_2U_{i2} & L3_2 – L11_2U_{i2} \\
L5_2 – L9_2V_{i2} & L6_2 – L10_2V_{i2} & L7_2 – L11_2V_{i2}
\end{bmatrix}
\begin{bmatrix}
X_i \\ Y_i \\ Z_i
\end{bmatrix}
= \begin{bmatrix}
U_1 – L4_1 \\ V_1 – L8_1 \\ U_2 – L4_2 \\ V_2 – L8_2
\end{bmatrix} \tag{1}
\end{eqnarray}
$ U_{i1} $,$ V_{i1} $はそれぞれカメラ1のi番目のデジタイズデータを意味しており、$ X_i , Y_i , Z_i $はそれぞれ、i番目の3次元座標値を意味しています。
このままでは計算が行いにくいので、前々回同様に行列を整理してみよう。
左辺の$ 4行3列 $の行列を$ A $、$ 3行1列 $の行列を$ X $、
右辺の$ 4行1列 $の行列を$ B $と置くと、下記のように示すことができます。
\begin{eqnarray}
AX = B
\tag{2}
\end{eqnarray}
まずは$ A $の転置行列$ A^{ \mathrm{ T } } $を式(2)の両辺の左側からかけてやります。
\begin{eqnarray}
\begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}X =A^{ \mathrm{ T } }B
\tag{3}
\end{eqnarray}
次に$ A^{ \mathrm{ T } }A $の逆行列$\begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}^{ \mathrm{ -1 } }$を式(3)の両辺の左側からかけてやります。
\begin{eqnarray}
\begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}^{ \mathrm{ -1 } } \begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}X =\begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}^{ \mathrm{ -1 } }A^{ \mathrm{ T } }B
\tag{4}
\end{eqnarray}
行列式の性質より、$ \begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}^{ \mathrm{ -1 } } \begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix} =1$であるので、式(4)は下記のようになります。
\begin{eqnarray}
X =\begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}^{ \mathrm{ -1 } }A^{ \mathrm{ T } }B
\tag{5}
\end{eqnarray}
できました!
イイね。
では、まずはキャリブレーションで使用したカメラの映像から、3次元座標を算出してみよう。
標準誤差を算出するための手順でもあるよ。
カメラ1のデジタイズデータ カメラ2のデジタイズデータ
今回は1番目の3次元座標を算出してみよう。
カメラ1とカメラ2のそれぞれのU1,V1の値はいくつかな?
カメラ1は(U1,V1)=(751.5,438.5)で、
カメラ2は(U1,V1)=(79.125,448.5)ですね。
そうだね。
では、これらの値を使ってエクセルで実際に計算をしていこう。
まずは行列$ A $の転置行列$ A^{ \mathrm{ T } } $を求めます。
行列$ A $と行列$ A^{ \mathrm{ T } } $の積を求めます。
$ A^{ \mathrm{ T } }A $の逆行列$\begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}^{ \mathrm{ -1 } }$を求めます。
次に行列$ A^{ \mathrm{ T } } $と行列$ B $の積を求めます。
最後に行列$\begin{bmatrix} A^{ \mathrm{ T } }A \end{bmatrix}^{ \mathrm{ -1 } }$と行列$ A^{ \mathrm{ T } }B $の積を求めて、3次元座標行列$ X $を算出することができます。
ここで、実際にキャリブレーションを行った時の1ポイント目の実空間座標が(x,y,z)=(0,0,0)だったことを思い出そう。
算出した3次元座標値もだいたい同じくらいの値になっていますね。
この実空間座標との誤差がどのくらいあるかを分析する手法を「残差分析」と言います。次回はこの残差を求めていきましょう。
コメント