2012-06-30 3 views
6

私はいくつかのマーカーが付いた剛体のイメージのセットを持っています。私はこれらのマーカーの1つに原点を持つ座標系を定義しました。この座標系とカメラの原点で定義された座標系の間の回転と平行移動を取得したいと思います。カメラキャリブレーション(OpenCV 2.3) - 歪みパラメータの使い方は?

最初にカメラを較正しなければならないと気づくまで、私はしばらくの間POSIT(thisに従ってください)を試みました。 thisに基づいて、校正体で取得したいくつかの画像を使用して、カメラの組み込み行列と歪みパラメータを取得しました。私はまた、悪い(?)再投影誤差1.276を得ました。

  1. 再投影エラーが高すぎますか?どうすれば改善できますか? (私はより多くの画像を使用し、ちょうど値のわずかな減少を達成した)。
  2. POSITで歪みパラメータを使用できますか?どうやって?

ありがとうございます。


(それが1.3〜0.7〜から変更)再投影誤差の減少を取得する唯一の方法は、XML設定ファイル内の「0」以下のパラメータを設定することであると思わ:

<Calibrate_FixAspectRatio> 0 </Calibrate_FixAspectRatio> 
<Calibrate_AssumeZeroTangentialDistortion> 0 </Calibrate_AssumeZeroTangentialDistortion> 
<Calibrate_FixPrincipalPointAtTheCenter> 0 </Calibrate_FixPrincipalPointAtTheCenter> 

画像を使用してもエラーは変わらず、この新しいエラーが受け入れられるかどうかはまだ分かりません。

私はPOSITの出力(すなわち焦点距離と光学中心)としてキャリブレーションで得られた値を使用しましたが、結果はプリキャリブレーション値を使用していたときの結果と非常に似ていました。私は歪みパラメータを使用しませんでした。なぜなら、私はPOSITでそれらを扱う方法を知らないからです(彼らは結果に差をつけることができますか?)。

私はキャリブレーション後得カメラ行列:

<Camera_Matrix type_id="opencv-matrix"> 
<rows>3</rows> 
<cols>3</cols> 
<dt>d</dt> 
<data> 
2.0613885351075501e+003 0. 2.2865517805186334e+002 0. 
2.2546461307897816e+003 2.5261706201677623e+002 0. 0. 1. 
</data> 
</Camera_Matrix> 

及びIはPOSITでそれを使用する方法:

#define FOCAL_LENGTH 2158.0175 
#define FOCAL_LENGTH_X 2061.389 
#define FOCAL_LENGTH_Y 2254.646 
#define cX 203.655 
#define cY 205.117 

I新しい中心座標とのための1つの間の差を計算し私はPOSITと一緒に作業している画像の中心座標にその差を適用しました。

私は理論的には、モデルとカメラの座標系の間に0度(最初の)と10度(秒)の回転を得なければならない2つの異なる画像でPOSITを使用しています。各画像の回転行列を求めた後、私はカメラ座標系上に単位ベクトルを定義し、それをPOSITによって与えられた2つの回転行列の逆数で多重化することによってモデル座標系上でそれを計算し、モデル内に2つの新しいベクトル座標系。モデル座標系でこれらの2つのベクトルの間の角度を計算すると、出力は10度にならないようになります。

私はどこが間違っているのか考えている人はいますか?

+0

私の校正体は、典型的なチェス盤ではなく、円のグリッドパターンです。 –

答えて

2

画像の解像度はどれですか?主なポイントは、イメージセンターの近くにある必要があります。これはレンズの焦点距離ですか?この較正エラーは、必要とする精度に応じてうまくいく可能性があります。 レンズのゆがみによる誤差を避けるため、undistortPointを使用してPOSITに渡された画像ポイントを歪ませてください。この誤差はレンズの歪みの大きさによって大きくなります。

+0

画像の解像度や焦点距離に関する情報がありません。そのため、私はキャリブレーションを行いました。カメラ行列から、xとyの焦点距離と画像の主点(それは画像中心に近い)が得られます。私のロジックはどこか間違っていますか? –

+0

画像の解像度は画像の幅と高さです。レンズの実際の焦点距離(8mm、16mm、...)を知っておく必要があります。画像解像度および実際の焦点距離は、較正プロセスによって推定されるべき焦点距離値を決定する。 BTW、cXとcYはそれぞれ228.655と252.617であるべきですか? –

+0

ちょうどそれを得ました。私は画像ポイントの間違ったラベリングをしていた、それを以前に見つけることができなかった。助けてくれてありがとうJavier! –

関連する問題