ぱたへね

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

カメラの正規化

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

カメラモデル

カメラモデルを考える時の問題点

  • 光学軸がどこにあるか不明
  • 画像の両座標軸のスケールが異なる可能性がある
  • 実際の画像の両座標軸は必ずしも直角をなさない

座標系(c,x,y)とデジタル画像座標系(o,u,v)を考える。

  • x軸をu軸に平行に設定する。
  • u軸とv軸のなす角度をθとする。
  • 座標系(c,x,y)の単位長をku,kvとする。
  • 座標系(o,u,v)における座標系(c,x,y)の原点を(u0,v0)とする。

座標系(o,u,v)の座標をmp = [u,v]^T, 座標系(c,x,y)の座標をms = [x,y]^Tとしたとき、以下の関係がなりたつ。
 m_{p}=Hm_{s}
ここで
 H=\begin{pmatrix} k_{u} & -k_{u}\cot \theta  & u_{0} \\ 0 & \frac{k_{v}}{\sin \theta } & v_{0} \\ 0 & 0 & 1 \end{pmatrix}
最終的に
 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}

正規化カメラの概念

  • f = 1 のカメラを正規化カメラと呼ぶ
  • 正規化カメラの画像を正規化画像と呼ぶ
  • 正規化画像の座標を正規化画像座標と呼ぶ
  • fkuとfkvをαu、αvで置き換える。

こうするとPnewは、投射行列Pnを使ってこのように表現できる。
 P_{new}=AP_{N}
 p_{N}=\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix}
 A=\begin{pmatrix} \alpha _{u} & -\alpha _{u}\cot \theta  & u_{0} \\ 0 & \frac{\alpha _{v}}{\sin \theta } & v_{0} \\ 0 & 0 & 1 \end{pmatrix}

行列Aは、カメラの内部の変数によって構成されており、カメラ内部行列(camera intrinsic matrix)と呼ぶ。
ku, kuv, θ, u0, v0をカメラ内部変数と呼ぶ。このように、カメラ内部行列を求めることをキャリブレーションと呼ぶ。

画像のデジタル画像座標が与えられたとき、正規化画像座標は以下の式で求められる。
 x=\begin{pmatrix} x \\ y \\ 1 \end{pmatrix} =A^{-1}\begin{pmatrix} u \\ v \\ 1 \end{pmatrix} =A^{-1}m