2

opencv を使用して、ステレオでカメラのペアを調整しました。これにより、2 つのカメラ間で回転と移動が行われます。

最初のカメラ (左) を使用して画像を撮影し、solvePnp を使用して、パーツに対する左カメラの姿勢 (rvec と tvec) を計算します。

私の質問は、左カメラのポーズを使用して右カメラのポーズを計算する方法と、ステレオ キャリブレーションから指定された R & T 値を計算する方法です。

ありがとう。

4

1 に答える 1

3

質問が少しわかりにくいのですが、その部分に関して適切なカメラのポーズを見つけていただきたいと思います。この場合、次の手順が最も簡単な方法です。

  • パーツに対する左カメラのポーズをQ_plとする。これは、最初の 3 つの行と列が左カメラ (あなたの rvec) に関するパーツの回転行列 R_pl である 4x4 行列で表され、下の行は [0, 0, 0, 1] で、上の 3 行は4 列は、カメラからパーツ (tvec)の平行移動ベクトル t_pl のコンポーネントです。明確にするために、(カメラから見た) パーツの x、y、z 軸単位ベクトルのカメラ フレーム内のコンポーネントを縦方向に記述して Q_pl を記述し、その後にカメラからパーツへのベクトルを続けます。、4 行目に [0, 0, 0, 1] を書き込みます。
  • 同様に、Q_lr を右カメラに対する左カメラのポーズ (キャリブレーションから取得) とします。左のカメラ (右のカメラから見て) の x、y、z 単位ベクトルのコンポーネントを列ベクトルとして配置するこの 4x4 マトリックスを記述し、その後に右のカメラから左のカメラの平行移動ベクトルを記述し、次に次のように記述します。 [0, 0, 0 1] は 4 行目です。
  • 右のカメラに対するパーツのポーズは、単純に 2 つの行列の積です。

    Q_pr = Q_pl * Q_lr

因子の順序が重要であることに注意してください。この式は、右のカメラからパーツに移動するには、最初に右のカメラから左のカメラに移動し、次にそこからパーツに移動できることを簡単に示しています。繰り返しますが、この変換の回転部分は Q_pr の上部 3 行 3 列にあり、右カメラからその部分への平行移動ベクトルは 4 列目にあります。

キャリブレーション手順により、Q_lr ではなく Q_rl が得られた可能性があることに注意してください。この場合は、反転するだけです。逆は非常に簡単に計算できます。

R_lr = transpose(R_rl)
t_lr = -(R_lr * t_rl)

同様に、Q_pl ではなく、solvePnP が生成したものである場合は、Q_lp を反転します。

于 2013-10-22T01:17:19.723 に答える