1

このツールボックスを使用て、カメラのキャリブレーションを行っていました。

ただし、ツールボックスの出力結果は行列形式であり、初心者である私は数学的なことを本当に理解していません。

マトリックスは次の形式です。

代替テキスト

ここで、R は回転行列、T は並進ベクトルです。

そして、これらはツールボックスから得た結果です。ピクセル単位で値を出力します。

-0.980755   -0.136184  -0.139905  217.653207
0.148552    -0.055504  -0.987346  995.948880
0.126695    -0.989128  0.074666  371.963957
0.000000    0.000000  0.000000  1.000000

このデータを使用して、カメラの回転量とキャリブレーション オブジェクトからの距離を知ることができますか?

4

2 に答える 2

3

距離部分は簡単です。原点からの変換は、右端の列の最初の3つの数字で示されます。これは、それぞれx、y、z方向の平行移動を表します。この例では、カメラの位置p =(p x、p y、p z)=(217.653207、995.948880、371.963957)です。カメラの位置とキャリブレーションオブジェクトの位置の間のユークリッド距離をとることができます(c x、c y、c z)。つまり、sqrt((p x -c x2 +(p y -c y2 +(p z -c z2

より難しい部分は、マトリックスの左上の3x3要素でキャプチャされる回転に関するものです。彼らがどのようにしてこれに到達したのかを正確に知らなければ、あなたはやや運が悪いです。つまり、必要に応じて、それをオイラー角に戻すのは簡単ではありません。ただし、これらの要素をクォータニオン回転に変換すると、カメラをその方向に回転させるための一意の単位ベクトルと角度が得られます。計算の詳細はここに提供されています。クォータニオン回転を取得したら、それをベクトルn =(0、0、1)、up =(0、1、0)、およびright =(1、0、0)に簡単に適用して、法線(方向)を取得できます。カメラが向けられている)、上と右のベクトル。右のベクトルは、カメラを現在の位置から左または右に回転させることに関心がある場合にのみ役立ちます。

于 2010-11-22T17:58:22.323 に答える
1

コードは「標準」形式を使用していると思います。詳細については、opencv ライブラリのドキュメントまたはその書籍を参照してください。

于 2010-11-23T04:16:38.787 に答える