1

キャリブレーションされていない画像、つまり単一の画像の絶対カメラ位置を推定しようとしています。3D モデル (オブジェクト座標) と 2D イメージ (UV 座標) の 2 セットのキー ポイントがあります。キーポイントが正確であると仮定しましょう。次に、次の手順を実行します。

  • 標準の直接線形変換 (DLT) を適用して、射影行列 P を推定します。3 次元の「世界」から 2 次元の画像変換 x = P*X;
  • OpenCV DecomposeProjectionMatrix() 関数は、射影行列を外因性行列と内因性行列に分解するのに役立ちます: P = K {R|t};
  • 回転行列と平行移動行列の最初の推測を改善するために、SolvePnP (「最良の」ソリューションを提供することを理解した反復法を使用) 関数をキー ポイント セットとカメラ パラメータに適用します。

いくつかのケースで組み合わせたアルゴリズムを実行しているときに、ほとんどのケースで SolvePnP がグラウンド トゥルースに非常に近い結果を返すことに気付きました。休符の結果は不正確で、回転と移動は現実とはかけ離れています。

Q: 現在のアルゴリズムが失敗するこれらのケースを改善することは可能ですか? OpenCV CameraCalibrate() に基づいて組み込みパラメーターを最適化するか、他の SolvePnP アルゴリズムを適用しますか?

4

1 に答える 1

1

短い答え - いいえ。

長い回答: DLT の結果は統計的に最適ではありません。さらに、制御点がほぼ平面上にある場合、DLT アルゴリズムの結果は不安定になります。詳しくはこちらのスライドをご覧ください。その場合、組み込み関数と外部関数は不正確であるか、完全に間違っている可能性さえあります。

PnP はキャリブレーションされたカメラを想定しており、カメラの組み込み関数が不正確に計算された場合、結果も不正確になります。

CameraCalibrate(),既知の 2D-3D 座標を持つ異なるカメラ位置の一連の画像がある場合に役立ちます。

于 2021-07-21T13:03:46.227 に答える