OpenCVの魚眼カメラの表現を図解する
OpenCVは魚眼カメラの投影モデルは以下のページの「Detailed Description」で説明されている。
OpenCV: Fisheye camera model
個人的には図がないとピンとこないので、図解してみつつ何をやっているのかを確認した。
計算の流れは上記の図の右から左に向かって以下の手順で行う。
- 3Dから2Dへの投影のために、カメラ座標 を同次座標であるとおく。これは歪のない点である。
- からZ軸におろした垂線の長さをとするとである。
- Z軸と(a, b, 1)が成す角度をとするとである。(90度付近の扱いはどうするんだろう)
- と対になる画像平面での高さ(像高)をとして、をつかってをの係数で多項式近似された値を求める。(係数はキャリブレーションのときに求められたものを使う)
- はとの比率をにかけて計算される。は歪が付加された点だ。
ややこしいのはがとは異なり、Z軸と座標点の成す角度ではなく像高であることだ。おそらく気持ち的には像高を円の弧の長さとして表現しているんだと思うけど。
とりあえず図解したことで理解が深まったので良しとする。