I am Charmie

メモとログ

Camera Calibration Toolbox for MatLab pt.2

続き.今度はステレオカメラのキャリブレーション

前提:

  • ステレオカメラで同じシーンを撮影している.
  • 2台のカメラともcalib_guiで内部・外部パラメータ共にキャリブレーション済み.
  1. mainの実行
    >> stereo_gui
  2. 各カメラの内部・外部パラメータのロード
    >> Load left and right calibration files
  3. ステレオのキャリブレーション
    >> Run stereo calibration
  4. 結果の保存
    >> Save stereo calib results
こっからが大事.
stereo_triangulation.mを使うと,点の3次元座標を計算できる.
各画像の格子点情報は以下の変数として格納されている(n = 画像の数).
x_left_1, x_left_2, x_left_3, ..., x_left_n
x_right_1, x_right_2, x_right_3, ..., x_right_n
サイズが2×格子点の数のdouble型の行列で,以下のようにデータが格納されている.
|x1 x2 x3 ... xm|
| | (m = 格子点の数)
|y1 y2 y3 ... ym|

stereo_triangulationを実行するためには,各カメラの対応点群(e.g., x_left_1, x_right_1)とカメラ間の外部パラメータ(om and T)及び各カメラの内部パラメータが必要.
各カメラ画像中の点の3次元座標をXc_1_left,Xc_1_rightに格納するとすると,以下のようにして求める.
[Xc_1_left,Xc_1_right] = stereo_triangulation(x_left_1, x_right_1, om, T, fc_left, cc_left, kc_left, alpha_c_left, fc_right, cc_right, kc_right, alpha_c_right);
返戻値として返ってくるXc_1_left,Xc_1_rightは以下のようなデータ.
|x1 x2 x3 ... xl|
|y1 y2 y3 ... yl| (l = 対応点の数)
|z1 z2 z3 ... zl|
ちゃんと読みきれてないが,データを見る限りでは,この3次元座標は各カメラ座標系における3次元座標に見える.