ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

投射行列

写真から作る3次元CGから。

投射行列

 x=f\frac{X}{Z}
 y=f\frac{Y}{Z}
この式は、同次座標を用いて以下の行列で表せる。
 \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} \simeq \begin{pmatrix} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix} \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix}

≃はスケールを除いて等しいことを示す。

この時の
 P=\begin{pmatrix} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix}
のPを中心投影行列と呼ぶ。
三次元空間上の座標M=(X Y Z 1)^Tと、仮想画像平面上の座標m=(x y 1)^Tの関係は、m = PM で表現できる。

世界座標系とカメラ座標系

世界座標系(world coordnate system)に対して投影行列を適用するには、まず世界座標系をカメラ座標系に変換し、その後に投影行列を適用する。

カメラ座標系を世界座標系に対応させるには、カメラ座標系を回転させ、次に平行移動を行う。
回転は3x3の行列R、平行移動は3x1の行列tで表現できる。Rは以下の性質をもつ。

 RR^{T}=R^{T}R=I
 $\det (R) = 1
これは、回転の逆行列は逆回転の意味を持っており、回転後に逆回転を行うと元の位置に戻ることを示す。

Rとtを使って、カメラ座標系Mcと、ワールド座標系Mwの関係は以下の式で表現できる。
 M_{C}=RM_{w}+t

ここで
 D=\begin{pmatrix} R & t \\ 0_{3}^{T} & 1 \end{pmatrix}
であるDを使うと、2つの座標系は以下の式で表現できる。
 Mc=DMw
Dは3次元のユークリッド変換を示す。

Dを使うと、新しい投射行列は以下の式で表現できる。
 P_{new}=HP_{old}=\begin{pmatrix} fk_{u} & -fk_{u}\cot \theta  & u_{0} & 0 \\ 0 & \frac{fk_{v}}{\sin \theta } & v_{0} & 0 \\ 0 & 0 & 1 & 0\end{pmatrix}
fkuとfkvが積の形で残るため、焦点距離の変化と画素サイズの変化が区別できない事を示している。