ほぼ OpenCV: Camera Calibration and 3D Reconstruction をまとめ直しただけのもの

すなわち

  • はピクセル単位
  • はピクセルのスケール

である。

ここでゆがみがある場合、 から への変換の間に を挟むことになる。すなわち

となる。
はゆがんだ座標系である。例えば

である。ここで は前と同じく

である。

OpenCV へのカメラ歪みパラメータの渡し方

画像座標系とカメラ座標系の相互変換

例えば、画像のピクセル位置 から三次元方向を求める (unproject) 際は、

  • で変換し
  • 逆問題を解いて から へ変換する
    必要がある。これには、
  • undistortPoints: (u,v) から (x’,y’) を求める
  • undistortImagePoints: (u,v) から d=0 なカメラにおける (u,v) を求める?
    などが役に立つ。

逆に、三次元方向から画像のピクセル位置を求める (project) 際は、

  • で変換し
  • 式に代入して から へ変換する (cv2.projectPointsrvectvec をゼロとし K と d だけ与える)
    とよい。

キャリブレーション

内部キャリブレーションがうまくできたかどうかについては
https://kamino.hatenablog.com/entry/opencv_calibrate_camera#sec5
このチェックリストが参考になる

FoV

歪みがないカメラについて、縦の FoV(Angular FoV)は

で与えられる。 は画像の高さ(ピクセル)。

横も同様。