- キャリブレーションテンプレートを用いた座標列の取得とその利用
- キャリブレーションテンプレート
- 当ライブラリでは以下のような形状のキャリブレーションテンプレートを用います。
キャリブレーションテンプレートの例
黒枠によって周囲の環境から切り離した白い正方形の中に等間隔で円を配置し、座標系の方向を特定するため円を一つ抜いた形状です。 各々の円の中心を特徴点として基準モデル座標列に対応します。
円モデルのキャリブレーションテンプレートのサイズは以下のようにします。
円モデルのキャリブレーションテンプレート
図の数値は長さの比を表現しており、キャリブレーションテンプレートの実物を製作する際には適切な長さにして作成します。 キャリブレーションテンプレートの原点は白い正方形領域の中心です。正方形領域の中心で差し支えがある場合はオフセットを指定して別の場所に設定することができます。
原点の移動
- キャリブレーションテンプレートの作成
- 平滑な板にパターンを描画して用います。精密に平滑であることと、パターンの描画精度が高いことがよりよいカメラキャリブレーションの為に重要です。 入手しやすく平滑な面の例としてはガラス板があります。
- キャリブレーションテンプレートを用いたカメラキャリブレーションの流れ
- カメラ内部パラメータの算出
- カメラ外部パラメータの算出
- カメラ内部パラメータ算出のためのキャリブレーションテンプレートの撮像について
- 簡易的には、5枚を視野の中央付近で正面、上下、左右にキャリブレーションテンプレートを傾けて撮像して下さい。
推奨するキャリブレーションテンプレートの動かし方
キャリブレーションテンプレートが固定されていたり巨大だったりして姿勢を動かしにくい場合、カメラ側を動かして撮像します。 カメラ内部パラメータの算出のためにはレンズとカメラの組み合わせだけが固定されていれば良いため、撮像するカメラの位置は自由にできます。
カメラ側を動かす例
最初の5枚の後は、視野の周辺部分で中央同様に姿勢を動かしたり撮像済みの姿勢でも特徴点の間隔の半分だけ動かしたり角度を変えたりと、特徴点が占めなかった場所を埋めるように動かして行きます。
視野周辺データを追加していく
より良いカメラ内部パラメータの算出のためには
- 撮像枚数を増やします。増えれば増えるほどカメラ内部パラメータの算出時間は多くなりますが、より良いカメラ内部パラメータを得られる可能性があります。場合により10から30枚程度を利用するのがよいでしょう。
- 各画像に写すキャリブレーションテンプレートが相互に異なった位置・姿勢になるよう調整します。ほぼ同一な画像を複数追加しても計算時間が増大するのみで算出結果は改善されません。
- 視野を埋めるようにキャリブレーションテンプレートを動かします。画像の視野全域にわたって特徴点が検出された方が良いパラメータになります。視野の一部分のみでキャリブレーションテンプレートを撮像していると、キャリブレーションテンプレートを写さなかった部分の視野では実態に合わないカメラ内部パラメータを算出してしまうことがあります。
- カメラ外部パラメータ算出のためのキャリブレーションテンプレートの撮像について
- カメラ外部パラメータ算出のためにキャリブレーションテンプレートを撮像することは、視野の中でワールド座標系原点を設定する意味があります。 そのため、カメラの設置位置をしっかりと決めて動かさないようにし、撮像対象に対して視野を固定します。 視野の中でワールド座標系の原点にしたい位置へ fnFIE_calib_open2() の実行時に設定したキャリブレーションテンプレート上の原点位置を合わせるようにキャリブレーションテンプレートを設置し、 ワールド座標系のx軸y軸にしたい方向へキャリブレーションテンプレートの辺が向くように、また円の一つ抜けている角がx軸とy軸の正となる象限になるようにします。
外部パラメータ算出のためのテンプレート撮像
- その他の注意点
- 同じキャリブレーションテンプレート画像を何枚追加してもカメラ内部パラメータは良くなりません。
- キャリブレーションテンプレートの撮像結果がボケていると特徴点の検出に差し支えます。キャリブレーションテンプレートは3次元的に動かすため、テンプレートの近い側と遠い側ではカメラからの距離が大きく違う場合がありますが、そのような場合にボケが発生しないよう、レンズを適切に調整してください。
- キャリブレーションテンプレートの白い部分の輝度がなるべく飽和しないようにしてください。特徴点の検出に悪影響が出る場合があります。
- 画像が放射歪みを起こしている前提で歪みモデルの当てはめを行うため、テレセントリックレンズや焦点距離が長くて歪みの少ないレンズなどでは光軸中心の推定がうまくいかず、良いカメラ内部パラメータを得ることができません。
- 画像が放射歪みを起こしている前提で歪みモデルの当てはめを行うため、ラインセンサでは画像の送り方向でモデルが適合しません。良いカメラ内部パラメータを得られません。
- キャリブレーションテンプレートの利用例
- 例:キャリブレーションテンプレートを用いたカメラの歪み補正
- キャリブレーションテンプレートを用意します。
- 様々な方向からキャリブレーションテンプレートを撮像します。
- fnFIE_calib_open2() でキャリブレーションテンプレートの形状とサイズ、原点位置を与え、キャリブレーションデータオブジェクトを作成します。 上図の場合の条件は type = F_CALIB_MODEL_CIRCLE, n = 7, unit = 7.5mmでした。また今回 offsetはゼロとします。
- fnFIE_calib_add_data2() に撮像した画像を与え、キャリブレーションデータオブジェクトに座標点列を追加します。上図は5枚なので5回実行します。
- fnFIE_calib_calc_intrinsic_parameters() でカメラ内部パラメータを算出します。
- 歪み補正の仕方を選び、座標変換マップを作成します。
- 撮像し、 fnFIE_geotrans_warpping() を実行して歪み補正を行います。
歪み補正画像1
この段階では視野中にキャリブレーションテンプレートは必要ありません。処理例のわかりやすさのためにキャリブレーションテンプレートを撮像対象にしています。 中央付近のみにキャリブレーションテンプレートを置いてカメラ内部パラメータを算出したため、画像の周辺ではまだ歪みが大きく残っています。 このような場合、歪みの残っているところでキャリブレーションテンプレートを撮像します。
視野周辺データを追加していく
新しい4枚の画像を新たに追加、カメラ内部パラメータを再計算し、歪み補正を行うと次のようになります。画像の周辺まで放射歪みが改善されています。
歪み補正画像2
- 例:キャリブレーションテンプレートを用いた1shot キャリブレーションによるカメラの歪み補正
-
- 例:キャリブレーションテンプレートを用いた正対変換
- あらかじめカメラ内部パラメータを算出しておきます。
- データを準備します。
- 正対変換を行いたい領域を決めます。
対象にする領域
- 対象にする領域と同一平面上にキャリブレーションテンプレートを設置することで、ワールド座標系の原点とx軸y軸の方向を決めます。
- キャリブレーションテンプレートの原点から対象の領域へのオフセットを実際に計測しておきます。
- キャリブレーションテンプレートを撮像します。
設置したキャリブレーションテンプレート
- カメラ混合パラメータを算出します。
- 画像の正対変換を行います。
- 例:キャリブレーションテンプレートを用いた距離の測定
-
Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:48 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2